Excel内のデータをSQLで検索するには

解決


  2004-11-08 18:54:28  No: 117426

EXCELをSQL文を使って検索しようとしているのですが実行時エラー3061、パラメータが少なすぎます1を指定してくださいと出ます。自分のコードのどこかがおかしいと思うのですが分かる方いましたら教えてくださいよろしくお願いします。環境はXPでVB6です。検索しようとしているのはIDで、K41B000のようなデータを検索しようとしています。

 Dim ws As DAO.Workspace
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim strXLSName As String
    Dim strSQL As String

    strXLSName = App.Path & "\test.xls"

    Set ws = DBEngine.Workspaces(0)
    Set db = ws.OpenDatabase(strXLSName, False, False, "EXCEL 8.0;HDR=YES;")
            LabelCondition.Caption = searchNum
            

            strSQL = "SELECT * FROM [Sheet1$] WHERE [ID] = " & searchNum
            Debug.Print strSQL
            Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)


葉月  2004-11-08 19:07:02  No: 117427

ただ単にSQLがおかしいのでは?
WHERE文を要チェキ!だと思います

searchNumが数値か文字列かを要確認!
その後記述方法要確認!(デバッグプリントしてるから見てみるべし)


B  2004-11-08 19:15:15  No: 117428

早速の返信どうもありがとうございます。searchNumは数字とアルファベットの文字列です。デバッグプリントではstrSQLの値が
SELECT * FROM [Sheet1$] WHERE [ID] = K41B000
となっています。Where文がおかしいとの事なのですが、SQL文自体がおかしいという事でしょうか?


葉月  2004-11-08 20:13:39  No: 117429

普通文字列を検索する時は
''や場合によっては""等でくくりませんか?

K41B000が項目名として取られてしまい
値がないよ!=パラメータがないよ!
と怒られていると思うのですが


特攻隊長まるるう  2004-11-08 20:23:53  No: 117430

>普通文字列を検索する時は
>''や場合によっては""等でくくりませんか?
ちょっと分かりにくい(『''(シングルクオーテーション2つ)』が『"(ダブルクオーテーション)』に見える)
ので補足ですが、SQL文で、どこからどこまでが『データとしての文字列』
を表すか?を指定するには『'(シングルクオーテーション)』を使います。

SELECT * FROM [Sheet1$] WHERE [ID] = 'K41B000'

となるように文字列編集してみてください。


  2004-11-08 20:27:17  No: 117431

葉月さんありがとうございます。
試しにstrSQL = "SELECT * FROM [Sheet1$] WHERE [ID] ='K41B000'"
と入れるとエラーもなく大丈夫なのですが、問題が一つありまして、それはこの''の中に変数であるsearchNumをどう入れるかという事なんですがどうすればいいのでしょうか?よろしくお願いします。


  2004-11-08 20:31:51  No: 117432

特攻隊長まるるうさん、補足ありがとうございます。
WHERE [ID] = 'K41B000'のシングルクオートの中に変数を代入すれば動く所までできました。シングルクオートの中に変数をどうにかして入れたいのですが方法をご存知でしょうか?よろしくお願いします。


葉月  2004-11-08 20:37:40  No: 117433

要領は
strSQL = "SELECT * FROM [Sheet1$] WHERE [ID] = " & searchNum
と一緒です

strSQL = "SELECT * FROM [Sheet1$] WHERE [ID] = '" & searchNum & "'"
としてしまえばいいのです
シングルコーテーションも所詮は文字列なので連結処理するだけです


  2004-11-08 20:49:52  No: 117434

葉月さん、特攻隊長まるるうさん最後までありがとうございます。無事プログラムが出来ました。私はもっと勉強が必要ですね、将来ここでアドバイスできるようにもっと頑張ります。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加