Что мне нужно сделать, это:VB- Использование INNER JOIN и отображения данных
- Выберите
.mdb
файл - Дисплей на
DataGrid
2 поля изTable1
и 1 поле отtable2
- Сохраните таблицу как новая база данных
Я застрял в точке 2, я не могу присоединиться к двум столам, я использовал INNER JOIN
и LEFT JOIN
.
В моем .mdb
DB есть 2 стола, каждый из которых содержит Field1
, Field2
и Field3
. Я хочу показать Table1.Field1
, Table1.Field2
, Table2.Field3
.
Мой код (на button_click
события) является:
Dim openFile As New OpenFileDialog()
openFile.FileName = ""
openFile.Filter = "Microsoft Access Application (*.mdb)|*.mdb"
Dim res As System.Windows.Forms.DialogResult = openFile.ShowDialog()
If res = System.Windows.Forms.DialogResult.Cancel Then
Return
End If
Dim CONNECT_STRING As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + openFile.FileName
Dim cnn As New OleDbConnection(CONNECT_STRING)
cnn.Open()
'PROBLEM HERE
Dim Sql As String = "SELECT Tabla1.Campo1, Tabla1.Campo2, Tabla2.Campo3"
Sql += " FROM Tabla1 LEFT JOIN Tabla2 ON Tabla1.Campo3 = Tabla2.Campo3"
Dim cmd As New OleDbCommand(Sql, cnn)
Dim da As New OleDb.OleDbDataAdapter(cmd)
Dim ds As New DataSet
da = New OleDbDataAdapter(cmd)
da.Fill(ds, "joined")
dGrid.DataSource = ds.Tables("joined")
cnn.Close()
Используя этот код, в показывает только поля 1 и 2 из таблицы 1.
Но если я изменить это:
Dim Sql As String = "SELECT Tabla1.Campo1, Tabla1.Campo2, Tabla2.Campo3"
Sql += " FROM Tabla1 LEFT JOIN Tabla2 ON Tabla1.Campo3 = Tabla2.Campo3"
Для этого:
Dim Sql As String = "SELECT Tabla1.Campo1, Tabla1.Campo2,Tabla2.Campo3"
Sql += " FROM Tabla1 LEFT JOIN Tabla2 ON Tabla1.ID = Tabla2.ID"
Это сработает!
Но почему?
Как я должен перенастроить свои поля на моем новом столе, если у моего реального MDB есть еще много таблиц и полей?
Благодаря