在ACCESS中显示来自多个源的DataGridView

时间:2017-03-13 14:00:35

标签: c# sql ms-access join datagridview

我想显示一个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:"客户订单"

Customers Orders Table fields

在我的dgv中,我拥有该表的所有数据" CustomersOrdersDetail",我想将第二个表中的WorkerApproved列添加到它。

1 个答案:

答案 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";