在单个数据集中填充两个数据表
本文关键字:两个 数据表 填充 单个 数据 数据集 集中 | 更新日期: 2023-09-27 17:57:01
我有一个DataSet.xsd
文件,在这个文件中我有两个DataTable
一个是Bill
,另一个是BillInfo
现在,我正在编写此代码
string qry = "Select * from BillInfo where [BillNumber]='" +txtbill.Text + "' and [Session]='"+CLS.ses+"'";
OleDbDataAdapter da = bm.returnDataAdaptor(qry);
DataSet ds1 = new DataSet();
da.Fill(ds1);
DataSets.Bill ds = new DataSets.Bill();
da.Fill(ds);
DataTable Dt1 = ds1.Tables[0];
DataTable dt = ds.Tables.Add("BillInfo");
dt.Columns.Add("BillNumber", Type.GetType("System.String"));
dt.Columns.Add("CustomerName", Type.GetType("System.String"));
dt.Columns.Add("City", Type.GetType("System.String"));
dt.Columns.Add("Mobile", Type.GetType("System.String"));
dt.Columns.Add("TotalAmount", Type.GetType("System.String"));
dt.Columns.Add("Packing", Type.GetType("System.String"));
dt.Columns.Add("Tax", Type.GetType("System.String"));
dt.Columns.Add("Transport", Type.GetType("System.String"));
dt.Columns.Add("Additional", Type.GetType("System.String"));
dt.Columns.Add("PaybleAmount", Type.GetType("System.Int32"));
dt.Columns.Add("Session", Type.GetType("System.String"));
dt.Columns.Add("Date1", Type.GetType("System.DateTime"));
dt.Columns.Add("Naration", Type.GetType("System.String"));
dt.Columns.Add("AmountWord", Type.GetType("System.String"));
dt.Columns.Add("Status", Type.GetType("System.String"));
dt.Columns.Add("Balance", Type.GetType("System.Int32"));
for (int i = 0; i < Dt1.Rows.Count; i++)
{
DataRow r = dt.NewRow();
r["BillNumber"] = Dt1.Rows[i][0];
r["CustomerName"] = Dt1.Rows[i][1];
r["City"] = Dt1.Rows[i][2];
r["Mobile"] = Dt1.Rows[i][3];
r["TotalAmount"] = Dt1.Rows[i][4];
r["Packing"] = Dt1.Rows[i][5];
r["Tax"] = Dt1.Rows[i][6];
r["Transport"] = Dt1.Rows[i][7];
r["Additional"] = Dt1.Rows[i][8];
r["PaybleAmount"] = Dt1.Rows[i][9];
r["Session"] = Dt1.Rows[i][10];
r["Date1"] = Dt1.Rows[i][11];
r["Naration"] = Dt1.Rows[i][12];
r["AmountWord"] = Dt1.Rows[i][13];
r["Status"] = Dt1.Rows[i][14];
r["Balance"] = Dt1.Rows[i][15];
dt.Rows.Add(r);
}
string qry1 = "Select * from BillDetails where [BillNumber]='" + txtbill.Text + "'";
OleDbDataAdapter da1 = bm.returnDataAdaptor(qry1);
DataSet ds2 = new DataSet();
da.Fill(ds2);
da.Fill(ds);
DataTable Dt2 = ds2.Tables[0];
DataTable dt2 = ds.Tables.Add("Bill");
dt2.Columns.Add("BillNumber", Type.GetType("System.String"));
dt2.Columns.Add("ProductCode", Type.GetType("System.String"));
dt2.Columns.Add("ProductName", Type.GetType("System.String"));
dt2.Columns.Add("productSize", Type.GetType("System.String"));
dt2.Columns.Add("ProductQuantity", Type.GetType("System.String"));
dt2.Columns.Add("ProductWeight", Type.GetType("System.String"));
dt2.Columns.Add("Unit", Type.GetType("System.String"));
dt2.Columns.Add("ProductPrice", Type.GetType("System.String"));
dt2.Columns.Add("Amount", Type.GetType("System.String"));
dt2.Columns.Add("Date1", Type.GetType("System.DateTime"));
for (int i = 0; i < Dt2.Rows.Count; i++)
{
DataRow r = dt.NewRow();
r["BillNumber"] = Dt2.Rows[i][0];
r["ProductCode"] = Dt2.Rows[i][1];
r["ProductName"] = Dt2.Rows[i][2];
r["productSize"] = Dt2.Rows[i][3];
r["ProductQuantity"] = Dt2.Rows[i][4];
r["ProductWeight"] = Dt2.Rows[i][5];
r["Unit"] = Dt2.Rows[i][6];
r["ProductPrice"] = Dt2.Rows[i][7];
r["Amount"] = Dt2.Rows[i][8];
r["Date1"] = Dt2.Rows[i][9];
dt2.Rows.Add(r);
}
但在r["ProductCode"] = Dt2.Rows[i][1];
,它显示出一个例外。那是Column 'ProductCode' does not belong to table BillInfo.
请解决我的错误。
替换
DataRow r = dt.NewRow();
跟
DataRow r = dt2.NewRow();
您只是使用了没有列ProductCode
的错误表。它必须是"Bill"而不是"BillInfo"。
除此之外:
当您使用文本框作为 sql 查询的输入时,您将对 sql 注入持开放态度。请改用参数。
http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbparameter.aspx
答案非常清楚Column 'ProductCode' does not belong to table BillInfo
相反,我可以看到"产品代码"列在BillDetails
中。