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

解決


ああああ  2016-06-30 16:27:44  No: 48213  IP: 192.*.*.*

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

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

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

編集 削除
igy  2016-06-30 17:56:42  No: 48214  IP: 192.*.*.*

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

編集 削除
ああああ  2016-07-01 09:19:42  No: 48215  IP: 192.*.*.*

igy さん

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

編集 削除
igy  2016-07-01 09:32:22  No: 48216  IP: 192.*.*.*

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

編集 削除
ああああ  2016-07-01 12:01:59  No: 48217  IP: 192.*.*.*

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

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

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

編集 削除
igy  2016-07-01 12:59:24  No: 48218  IP: 192.*.*.*

> ExecProc;

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

編集 削除
ああああ  2016-07-01 13:48:54  No: 48219  IP: 192.*.*.*

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

同じです。

編集 削除
igy  2016-07-01 15:13:17  No: 48220  IP: 192.*.*.*

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

編集 削除
ああああ  2016-07-01 16:35:20  No: 48221  IP: 192.*.*.*

はい。

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

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

編集 削除
MAD  URL  2016-07-03 12:10:27  No: 48222  IP: 192.*.*.*

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

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

編集 削除
ああああ  2016-07-06 11:42:03  No: 48223  IP: 192.*.*.*

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

編集 削除
ああああ  2016-07-28 09:58:48  No: 48224  IP: 192.*.*.*

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

編集 削除