プロが教えるわが家の防犯対策術!

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

A 回答 (4件)

>rst.Source = "SELECT * FROM t_nyuryoku Where 日時 = '" & Text3.Text & "' AND 社員コード = '" & Label1.Caption & "'



最後の " が足りません。
が、元の文も足りないので、これは写し間違いかな。(^^;

社員コードって文字列型でしょうか?
数値型なら ' ' で囲んではいけません。

Text3.TextもLabel1.Captionも内容は正しいですか?
片方が、空白だったりするとうまく行かないですよ。

とりあえず思いつくのは、こんな感じかな。


これで解決しない場合・・・

実際どううまく行かないのか?
具体的なデータや、設定した条件など、もう少し詳しい情報を、
補足して頂いた方が良いと思いますよ。
    • good
    • 0
この回答へのお礼

社員コードが数値型だったのに' ' で囲んでいました。
ありがとうございます。
解決しました

お礼日時:2007/05/21 16:15

直接の回答ではなく 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
    • good
    • 0

回答ではありませんが、アクセスを利用されているということで、


構文チェックの方法をひとつ。 SQL文をイミディエイトウインドウ
などに出力して、コピーしてアクセスのクエリのSQLビューに貼り付け
動作確認をするという方法があります。 
また逆に、希望するクエリをアクセスでつくり、SQLを表示させ、
コピーして、プログラムのSQL文を作るというのも手です。
    • good
    • 0

ええと、推測で申し訳有りませんが、要求事項よりANDとORを間違えてるだけな気が・・・。


ちなみに、社員コードと日時両方完全一致で出てくるなら、文法は間違いないかと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!