Ich habe versucht, eine innere Join-Select-Anweisung auszuführen, wobei ich zwei Felder aus einer Tabelle auswähle und dann alle Datensätze eines Feldes in einer zweiten Tabelle, die dieselbe ID wie die erste Tabelle haben.Ausführen einer inneren Verknüpfung
Der Code wie folgt aussieht:
Dim conn As OleDbConnection
Dim cmd As OleDbCommand
Public Sub openDB()
rsConn = New ADODB.Connection
rsConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\VFMS_DB.mdb;" & "Jet OLEDB:System Database=Security.mdw", "ADMIN", "1234")
End Sub
Public Function GetProdDetails(ByVal vegeID As Integer, ByRef dsTask As DataSet) As Integer
Dim retCode As New Integer
Dim da As OleDbDataAdapter
Try
Dim i As Integer = 0
openDB2()
da = New OleDbDataAdapter("SELECT [Vegetables Descriptions.Task], [Vegetables Descriptions.Description], [TasksOcc.When] FROM [Vegetables Descriptions] INNER JOIN [TasksOcc] ON [Vegetables Descriptions.DescID] = [TasksOcc.DescID] WHERE [Vegetables Descriptions.VegeID] = vegeID", conn)
da.Fill(dsTask)
retCode = 0
conn.Close()
Return retCode
Catch ex As Exception
MessageBox.Show(ex.ToString, ex.Message, MessageBoxButtons.OK)
retCode = 1
Return retCode
End Try
End Function
erhalte ich eine Ausnahme: „ungültiges Klammerung von Name [Gemüse Descriptions.DescID]
wenn ich es herausnehmen, um es wie folgt aussehen I erhalten eine „Join Ausdruck nicht unterstützt“
da = New OleDbDataAdapter("SELECT [Vegetables Descriptions.Task], [Vegetables Descriptions.Description], [TasksOcc.When] FROM [Vegetables Descriptions] INNER JOIN [TasksOcc] ON [DescID] = [DescID] WHERE [Vegetables Descriptions.VegeID] = vegeID", conn)
ich habe versucht, Beispiele aus dem Netz folowing aber wo erfolglos.
+1 für Tabellennamen mit Leerzeichen - vermeiden, dass sie! –
Das ist ziemlich cool, danke – Domitius
die d.VegeID = vegeID ist sinnvoll, nur jene Datensätze auszuwählen, die dieser ID in der Tabelle [Vegetables Descriptions] entsprechen, aber aus irgendeinem Grund erhält es alle Informationen. – Domitius