- ベストアンサー
SQL文のWHERE
VB6.0 ACCESSで開発しています。 下記のように日付で検索をしているのですが 社員コードでも検索をしたいのですがうまくいきません。 rst.Source = "SELECT * FROM t_nyuryoku Where 日時 = '" & Text3.Text & "'の部分を rst.Source = "SELECT * FROM t_nyuryoku Where 日時 = '" & Text3.Text & "' AND 社員コード = '" & Label1.Caption & "' としたのですがうまく検索できません。 よくわかりません。 Dim cn As New ADODB.Connection Dim rst As ADODB.Recordset Set cn = New ADODB.Connection cn.ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\temp\db2.mdb" cn.Open Set rst = New ADODB.Recordset rst.Source = "SELECT * FROM t_nyuryoku Where 日時 = '" & Text3.Text & "' rst.ActiveConnection = cn rst.CursorType = adOpenStatic rst.LockType = adLockOptimistic rst.Open
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>rst.Source = "SELECT * FROM t_nyuryoku Where 日時 = '" & Text3.Text & "' AND 社員コード = '" & Label1.Caption & "' 最後の " が足りません。 が、元の文も足りないので、これは写し間違いかな。(^^; 社員コードって文字列型でしょうか? 数値型なら ' ' で囲んではいけません。 Text3.TextもLabel1.Captionも内容は正しいですか? 片方が、空白だったりするとうまく行かないですよ。 とりあえず思いつくのは、こんな感じかな。 これで解決しない場合・・・ 実際どううまく行かないのか? 具体的なデータや、設定した条件など、もう少し詳しい情報を、 補足して頂いた方が良いと思いますよ。
その他の回答 (3)
直接の回答ではなく SQL 文のチェック要領に関して・・・。 <価格リスト> ID___品名__値段 1____A_______\100 2____A_______\200 3____B_______\300 4____B_______\400 [イミディエイト] ? DBLookup("SELECT ID FROM 価格リスト") 1;2;3;4; ? DBLookup("SELECT * FROM 価格リスト") 1;A;100;2;A;200;3;B;300;4;B;400; VB6.0+Access でのテスト結果です。 このように、次の DBLookup関数でSQL文を簡単にテストすることが可能です。 Option Explicit Const conCNNSTRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\temp\db1.mdb" Public Function DBLookup(ByVal strSQL As String) As String Dim I As Integer Dim J As Integer Dim M As Integer Dim N As Integer Dim Datas As String Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Set cnn = New ADODB.Connection Set rst = New ADODB.Recordset With cnn .ConnectionString = conCNNSTRING .Open With rst .Open strSQL, cnn, adOpenStatic, adLockReadOnly M = .RecordCount - 1 N = .Fields.Count - 1 .MoveFirst For I = 0 To M For J = 0 To N Datas = Datas & .Fields(J) & ";" Next J .MoveNext Next I End With End With DBLookup = Datas End Function
回答ではありませんが、アクセスを利用されているということで、 構文チェックの方法をひとつ。 SQL文をイミディエイトウインドウ などに出力して、コピーしてアクセスのクエリのSQLビューに貼り付け 動作確認をするという方法があります。 また逆に、希望するクエリをアクセスでつくり、SQLを表示させ、 コピーして、プログラムのSQL文を作るというのも手です。
- t_nojiri
- ベストアンサー率28% (595/2071)
ええと、推測で申し訳有りませんが、要求事項よりANDとORを間違えてるだけな気が・・・。 ちなみに、社員コードと日時両方完全一致で出てくるなら、文法は間違いないかと思います。
お礼
社員コードが数値型だったのに' ' で囲んでいました。 ありがとうございます。 解決しました