• 締切済み

アクセスVBA 変数での抽出条件の書きかた

顧客データテーブルからの抽出です。 変数を使った書き方がわかりません。 よろしくお願いします。 テーブルのレコードには [氏名]:鈴木 [telnum]:0123456789 が存在します。 Private Sub テキスト0_BeforeUpdate(Cancel As Integer) Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("顧客マスタ", dbOpenDynaset) Dim str As String str = "0123456789" rs.Filter = "[telnum] = ' " & str & " ' " Set rs = rs.OpenRecordset MsgBox (rs!氏名) ’←エラーメッセージ”カレントレコードがありません。”が出ます End Sub

みんなの回答

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

>”カレントレコードがありません。” ということは、該当がないということで rs.Filter = "[telnum] = ' " & str & " ' " で、文字列変数のstrの前後に余分なスペースが入るため不一致になってます。 rs.Filter = "[telnum] = '" & str & "'" とすれば良いかと。。。

9zqlh3fx
質問者

お礼

解決です。 ありがとうございました。

回答No.1

Private Sub テキスト2_BeforeUpdate(Cancel As Integer)   Dim db As DAO.Database   Dim rs As DAO.Recordset      Set db = CurrentDb   Set rs = db.OpenRecordset("顧客台帳", dbOpenDynaset)   rs.Filter = "[telnum] = '0123456789'"   MsgBox (rs!氏名) End Sub これで動作します。質問者のミスはレコードセットを再定義したことです。 【電話番号で顧客氏名を検索表示するサンプルコード】 Private Sub 電話番号_BeforeUpdate(Cancel As Integer)   Dim strPhoneNumber As String   Dim strCustomerName As String   Dim strSQL     As String      strPhoneNumber = Me.電話番号 & ""   If Len(strPhoneNumber) = 10 Then     strSQL = "SELECT 氏名 FROM 顧客台帳 WHERE PhoneNumber ='" & strPhoneNumber & "'"     strCustomerName = DBLookup(strSQL, "")     MsgBox strCustomerName   Else     MsgBox "電話番号が正しく入力されていません。"   End If End Sub 普通は、Filter 機能は利用しないで SELECT文を書きます。 Public Function DBLookup(ByVal strQuerySQL As String, _              Optional ByVal ReturnValue = Null) As Variant On Error GoTo Err_DBLookup   Dim DataValue   Dim rst As ADODB.Recordset   Set rst = New ADODB.Recordset   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 = IIf(Len(DataValue & ""), 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