SQLでDataGridに表示させる場合


みゆ  2003-08-24 05:10:13  No: 108217  IP: [192.*.*.*]

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 12:57:25  No: 108218  IP: [192.*.*.*]

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

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

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

以上。

編集 削除
ねろ  2003-08-24 15:29:23  No: 108219  IP: [192.*.*.*]

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

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

こんな感じになります。

編集 削除
魔界の仮面弁士  2003-08-25 02:19:09  No: 108220  IP: [192.*.*.*]

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 10:37:55  No: 108221  IP: [192.*.*.*]

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

編集 削除
クリリン  2003-08-25 13:18:49  No: 108222  IP: [192.*.*.*]

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

編集 削除