MS-ACCESSで下記抽出条件を指定したクエリがあります。
Like "XB*" OR Not Like "*[0-9D]T"
MS-ACCESSのクエリ上では実行できる上記条件が、
VB.NETアプリを通してエクセルへエクスポートすると、
上記抽出条件が実行されません。
このため、VB.NET上でクエリの各データを採取する際にSQL検索を行えばよいと判断し、
下記のように指定していますが、「演算子がありません」と怒られてしまいます。
SELECT * FROM 差引在庫一覧表 WHERE Like "XB*" OR Not Like "*[0-9D]T$"
正規表現上の問題かと思うのですが、
VB.NET上でどのように指定すればよいものでしょうか。
SQL文内の「"」って「'」にしないとダメだったような気がします。
MS-ACCESS上からOKですけども。
SQLで「正規表現」による検索ってできましたっけ?
#ワイルドカードでは・・・
で、投稿されたSQLに、項目名が指定されていませんが・・・
投稿時の記述誤りですか?
後、
(http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200308/03080065.txt)
の様に、ワイルドカード文字は「*」とは限りませんよね。
・「"」→「'」へ変更
・「*」→「%」へ変更
としてみましたが、「演算子がありません」と出ています。
また、行末を示す「$」を消してもみましたが、変わりありません。
>大吉末吉殿
>項目名が指定されていませんが・・・
記述ミスでした。
現在は、下記のSQL文となっています。
SELECT * FROM 差引在庫一覧表 WHERE Like 'XB%' OR Not Like '%[0-9D]T'
VB.NETでクエリを読み込む場合は、
MS-ACCESSのmdbファイル内のクエリに指定されたSQL文(WHERE句)は実行されないのでしょうか・・。
>現在は、下記のSQL文となっています。
また、項目名を抜かしていました。すみません。
SELECT * FROM 差引在庫一覧表 WHERE 差引在庫一覧表.部品番号 Like 'XB%' OR Not Like '%[0-9D]T'
ケアレスミスでした。
ORの後ろに「項目名」を付けるのを忘れていたのが原因でした。
(ワイルドカードは、「*」ではダメで、「%」でないと正しい結果は得られませんでした)
下記SQL文が正しいものになります。助言ありがとうございました。
SELECT * FROM 差引在庫一覧表 WHERE (差引在庫一覧表.部品番号 Like 'XB%') OR (差引在庫一覧表.部品番号 Not Like '%[0-9D]T')
ツイート | ![]() |