我一直被困在這一整天....我的愛人可以解決它!從相同數據集中的2個表格之間的關係創建表或數據集
所以,有2個表
在包含在倉庫等和Excel表在數量
條形碼,說明列,(ds.Tables [ 「訪問」])
訪問表( ds.Tables [「創先爭優」]),其中包含
條碼列,quantiy責令等無論名稱如何F2,F4,F8
那麼,如何得到最終的數據表/數據集(什麼我可以.DataSource對DataGridView)與Excel和Access相匹配的條形碼? ??
OleDbConnection conAccess = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\PROGRAMMING.LAB\\geekx_recent.mdb");
OleDbDataAdapter daAccess = new OleDbDataAdapter("Select Barcode AS BARCODE, quantity AS QTY_WH From Stock", conAccess);
DataSet dsAll = new DataSet();
daAccess.Fill(dsAll, "Access");
OleDbConnection conExcel = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\PROGRAMMING.LAB\\order.xlsx;Extended Properties = Excel 12.0 Xml");
OleDbDataAdapter daExcel = new OleDbDataAdapter("SELECT F2 AS BARCODE, F8 AS ORDER_CUST FROM [phil$] WHERE ISNUMERIC(F8)",conExcel);
daExcel.Fill(dsAll, "Excel");
DataRelation dr = dsAll.Relations.Add("Excel_Access", dsAll.Tables["Excel"].Columns["BARCODE"], dsAll.Tables["Access"].Columns["BARCODE"], false);
DataTable dtExcel = dsAll.Tables["Excel"];
DataTable dtAccess = dsAll.Tables["Access"];
DataTable dtAll = new DataTable();
var query = from ex in dtExcel.AsEnumerable()
join ac in dtAccess.AsEnumerable()
on ex.Field<string>("BARCODE") equals ac.Field<string>("BARCODE")
select new
{
Order = ex.Field<string>("ORDER_CUST"),
Stock = ac.Field<string>("QTY_WH"),
Barcode = ex.Field<string>("BARCODE")
};
foreach (var q in query)
{
dtAll.Rows.Add(q.Barcode, q.Stock, q.Order);
}
dataGridView1.DataSource = dtAll;
這返回
「」類型的未處理的異常發生在System.Data.DataSetExtensions.dll 其他信息:無法轉換類型「System.Double」爲類型「系統的對象。串'。 在選擇新區塊
任何想法的人?
使用LINQ JOIN在兩個DataTable。我建議將這兩個數據表放入一個datagridview.DataSource = ds.Talbe [0](也是1),以便您可以看到列的標題名稱。聯接使用標題名稱來組合這兩個表。 – jdweng
嘿jdwng所以我嘗試使用連接沒有運氣,它要麼瘋狂對我使用/不使用枚舉或對我大喊關於不使用正確的演員?有什麼想法嗎? – KAPA