こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルVBAでmdb上のデータを抽出後表示したい

エクセルVBAについての質問です。

現在、excelにのみ慣れ、accessはほとんど使ったことがないユーザーのための
プログラムを作成しています。

行き詰っている箇所はエクセルVBAにてアクセスDBのあるクエリをさらに条件指定し
抽出されたデータをエクセルのフォームへ表示しようという部分です。
「あるテキストボックスへ入力した文字列を元に、検索した結果をリストボックスへ表示」

方々検索してみたのですが、条件指定の仕方が悪いようだ。。というところから先に
進めません。
我流で組み上げているので、上級者の方には各所ご指摘頂きそうですが、ひとまず以下に
コードを記載します。

Set cnnH = New ADODB.Connection
cnnH.Open cnsADO_CONNECT1 & dbPath & dbName & ";"

SrcP1 = "*" & StrConv({検索指定文字1}.Value, vbUpperCase + vbNarrow) & "*"

SrcP2 = "*" & StrConv({検索指定文字2}.Value, vbUpperCase + vbNarrow) & "*"

'レコードセットを開く。"仕様書"というテーブルを参照のため開きます。

Set rstA = New ADODB.Recordset

Sql_kikaku = "SELECT * FROM 仕様書 WHERE 社内CD " like '" & SrcP1 & "'"
                           ------↑ここがうまく動作しません↑-------
rstA.Open Sql_kikaku, cnnH, adOpenForwardOnly, adLockReadOnly



If rstA.EOF And rstA.BOF Then

MsgBox "該当品が見当たりません" '←ここを通過するので抽出データがひとつもないようです
Exit Sub
End If

Do Until rstA.EOF
{表示したいリストボックス}.AddItem rstA![品名]
rstA.MoveNext
Loop

尚where文を削除すると、当然でしょうが全レコードが表示されます
また、検索文字は二つAND指定しようと思っていますが、とりあえず
一つ目が解決してからにしようと思っています。

問い方がわかりにくいかもしれませんが、どなたかご教授下さい。。

投稿日時 - 2011-03-17 23:11:27

QNo.6600543

困ってます

質問者が選んだベストアンサー

デバッグが通らないのでは?

SrcP1 = "" * " & StrConv({検索指定文字1}.Value, vbUpperCase + vbNarrow) & " * ""

SrcP2 = "" * " & StrConv({検索指定文字2}.Value, vbUpperCase + vbNarrow) & " * ""

'レコードセットを開く。"仕様書"というテーブルを参照のため開きます。

Set rstA = New ADODB.Recordset

Sql_kikaku = "SELECT * FROM 仕様書 WHERE 社内CD like '" & SrcP1 & "'"



それと、ワイルドカードは
「*」
ではなく、
「%」
したがって、

SrcP1 = "" * " & StrConv({検索指定文字1}.Value, vbUpperCase + vbNarrow) & " * ""

SrcP2 = "" * " & StrConv({検索指定文字2}.Value, vbUpperCase + vbNarrow) & " * ""



SrcP1 = "" % " & StrConv({検索指定文字1}.Value, vbUpperCase + vbNarrow) & " % ""

SrcP2 = "" % " & StrConv({検索指定文字2}.Value, vbUpperCase + vbNarrow) & " % ""

では?

投稿日時 - 2011-03-18 01:16:06

お礼

返答遅れてしまいすみません

すごく初歩的なことだったようで・・・このことで一週間ぐらい悩んでしまいました;;

「*」はアクセスでSQL書いた時に普通に通ってしまったのでこれでよいのかと思い込んでおりました。。。本当にありがとうございます!!

最終的に
SrcP1 = "%" & StrConv({検索指定文字1}.Value, vbUpperCase + vbNarrow) & "%"

でうまく動きました^ ^ 

投稿日時 - 2011-03-18 09:23:15

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問