Никакого ДрагЭндДропа я нигде не реализовывал. А посему не пойму в чем дело... Это вообще консольное приложение...
Код выглядит так (ошибка вылезает в предпоследней строке кода):
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Documents;
using System.Data.OleDb;
using System.Data;
using Stimulsoft.Report;
using System.Windows.Forms;
namespace ConsoleProgramm
{
class Program
{
static void Main(string[] args)
{
//Данные для формирования отчета получаю из файла аксесс
OleDbConnectionStringBuilder cnnBild = new OleDbConnectionStringBuilder();
cnnBild.DataSource = @"\\Server-buh\bushman\mdb-files\Builder Premium_be.mdb";
cnnBild.Provider = "Microsoft.Jet.OLEDB.4.0";
cnnBild.PersistSecurityInfo = false;
#region формирую ДатаСет для сметы...
//смета
DataSet ds = new DataSet("ds");
DataTable estimates = new DataTable("estimates");
estimates.Columns.Add("SmetaID", typeof(int));
estimates.Columns.Add("SmetaNomber", typeof(int));
estimates.Columns.Add("SmetaName", typeof(string));
estimates.PrimaryKey = new DataColumn[] {estimates.Columns["SmetaID"]};
ds.Tables.Add(estimates);
//разделы
DataTable parts = new DataTable("EstimatesParts");
parts.Columns.Add("PartID", typeof(int));
parts.Columns.Add("PartNomber", typeof(int));
parts.Columns.Add("PartName", typeof(string));
parts.Columns.Add("SmetaID", typeof(int));
parts.PrimaryKey = new DataColumn[] { parts.Columns["PartID"] };
ds.Tables.Add(parts);
ForeignKeyConstraint partFK = new ForeignKeyConstraint("partFK",estimates.Columns["SmetaID"],
parts.Columns["SmetaID"]);
parts.Constraints.Add(partFK);
ds.Relations.Add(new DataRelation("estimate_parth", estimates.Columns["SmetaID"],
parts.Columns["SmetaID"]));
//работы
DataTable works = new DataTable("WorksSm");
works.Columns.Add("WorkSmID", typeof(int));
works.Columns.Add("WorkSmNomber", typeof(int));
works.Columns.Add("WorkSmName", typeof(string));
works.Columns.Add("ED", typeof(string));
works.Columns.Add("PartID", typeof(int));
works.PrimaryKey = new DataColumn[] { works.Columns["WorkSmID"] };
ds.Tables.Add(works);
ForeignKeyConstraint worksFK = new ForeignKeyConstraint("worksFK", parts.Columns["PartID"],
works.Columns["PartID"]);
works.Constraints.Add(worksFK);
ds.Relations.Add(new DataRelation("parth_works", parts.Columns["PartID"],
works.Columns["PartID"]));
//материалы
DataTable materials = new DataTable("materials");
materials.Columns.Add("MatID", typeof(int));
materials.Columns.Add("MatName", typeof(string));
materials.Columns.Add("MatMarka", typeof(string));
materials.Columns.Add("MatCost", typeof(decimal));
materials.Columns.Add("MatValue", typeof(decimal));
materials.Columns.Add("MatED", typeof(string));
materials.Columns.Add("MatDeskript", typeof(string));
materials.Columns.Add("smWorkID", typeof(int));
materials.PrimaryKey = new DataColumn[] { works.Columns["MatID"] };
ds.Tables.Add(materials);
ForeignKeyConstraint materialFK = new ForeignKeyConstraint("materialFK", works.Columns["WorkSmID"],
materials.Columns["smWorkID"]);
materials.Constraints.Add(materialFK);
ds.Relations.Add(new DataRelation("material_work", works.Columns["WorkSmID"],
materials.Columns["smWorkID"]));
//механизмы
DataTable machines = new DataTable("machines");
machines.Columns.Add("recID", typeof(int));
machines.Columns.Add("smMeh", typeof(string));
machines.Columns.Add("smMehMarka", typeof(string));
machines.Columns.Add("smMehED", typeof(string));
machines.Columns.Add("smMehCost", typeof(decimal));
machines.Columns.Add("smMehValue", typeof(decimal));
machines.Columns.Add("smWorkID", typeof(int));
machines.PrimaryKey = new DataColumn[] { machines.Columns["recID"] };
ds.Tables.Add(machines);
ForeignKeyConstraint machinesFK = new ForeignKeyConstraint("machinesFK", works.Columns["WorkSmID"],
machines.Columns["smWorkID"]);
machines.Constraints.Add(machinesFK);
ds.Relations.Add(new DataRelation("machines_work", works.Columns["WorkSmID"],
machines.Columns["smWorkID"]));
//начисления на раздел работ
DataTable partNach = new DataTable("partNachHidden");
partNach.Columns.Add("KoeffID", typeof(int));
partNach.Columns.Add("KoeffNomber", typeof(int));
partNach.Columns.Add("KoeffName", typeof(string));
partNach.Columns.Add("KoeffTypeName", typeof(string));
partNach.Columns.Add("koefNombers", typeof(string));
partNach.Columns.Add("KoeffValue", typeof(decimal));
partNach.Columns.Add("PartID", typeof(int));
partNach.PrimaryKey = new DataColumn[] { partNach.Columns["KoeffID"] };
partNach.Columns["KoeffID"].ReadOnly = true;
partNach.Columns["KoeffID"].AutoIncrement = true;
partNach.Columns["KoeffID"].AutoIncrementStep = 1;
partNach.Columns["KoeffID"].AutoIncrementSeed = 1;
ds.Tables.Add(partNach);
ForeignKeyConstraint partNachFK = new ForeignKeyConstraint("partNachHiddenFK", parts.Columns["PartID"],
partNach.Columns["PartID"]);
partNach.Constraints.Add(partNachFK);
ds.Relations.Add(new DataRelation("partNacn_parts", parts.Columns["PartID"],
partNach.Columns["PartID"]));
#endregion
#region заношу данные в полученный DataSet...
Console.Write("SmetaID: ");
int id =Convert.ToInt32(Console.ReadLine());
using (OleDbConnection cnn = new OleDbConnection(cnnBild.ConnectionString))
{
cnn.Open();
OleDbCommand cmd = new OleDbCommand("select SmetaID, SmetaNomber, SmetaName from " +
"tblSmeta where SmetaID = " +
id.ToString(), cnn);
OleDbDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
estimates.Load(dr);
cmd.CommandText = "select PartID, PartNomber, PartName, pt.SmetaID from tblPartsSmet as pt inner join " +
"tblSmeta as sm on sm.SmetaID=pt.SmetaID where pt.SmetaID = " + id.ToString() +
" order by PartNomber";
dr = cmd.ExecuteReader();
if (dr.HasRows)
{
parts.Load(dr);
cmd.CommandText = "SELECT tblWorksSm.WorkSmID, tblWorksSm.WorkSmNomber, " +
"tblWorksSm.WorkSmName, tblWorksSm.WorkSmED, tblWorksSm.WorkSmValue, " +
" tblWorksSm.WorkSmCostGP, tblWorksSm.PartID FROM (tblSmeta INNER JOIN tblPartsSmet ON " +
"tblSmeta.SmetaID = tblPartsSmet.SmetaID) INNER JOIN tblWorksSm ON " +
"tblPartsSmet.PartID = tblWorksSm.PartID WHERE (((tblSmeta.SmetaID)=" +
id.ToString() + ")) ORDER BY tblWorksSm.WorkSmNomber;";
dr = cmd.ExecuteReader();
if (dr.HasRows)
{
works.Load(dr);
cmd.CommandText = "SELECT tbl_sm_Mat.MatID, tbl_sm_Mat.MatName, tbl_sm_Mat.MatMarka, " +
"tbl_sm_Mat.MatED, tbl_sm_Mat.MatValue, tbl_sm_Mat.MatCost, tbl_sm_Mat.smWorkID " +
"FROM ((tblSmeta INNER JOIN tblPartsSmet ON tblSmeta.SmetaID = tblPartsSmet.SmetaID)" +
" INNER JOIN tblWorksSm ON tblPartsSmet.PartID = tblWorksSm.PartID) INNER JOIN " +
" tbl_sm_Mat ON tblWorksSm.WorkSmID = tbl_sm_Mat.smWorkID WHERE " +
" (((tblSmeta.SmetaID)=" + id.ToString() +
")) ORDER BY tbl_sm_Mat.MatName, tbl_sm_Mat.MatMarka;";
dr = cmd.ExecuteReader();
if (dr.HasRows) materials.Load(dr);
cmd.CommandText = "SELECT tbl_sm_Meh.recID, tbl_sm_Meh.smMeh, tbl_sm_Meh.smMehMarka, " +
"tbl_sm_Meh.smMehED, tbl_sm_Meh.smMehValue, tbl_sm_Meh.smMehCost, " +
"tbl_sm_Meh.smWorkID FROM ((tblSmeta INNER JOIN tblPartsSmet ON " +
"tblSmeta.SmetaID = tblPartsSmet.SmetaID) INNER JOIN tblWorksSm ON " +
"tblPartsSmet.PartID = tblWorksSm.PartID) INNER JOIN tbl_sm_Meh ON " +
" tblWorksSm.WorkSmID = tbl_sm_Meh.smWorkID WHERE " +
"(((tblSmeta.SmetaID)=" + id.ToString() +
")) ORDER BY tbl_sm_Meh.smMeh, tbl_sm_Meh.smMehMarka;";
dr = cmd.ExecuteReader();
if (dr.HasRows) machines.Load(dr);
}
cmd.CommandText = "SELECT tblPartsSmet.PartID, tblKoeffGP.KoeffNomber, " +
" tblKoeffGP.KoeffName, tblKoeffType.KoeffTypeName, tblKoeffType.koefNombers, " +
"tblKoeffGP.KoeffValue FROM tblKoeffType INNER JOIN ((tbl_grKoef INNER JOIN " +
"(tblSmeta INNER JOIN tblPartsSmet ON tblSmeta.SmetaID = tblPartsSmet.SmetaID) " +
"ON tbl_grKoef.grKoefID = tblPartsSmet.grKoefs) INNER JOIN tblKoeffGP ON " +
" tbl_grKoef.grKoefID = tblKoeffGP.grKoefID) ON tblKoeffType.KoeffTypeID = " +
"tblKoeffGP.KoeffType WHERE (((tblSmeta.SmetaID)=" + id.ToString() +
")) ORDER BY tblPartsSmet.PartID, tblKoeffGP.KoeffNomber;";
dr = cmd.ExecuteReader();
if (dr.HasRows) partNach.Load(dr);
}
}
}
#endregion
#region Проверяю заполненность таблиц моего DataSet...
Console.WriteLine("Количество закаченных смет: {0}", estimates.Rows.Count);
Console.WriteLine("Количество разделов в смете: {0}", parts.Rows.Count);
Console.WriteLine("Количество записей работ по смете: {0}", works.Rows.Count);
Console.WriteLine("Количество записей материалов по смете: {0}", materials.Rows.Count);
Console.WriteLine("Количество записей механизмов по смете: {0}", machines.Rows.Count);
Console.WriteLine("Количество записей начислений по разделам: {0}", partNach.Rows.Count);
#endregion
ds.WriteXmlSchema(@"c:\MyDataSet.xsd");
ds.WriteXml(@"c:\MyDataSet.xml");
//Создаю объект отчета и открываю его в режиме дизайна...
StiReport report = new StiReport();
report.RegData("myData",ds);
report.Design();//ошибка вылезает здесь
Console.Read();
}
}
}