![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
ACCESS(VBA)の検索処理にて
以下のVBAを実行すると、かならず「★データあり処理」
に流れてしまいます。
確実に検索結果がヒットしない状態(データ全削除)にしても
同じです。
何故なのでしょうか。。
======================
Private Sub xx_Click()
Dim sSql As String
sSql = "SELECT 年月 FROM 材料明細トランザクション " _
& "WHERE 年月 = " & Me.年月.Value & " " _
& "AND 材料顧客コード = " & Me.材料顧客コード.Value & " " _
& "AND 現場コード = " & Me.現場コード.Value
Set db = CurrentDb
Set oRs = db.OpenRecordset(sSql)
If oRs.NoMatch = False Then
'★データあり処理
Else
'データなし処理
End If
End Sub
======================
※初心者ですので、わかりやすく回答していただけると助かります。
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
& "WHERE 年月 = " & Me.年月.Value & " " _
& "AND 材料顧客コード = " & Me.材料顧客コード.Value & " " _
& "AND 現場コード = " & Me.現場コード.Value
データ型はすべて数値型なのでしょうか?ふと気になりました。
No.3
- 回答日時:
補足:WHERE 節を指定しているSQL文の場合は・・・。
条件を指定して見つける必要はないので・・・。一般的には、次のように書きます。DAOではなくADOですが、考え方は同じです。(多分)
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
ご回答ありがとうございます。
BOF/EOF等の使い方等をもう少し悩んで勉強してみます。
Find使用時のNomatchの使い方まで、
ありがとうございます。
※数年前にIT業界から離れ、現在まったく違う業界に転職して
ひさびさにプログラムに触れております。
No.1
- 回答日時:
Public Function DbSeek(ByVal strQuerySQL As String, _
ByVal strFind As String, _
ByVal strFldName As String) As Variant
On Error GoTo Err_DbSeek
Dim DataValue
Dim DB As DAO.Database
Dim rst As DAO.Recordset
Set DB = CurrentDb
Set rst = DB.OpenRecordset(strQuerySQL)
With rst
'.FindFirst strFind
Debug.Print .NoMatch
If Not .NoMatch Then
DataValue = rst.Fields(strFldName)
End If
End With
Exit_DbSeek:
On Error Resume Next
rst.Close
Set rst = Nothing
DbSeek = DataValue
Exit Function
Err_DbSeek:
MsgBox "SELECT 文の実行時にエラーが発生しました。(DbSeek)" & Chr$(13) & Chr$(13) & _
"・Err.Description=" & Err.Description & Chr$(13) & _
"・SQL Text=" & strQuerySQL, _
vbExclamation, " 関数エラーメッセージ"
Resume Exit_DbSeek
End Function
このような DBSeek()を作成してみました。
添付図の冒頭では、.FindFirst strFind をコメントアウトしていません。二番目はコメントアウトしています。この場合、 .NoMatch の値は False です。なぜなら、.FindFirst を実行していないからです。よって、"ID=4"と指定しているにも関わらず"ID=1"のレコードの値を返しています。そこで、コメントアウトしないで実行すると、"ID=4"が見つからなかったので.NoMatch の値はTrueになり空文を戻しています。
で、結局は、.FindFirst XXXXX が欠落していることが原因かと推測されます。
*1996年がAccessを触った最後。間違っていたら悪しからず。
![「ACCESS(VBA)の検索結果判定につ」の回答画像1](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/9/1232063_5497ece21464f/M.jpg)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。 2 2022/09/15 14:06
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CreateFile、CloseHandleの繰り...
-
JavaScriptでPhotoshopのアクシ...
-
VBA ステータスバー DoEvents
-
毎日明け方4時にCGIを動かすJav...
-
VBA SORT Applyでエラー
-
if(1){...}とはどういうことで...
-
デザイン時のVisible=Falseは実...
-
1つのVBAコードをすべてのコア...
-
C#でボタン名を変更しても動く
-
VBAマクロ、パスがありませんで...
-
PowerBuilderのDOUBLEデータ型...
-
関数の呼び出しかた
-
(Netscape)Plug-in を実行制...
-
C言語のif文についての質問です...
-
マルチスレッドにする必要があ...
-
macにおけるCommon LISP以外のL...
-
innerHTMLなどの反映タイミング
-
このマクロを実行し、表示させ...
-
Schemeでのリスト操作
-
リクエスト結果が一瞬しか表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JSPの処理の途中で、JavaScript...
-
デザイン時のVisible=Falseは実...
-
初心者です。gulpでコンパイル...
-
if(1){...}とはどういうことで...
-
リクエスト結果が一瞬しか表示...
-
resizeToメソッドが動作しません
-
C#でボタン名を変更しても動く
-
jQuery ui Datepicker 明日以降...
-
〔Excel:VBA〕マクロの実行が異...
-
PowerPointで時計表示
-
1つのVBAコードをすべてのコア...
-
VBA ステータスバー DoEvents
-
VBA SORT Applyでエラー
-
Excel VBA にて JavaScript の...
-
alert()が実行できない
-
GoTo文とかSelect文の処理の仕...
-
既存のwebサイトで、ローカルの...
-
一定時間ごとの実行
-
javascriptで最初のところに戻...
-
eval()の危険性の具体例を教え...
おすすめ情報