vb.net 2010 Express の次のコードは、このエラーを生成します。
クエリ式 '' に構文エラー (演算子がありません)。
sql = "SELECT Machines.LocationID FROM Lanes LEFT JOIN Cabinets ON
Lanes.CabinetID=Cabinets.ID AND Cabinets.Name IS NOT NULL LEFT JOIN Machines ON
Cabinets.MachineID=Machines.ID "
Dim mAdapter As New OleDbDataAdapter(sql, con)
Dim mt As New DataTable("Results")
mAdapter.Fill(mt)
con
プロジェクトのモジュールで次のように定義されています。
Public myConString As String = "Provider=Microsoft.ACE.OLEDB.12.0"
Public databaseName As String = "C:\vending.mdb"
Public con As New OleDb.OleDbConnection(myConString & ";Data Source =" & databaseName)
2 番目の Left Join コマンドをコメント アウトすると、ステートメントは正しく実行されます。SQL Server から実行すると、このまったく同じ SQL ステートメントが正常に機能します。
テーブルは次のように定義されます。
場所
ID INTEGER IDENTITY
Company
Name
...
機械
ID INTEGER IDENTITY
LocationID Integer
Name as Text(100)
SerialNum as Text(100)
...
キャビネット
ID INTEGER IDENTITY
Name TEXT(100)
MachineID INTEGER
...
レーン
ID INTEGER IDENTITY
Name TEXT(100)
CabinetID INTEGER
...
次のように結合ステートメントの周りに括弧を追加すると:
sql = "SELECT Machines.LocationID FROM ((Lanes LEFT JOIN Cabinets ON
Lanes.CabinetID=Cabinets.ID AND Cabinets.Name IS NOT NULL) LEFT JOIN Machines ON
Cabinets.MachineID=Machines.ID) "
エラーが発生します:
結合式はサポートされていません。
助けてください!