SQLでDataGridに表示させる場合


みゆ  2003-08-24 14:10:13  No: 108217

SQL文で抽出条件を記述して、DataGridに表示できません。
DBはAccessです。

    mySQL2 = "select SYA.社員番号,SYA.名前,・・(省略)・・where・・ " _
             & "and SYA.社員番号 = ""1000"""

上記の条件では、うまく表示できましたが、下記の条件ではうまくいきません。

    mySQL2 = "select SYA.社員番号,SYA.名前,・・(省略)・・where・・ " _
             & "and SYA.社員番号 like ""*" & syain.text & "*"""

Accessの選択クエリを使って試してみると、ちゃんとデータの抽出とテーブルの
表示はできてます。

原因がさっぱり分かりません。
誰かアドバイス下さい。お願いします。


岡田 之仁  2003-08-24 21:57:25  No: 108218

LIKEの使い方に誤りがありますが・・・

通常、『*』ではなく、『%』ですが・・・

DAOをお使いですよネ?
ADOでも同じですが、『%』でLIKEの解釈を行いますので、修正して
試して下さい。

以上。


ねろ  2003-08-25 00:29:23  No: 108219

クエリーの条件文の文字列は
" ではさむのではなく  'ではさみます

途中が省略されていてわからない所も在りますが....
mySQL2 = "select SYA.社員番号,SYA.名前,・・(省略)・・where・・ " _
  & " and SYA.社員番号 like '*'" & syain.text & "'*'"

こんな感じになります。


魔界の仮面弁士  2003-08-25 11:19:09  No: 108220

DataGrid、という事は ADO接続ですよね。

その場合、JETのANSI-92クエリモードが使用されますので、
Like演算子のワイルドカードは、"%", "_"になります。
つまり、"*" のかわりに "%" を使って、
  mySQL2 = "SELECT SYA.社員番号, SYA.名前, …… " _
         & " AND SYA.社員番号 LIKE '%" & Syain.Text & "%' "
という感じですね。

> Accessの選択クエリを使って試してみると、ちゃんとデータの抽出と
「Accessの選択クエリ」画面やDAOでは、ANSI-89クエリモードが
使用されますので、ワイルドカードは、"*", "?"となるのです。

ただしAccess2002では、オプション設定を変更する事によって、
クエリ画面でもANSI-92モードを利用できます。

# ANSI-89 SQLモードと ANSI-92 SQLモードの違いに付いては、
# Access 2000または2002のヘルプを参照して下さい。

もう一つ。Like未使用時には表示できているので、大丈夫だとは思いますが、
mdbファイルの内容をDataGridに表示させる時は、ADODB.Recordsetの
(あるいは、ADOデータコントロールの)CursorLocationプロパティを
adUseClientモードにしておいて下さい。そうしないと表示できません。

もしも adUseServerモードで接続したいのであれば、あらかじめ
IRowsetIdentityダイナミックプロパティをTrueにしておく必要があります。
http://support.microsoft.com/default.aspx?scid=kb;ja;224192

ねろさん:
> クエリーの条件文の文字列は
> " ではさむのではなく  'ではさみます
JETの場合は、「"」、「'」のどちらで挟んでも良かったりします。(^-^A

ちなみに、文字列を16進数表記で表す事もできたりします。
……まぁ、まず使う事が無い表現方法だとは思いますけれども。
 SELECT * FROM [テーブル] WHERE [列] = 0x715C2C67

# Access 97/JET 3.5x以下の場合は、Shift_JISの16進数。
# Access 2000/JET 4.0以上の場合は、UTF-16BEの16進数。


ねろ  2003-08-25 19:37:55  No: 108221

魔界の仮面弁士さん
JETでは「"]と「']両方使えるんですね!
確かに手元にある"ACCESS"の本には「"」が使ってありました。
”使えるということと”、”私が知らなかったことと”
両方驚きました。
今後とも御教授よろしく。m__m


クリリン  2003-08-25 22:18:49  No: 108222

>JETでは「"]と「']両方使えるんですね!
出来れば、「'」で挟むようにする癖をつけておいた方がいいですよ。
今後はオラクル、SqlServerなどを使うようになる時に「"]で挟むと実行できない事が多いです。例えば、SQL*Plusなど・・・


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

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






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