2016-09-05 6 views
0

次のコードをデバッグしていて、例外が発生しました: クエリ式 'data1.PS NO = data2.PS N '。2つのデータテーブルでINNER JOINを実行しているときにvb.netのクエリ式に構文エラー(演算子がありません)があります

コードは次のとおりです。

 If data1 Is Nothing And data2 Is Nothing Then 
      MsgBox("Open two excel files to generate report", MsgBoxStyle.Information, "Try Again") 
     Else 
      cntcn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES'" 
     oleConnection = New System.Data.OleDb.OleDbConnection(cntcn) 

     oleCommand = New System.Data.OleDb.OleDbDataAdapter("SELECT May FROM [data1] INNER JOIN [data2] ON data1.PS NO=data2.PS NO WHERE data1.Month = 'May'", oleConnection) 

     oleCommand.Fill(data3) 

    End If 
ここ

私は2つのデータテーブルのDATA1とDATA2を作成し、内側はquery.Butは、上記の例外を持って参加し適用している 助けてください。 ありがとうございます。

+2

あなたはPS」という名前の列を持っていますかいいえ "?空白を含む識別子を使用することは非常に貧弱なので、それらのスペースを削除する必要があります。あなたがそれを行うことができない、またはしない場合、あなたはすでにテーブル名でそれをやっているので、あなたはすでに何をすべきかを知っています。つまり、列名のまわりに角括弧を入れて単一の識別子として扱います。 – jmcilhinney

+0

ありがとうございます@jmcilhinneyはい私はカラム番号があります。私はそれをブラケットに入れました。しかし、新しいエラーが発生しています: 'Microsoft Accessデータベースエンジンが' data1 'オブジェクトを見つけることができませんでした。オブジェクトが存在し、その名前とパス名のスペルが正しいことを確認してください。 'data1'がローカルオブジェクトでない場合は、ネットワーク接続を確認するか、サーバー管理者に問い合わせてください。 "しかし、data1はローカルオブジェクトです – Krishna

答えて

0
oleCommand = New System.Data.OleDb.OleDbDataAdapter("SELECT data1.Month FROM [data1] INNER JOIN [data2] ON data1.[PS NO]=data2.[PS NO] WHERE data1.Month = 'May'", oleConnection) 

問題:

  1. あなたは持っている:SELECT May変更この変更

  2. data1.[Month]に:data1.PS NOこれまで:data1.[PS NO]

+0

ありがとう@alwaysVBNET。私は上記のsuggestion.Butとしてコードを変更しましたが、それでもやっています:" 'Microsoft Accessデータベースエンジンは' data1 'オブジェクトを見つけることができませんでした。オブジェクトが存在し、その名前とパス名のスペルが正しいことを確認してください。 'data1'がローカルオブジェクトでない場合は、ネットワーク接続を確認するか、サーバー管理者に問い合わせてください。 "しかし、私のデータ1はローカルオブジェクトです" – Krishna

+0

@Krishnaそのデータベースファイルにアクセスできることを確認してください。同じエラーが発生するかどうかを調べるには、data1から単純なselect *を書きます。そうした場合は、そのファイルから読み込めるかどうかを確認してください。データベースファイルのパスを以下に渡してもよろしいですか?Source = {0}? – alwaysVBNET

関連する問題