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を触った最後。間違っていたら悪しからず。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
あるあるbotに投稿したけど採用されなかったあるある募集
あるあるbotに投稿したけど採用されなかったあるあるをこちらに投稿してください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
サブフォームの新規レコードに移動したい アクセス
Access(アクセス)
-
-
4
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
既存のwebサイトで、ローカルの...
-
VBA 図形を塗りつぶし無しにす...
-
JavaScriptでショートカットキ...
-
初心者です。gulpでコンパイル...
-
jQuery ui Datepicker 明日以降...
-
JSPの処理の途中で、JavaScript...
-
Excelのマクロ一括実行ができな...
-
デザイン時のVisible=Falseは実...
-
CTRL + Xを無効にしたい
-
resizeToメソッドが動作しません
-
乱数の表示
-
if(1){...}とはどういうことで...
-
〔Excel:VBA〕マクロの実行が異...
-
[Delphi7] TWebBrowserでexecSc...
-
リクエスト結果が一瞬しか表示...
-
EXCEL入力規則のリスト設定での...
-
C#でボタン名を変更しても動く
-
文字認証の問題
-
VBAによる第3、4水準文字の判定...
-
Excel VBA カタカナ セル判定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JSPの処理の途中で、JavaScript...
-
初心者です。gulpでコンパイル...
-
if(1){...}とはどういうことで...
-
C#でボタン名を変更しても動く
-
VBA ステータスバー DoEvents
-
デザイン時のVisible=Falseは実...
-
PowerPointで時計表示
-
〔Excel:VBA〕マクロの実行が異...
-
1つのVBAコードをすべてのコア...
-
既存のwebサイトで、ローカルの...
-
innerHTMLなどの反映タイミング
-
VBA SORT Applyでエラー
-
Excelのマクロ一括実行ができな...
-
resizeToメソッドが動作しません
-
JavaScriptでショートカットキ...
-
jQuery ui Datepicker 明日以降...
-
CTRL + Xを無効にしたい
-
アクセスのフォームでタイマー...
-
javascriptで最初のところに戻...
-
リクエスト結果が一瞬しか表示...
おすすめ情報