Queryについて

解決


tsuki  2002-02-20 11:05:53  No: 595  IP: [192.*.*.*]

こんにちはtuskiです。
Delphi5を使用しています。

Queryを使用して、SQLのSELECTで取得した値を変数へ格納したいのですが、
どのようにしたらよいのでしょうか?
変数Str: String;
Str:=Query1.Open;
上記のようにするとエラーになってしまいます。
もしよろしければ教えて頂きたいのですが。
よろしくお願いします。

編集 削除
にしの  2002-02-20 12:08:30  No: 596  IP: [192.*.*.*]

TQueryには、Fieldsプロパティがあります。
TFieldsには、TFieldクラスの配列があります。
このFields[インデックス]に、個々のデータが入っています。

TFieldクラスをヘルプで調べれば、TStringFieldや、TFloatFieldなどがあることが判ります。
文字列だけなら、TFieldのAsStringで取得できます。
詳しいことは、ヘルプで調べてみてください。

Openでどのようなエラーが出るんでしょうか。
それが分からないと、コメントしようがありません。SQLの記述間違いかもしれませんし、データベースがロックされているのかもしれません。

Openできれば、Nextで次のレコードを参照できます。

編集 削除
tsuki  2002-02-20 13:25:38  No: 597  IP: [192.*.*.*]

tsukiです。

お返事ありがとうございます。
記述がきちんとできてなくすみません。
Str:=Query1.Open;の時のエラーは以下の通りです。
[エラー] Test.pas(95): 'String' と 'procedure, untyped pointer or untyped parameter' には互換性がありません

SQLは
select Sakana from Sea where Sakana=:sqlstr;
上記の通りです。
もし、にしのさんが思っていたものと違えば・・すみません。
これからは気を付けます。

編集 削除
にしの  2002-02-20 16:06:34  No: 598  IP: [192.*.*.*]

なるほど、確かに見ればエラーが起きる記述でした。
Query1.Openは、プロシージャなので、値は返しません。
この場合は、Query1.ParamByName('sqlstr')に値がセットされているという前提で、
Query1.Open; // SQLを実行(SELECT)
Str := Query1.Fields[0].AsString;

こんな感じになります。
エラー処理や例外処理は別途用意してください。

編集 削除
tsuki  2002-02-20 16:30:23  No: 599  IP: [192.*.*.*]

tsukiです。
ありがとうございます。
無事解決しました。
これからは質問の記述に気を付けますので
よろしくお願いします。

編集 削除
マルチポストはマナー違反ですよ  2002-02-20 23:24:30  No: 600  IP: [192.*.*.*]

その前に、どうしてハンドルネームを変えてまでして
Cyclamen BBSにマルチポストしてるのかが分からない。
コピペで。

編集 削除
tsuki  2002-02-21 17:08:26  No: 601  IP: [192.*.*.*]

申し訳ありません。
すみませんでした。これからは気を付けます。

編集 削除