TstoredProcで次のレコードを参照するには?

解決


ああああ  2016-07-01 01:27:44  No: 48213

Windows7でDelphi2007を使用しています。

主題通りなのですが、TstoredProcで次のレコードを参照するにはどうしたらよいでしょうか。

いろいろなホームページを見てきたのですが答えの見つかる情報はありませんでした。


igy  2016-07-01 02:56:42  No: 48214

TstoredProcは、使ったことがないのですが、
Nextメソッドで、データセット内の次のレコードに移動できませんか?


ああああ  2016-07-01 18:19:42  No: 48215

igy さん

返信遅くなりました。
Nextメソッド使用するとなぜかデータセットが閉じているというメッセージがでてしまうんです。


igy  2016-07-01 18:32:22  No: 48216

Open メソッドを呼び出すか,Active プロパティを true に設定しましたか?


ああああ  2016-07-01 21:01:59  No: 48217

OpenメソッドもActiveプロパティも
「カーソルハンドルの作成でエラーが発生しました」
と表示されてしまいます。

with StoredProc2 do
  begin
    Prepare;
    ParamByName('A').Value := A;
    ExecProc;
  end;

上記のように記述しています。


igy  2016-07-01 21:59:24  No: 48218

> ExecProc;

のかわりに Open メソッドを呼び出すか,Active プロパティを true に設定した場合も、同じですか?


ああああ  2016-07-01 22:48:54  No: 48219

> Open メソッドを呼び出すか,Active プロパティを true に設定した場合も、同じですか? 

同じです。


igy  2016-07-02 00:13:17  No: 48220

ちなみに、ストアド プロシージャから結果セットは返してますか?


ああああ  2016-07-02 01:35:20  No: 48221

はい。

ストアドプロシージャは問題ありません。

上記記述の方法でレコードの一番上だけは取得できますが、次のレコードに行く記述がわかりません。


MAD  URL  2016-07-03 21:10:27  No: 48222

C++Builderですが、以下で処理できています。

StoredProc1->Parameters->ParamByName("@A")->Value = "A";
StoredProc1->Active = true;
while(!StoredProc1->Eof) {
  // 処理
  StoredProc1->Next();
}
StoredProc1->Active = false;


ああああ  2016-07-06 20:42:03  No: 48223

Active=Trueにするとデータセットが閉じていますと表示されてしまいます。


ああああ  2016-07-28 18:58:48  No: 48224

遅くなりましたが、Queryコンポーネントからストアドプロシージャを呼び出すことによって解決しました。


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

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






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