- 締切済み
アクセス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
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mshr1962
- ベストアンサー率39% (7417/18945)
>”カレントレコードがありません。” ということは、該当がないということで rs.Filter = "[telnum] = ' " & str & " ' " で、文字列変数のstrの前後に余分なスペースが入るため不一致になってます。 rs.Filter = "[telnum] = '" & str & "'" とすれば良いかと。。。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
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
お礼
解決です。 ありがとうございました。