我想显示一个DataGridView,它的数据来自一个表,并从ACCESS数据库的另一个表中添加一个额外的列。
这是我的代码:
string PathDB6 = Application.StartupPath + @"\PcStore.ACCDB";
OleDbConnection connection6 = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + PathDB6 + ";Persist Security Info=False;");
OleDbDataAdapter ada6 = new OleDbDataAdapter("SELECT * FROM CustomersOrdersDetail", connection6);
DataSet set6 = new DataSet();
ada6.Fill(set6, "CustomersOrdersDetail");
tabSearchCustomerOrder = new DataTable();
tabSearchCustomerOrder = set6.Tables["CustomersOrdersDetail"];
dgvCustomerOrderDetail.DataSource = tabSearchCustomerOrder;
dgvCustomerOrderDetail.Sort(dgvCustomerOrderDetail.Columns["OrderID"], ListSortDirection.Ascending);
dgvCustomerOrderDetail.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
但我不知道如何从另一个表中选择一个额外的列到我上面提到的DataGridView(dgvCustomerOrderDetail)。
我在 c#
中使用 OLEDB提前谢谢。
我的表格和字段:
表1:"客户订单明细"
Customers Orders Detail Table fields
表2:"客户订单"
在我的dgv中,我拥有该表的所有数据" CustomersOrdersDetail",我想将第二个表中的WorkerApproved列添加到它。
答案 0 :(得分:0)
为了能够向DataGridView显示附加列,您需要相应地更新SQL以使其具有此列。
例如,考虑到您的第二个表是Customers表,并且您希望将此客户的电子邮件地址显示为附加列:
string sql = "SELECT CustomersOrdersDetail.*, Customers.Email
FROM CustomersOrdersDetail INNER JOIN Customers on CustomersOrdersDetail.ID = Customers.ID";
您可以在INNER JOIN
上了解详情填写数据集后,您应该会看到其他电子邮件列。
所以,在您的情况下(未选中):
string sql = "SELECT CustomersOrdersDetail.*, CustomersOrders.WorkerApproved
FROM CustomersOrdersDetail INNER JOIN CustomersOrders on
CustomersOrdersDetail.CustomerID = CustomersOrders.CustomerID AND
CustomersOrdersDetail.OrderID = CustomersOrders.OrderID";