如何将两个访问表联接到一个 DataGridView



我希望用户能够在datagridview(dgvDynamic(中看到哪些工单(tblTickets(和订单(tblOrders(。

无论如何,我在单击"btnDisplay"时收到错误,指出 FROM 语句的格式有错误。我不确定如何实际连接两个表,以便在满足条件时,记录将显示在表中。

这是代码:

Imports System.Data.OleDb
    Public Class frmViewTables
        Dim connString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "SAC1 Database.mdb"
        Dim MyConn As OleDbConnection
        Dim da As OleDbDataAdapter
        Dim ds As DataSet
        Dim tables As DataTableCollection
        Dim source1 As New BindingSource
        Dim dt As DataTable
        Private Sub btnDisplayDataGrid_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisplayDataGrid.Click
            Dim source1 As New BindingSource
            Dim ds = New DataSet
            Dim tables = ds.Tables
            Dim cn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "SAC1 Database.mdb")
            Dim da As OleDbDataAdapter = New OleDbDataAdapter()
            Dim cmd As New OleDbCommand("Select * from [tblOrders] inner join [tblTickets] where Username = @username", cn)
            cmd.Parameters.Add("@username", OleDbType.VarChar, 255).Value = frmLogin.SuccessfulLoginUsername
            da.SelectCommand = cmd
            da.Fill(ds, "tblOrders")
            Dim view As New DataView(tables(0))
            source1.DataSource = view
            dgvDynamic.DataSource = view
    End Sub
    End Class

谢谢。

看起来错误出在查询语法中。内部联接应指定两个表中的联接列,如下所示。

Dim cmd As New OleDbCommand("Select * from [tblOrders] inner join [tblTickets] ON [tblOrders].OrderID=[tblTickets].OrderID where Username = @username", cn)
  • 我假设父表的 tblOrders 主键是 OrderID,而 tblTicket 与外键具有相同的名称列。更正上述查询中的" ON [tblOrders].OrderID=[tblTickets].OrderID ",并反馈它是否有效。 如果没有,则共享两个表列信息。

-谢谢

相关内容

最新更新