ADOQueryでパラメータを使うには?


みゅう  2004-01-20 01:42:27  No: 6818

ADOQueryで、以下のSQLを記述しているのですが、ActiveをTrueにすると、『ORA-01036 変数の名前/数が無効です』とエラーが表示されてしまいます。
ObjectBrowser上でこのSQLを実行すると、正常に動きます。またパラメータを指定せずに、値を直接記述しても正常に動きます。
また、自分のテーブル(TEST.がつかない場合)を指定すると正常に動きます。
初心者なので、説明が不十分かと思いますが、原因をご存知の方がいらっしゃいましたら、教えてください。宜しくお願いいたします<(_ _)>

<バージョン>
Delphi7
Oracle9i Release 2 Provider for OLE DB Version 9.2.0.2.0
MDAC 2.8
Oracle9.2.0.1.0
です。

<SQL>
select
  *
from
  TEST.コードマスタ
where
  ID = :no


HOta  2004-01-20 03:56:12  No: 6819

:noがパラメターになっていますので、これに値を入れないと変数に値が入っていません。
queryを開く前に
ADOQuery1.ParamByName('no').AsString := marumaru;
などとセットします。


みゅう  2004-01-21 17:37:44  No: 6820

HOtaさん、お返事ありがとうございます<(_ _)> 
(昨日はお休みしてしまってお返事が遅くなって申し訳ございません...)

説明不足でごめんなさい。
フォームの画面で、SQLの結果をグリッド上に表示するため、オブジェクトインスペクタでプロパティのActiveの値をTrueにすると、『ORA-01036 変数の名前/数が無効です』が出てしまうのです。
プロパティのParametersにパラメータを設定し、任意の値を指定して実行しています。
自分のテーブルのものだとパラメータがあっても、ちゃんとグリッド上に表示されるのですが...

また、HOtaさんがおっしゃられるようにプログラム内でパラメータをセットして、queryを実行しても同じエラーが出てしまいます...

他の人のパソコンからだとうまく動くので、なんか壊れちゃったんでしょうか...?
MDACとOLE DB はインストールしなおしたんですが...


HOta  2004-01-22 06:07:47  No: 6821

DataBaseに接続できていないのでは無いでしょうか?
TDataBaseの設定はどのようになってますか?


この場合  2004-01-22 19:58:41  No: 6822

サーバーからエラーが返っているのでデータベースには接続できてると
思いますけど。


この場合  2004-01-22 19:59:00  No: 6823

サーバーからエラーが返っているのでデータベースには接続できてると
思いますけど。


みゅう  2004-01-22 20:47:33  No: 6824

HOtaさん、この場合さん ありがとうございます。

パラメータを指定せずに、値を直接記述(ID='300')すると正常に動作するのでデータベースには接続できていると思います。
パラメータがあることと、別?のテーブルをみているのが気にいらないようです。パラメータをなしにするか、自分のテーブルにすると正常に動くんです...

別のパソコン(WinXP、Oracle9.2、Delphiなし)で同じExeを実行すると
同じエラー『変数の名前/数が無効です』が表示されました。
WinXpでOracle9の環境だと動かないのでしょうか...

同じ環境(WinXp,Oracle9.2,Delphi7)の方で、試していただける方がいらっしゃいましたら結果を教えていただけないでしょうか?
宜しくお願いいたします <(_ _)>


オラクルの環境がないので分かりませんが  2004-01-22 20:59:00  No: 6825

WHERE句を下記に変えてみたらどうですか?

select
  *
from
  TEST.コードマスタ
where
  TEST.コードマスタ.ID = :no


みゅう  2004-01-22 22:09:34  No: 6826

オラクルの環境がないので分かりませんが さん ありがとうございます。

TEST.コードマスタ.ID = :no に変えてみましたが、同じエラー『変数の名前/数が無効です』が表示されました...


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

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






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