mdbに対してのクエリー

解決


岸田光明  2004-12-29 13:10:18  No: 12520  IP: [192.*.*.*]

おせわになります。

今回、Delphi7で、DBExpress等を使い下記のSQL文を実行してみたた際に

-----------------------------------------------------------
Query1.SQL.Add('SELECT * FROM fuji_tb where name="高島彩"');
-----------------------------------------------------------

MYSQLだと、きちんと処理がされるのに、ACCESS2003のMDBファイルだと
-----------------------------------------------------------
ODBC  Microsoft Access Driver パラメーターが少なすぎます。1を指定してください。
-----------------------------------------------------------
と、エラーが出てしまいます。

そこで、下記のようにabcと入れた場合はだいじょうぶようなので
-----------------------------------------------------------
Query1.SQL.Add('SELECT * FROM fuji_tb where name=abc');
-----------------------------------------------------------
たぶん全角が使えないのだと思うのですが、対処方をおしりになりましたら
是非教えていただきたいのですが

よろしくおねがいいたします。

編集    削除
HOta  2004-12-29 21:00:11  No: 12521  IP: [192.*.*.*]

これは、ACCESS2003側で、SELECT * FROM fuji_tb where name="高島彩"が正常に動作するかどうかの問題でしょう。
ただ、SELECT * FROM fuji_tb where name=abcが通るのが解せません。

編集    削除
@っしー  2004-12-29 21:21:24  No: 12522  IP: [192.*.*.*]

Access2003 は持ってないので、未確認なんですが。

Where句をパラメータ渡しで処理すると、どうなりますか?

編集    削除
通りすがり  2004-12-29 21:53:26  No: 12523  IP: [192.*.*.*]

Query1.SQL.Add('SELECT * FROM fuji_tv where name="高島彩"');
でなくて
こんな気がしますが。。。
Query1.SQL.Add('SELECT * FROM fuji_tv where name=''高島彩''');
勘違いでしたらごめんなさい。

編集    削除
岸田光明  2004-12-29 22:48:41  No: 12524  IP: [192.*.*.*]

HOtaさん、@っしー さん、通りすがりさんありがとうございます。

原因は、通りすがりさんの指摘通り”ではなく''でした。
MYSQLでは通っているのに違ったんですね

@っしー さんの言っていました、パラメーター渡しとは
オブジェクトインスペクターのSQLにSQLを書いて
変数で渡すやつだと思うのですが、やりかたが判らず
これから勉強したいと思います。

今回はどうもありがとうございました。
今後とも宜しくおねがいいたします。

編集    削除