dポイントプレゼントキャンペーン実施中!

はじめまして。よろしくお願いします
select文のwhere条件にidを指定したいのですがうまくいきません。
べつに変数を使用しなくてもよいのですが良い方法がありましたらご教授下さい
Private Sub コマンド8_Click()
Dim adoCON As ADODB.Connection
Dim adoRS As ADODB.Recordset
Dim no As interger
no=me.id
Set adoCON = Application.CurrentProject.Connection
Set adoRS=adoCON.Execute("select varcodeno from varcode_tbl where id=no")strName = adoRS!varcodeno
adoRS.Close
adoCON.Close
Set adoRS = Nothing
Set adoCON = Nothing
Me.jancode.Value = strName
End Sub

A 回答 (4件)

>Set adoRS=adoCON.Execute("select varcodeno from varcode_tbl where id=no")



idのタイプが数値だと
Set adoRS=adoCON.Execute("select varcodeno from varcode_tbl where id=" & no)
文字列だと
Set adoRS=adoCON.Execute("select varcodeno from varcode_tbl where id='" & no & "'")

にしたらOK。
    • good
    • 0
この回答へのお礼

文字列の場合まで教えて頂いてありがとうございます
おかげさまで解決しました。

お礼日時:2006/11/26 18:02

SQL文は文字列です。

実行する直前までに、正しく文字列が編集されておればよい。不変の文字列の部分と「可変になる場合が多い条件の文字列」を&でくっつけます。その際条件部分が文字列か数値か注意する。
MsgboxでSQL文を作った変数を表示してみれば、期待通りになっているか判ります。
    • good
    • 0
この回答へのお礼

SQL文は文字列なんですね。知らなかったです。
また今後とも宜しくお願いします。

お礼日時:2006/11/26 18:12

私ならば、次のような書き方をします。



×"id=Me.id"
○"id=" & Me.id

は、単なる初歩的なミスですので二度としないと思いますよ!

Private Sub コマンド8_Click()
  Me.jancode.Value = DBLookup("varcodeno", "varcode_tbl", "id=" & Me.id)
End Sub

Public Function DBLookup(ByVal strField As String, _
             ByVal strTable As String, _
             Optional ByVal strWhere As String = "", _
             Optional ByVal ReturnValue = Null) As Variant
On Error GoTo Err_DBLookup
   Dim DataValue
   Dim strQuerySQL As String
   Dim rst     As ADODB.Recordset

   Set rst = New ADODB.Recordset
   strQuerySQL = "SELECT " & strField & " FROM " & strTable
   If Len(strWhere) > 0 Then
     strQuerySQL = strQuerySQL & " WHERE " & strWhere
   End If
   With rst
     .Open strQuerySQL, _
        CurrentProject.Connection, _
        adOpenStatic, _
        adLockReadOnly
     If Not .BOF Then
       .MoveFirst
       DataValue = .Fields(0)
     End If
   End With
Exit_DBLookup:
On Error Resume Next
   rst.Close
   Set rst = Nothing
   DBLookup = Nz(DataValue, ReturnValue)
   Exit Function
Err_DBLookup:
   MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _
      "・Err.Description=" & Err.Description & Chr$(13) & _
      "・SQL Text=" & strQuerySQL, _
      vbExclamation, " 関数エラーメッセージ"
   Resume Exit_DBLookup
End Function
    • good
    • 0
この回答へのお礼

なるほど関数を使用する方法もあるんですね
参考にさせて頂きます。
ありがとうございました

お礼日時:2006/11/26 18:09

Set adoRS=adoCON.Execute("select varcodeno from varcode_tbl where id = " & no)


とか、
変数id を使わなくとも
Set adoRS=adoCON.Execute("select varcodeno from varcode_tbl where id = " & me!id)
では?
あと、no は Access の予約語なので変更したほうが宜しいかと。
http://support.microsoft.com/default.aspx?scid=k …
    • good
    • 0
この回答へのお礼

NOが予約語だとは知りませんでした。
ありがとうございます。また宜しくお願いします。

お礼日時:2006/11/26 18:04

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

このQ&Aを見た人はこんなQ&Aも見ています