質問

情報を複数のテーブルに保存し、それらを中央のテーブルにリンクする複雑なプロセスを合理化しようとしています。リンクは、各テーブルで生成されたIDENTITY値を使用して行われ、一意のリンクを提供します。 SET NOCOUNT ONとSELECT @@ identityの組み合わせを使用して各IDを取得できることは知っていますが、それでも各テーブルに対して個別のSQLExecute()を呼び出す必要があります。私はADOがODBCドライバーを使用して複数のレコードセットを処理できるという記事を何十も読んでいます。そのため、質問はADOなしでどうすればいいですか?

ADOに似た動作をするために、すべての標準ODBCをすでにカプセル化しました。基本的には、ODBC API呼び出しでADOのNextRecorset()を再作成できるかどうかを知る必要があります。

必要に応じて、SQL Server ODBCまたはSQL Native Clientドライバーのいずれかを使用して、MS SQL 7とMS SQL 2005の組み合わせに取り組んでいます。

目標の終了:

SET NOCOUNT ON;
INSERT INTO TableA (data) VALUES ('a');
SELECT @@identity AS  NewID;
INSERT INTO TableB (data) VALUES ('b');
SELECT @@identity AS  NewID;
INSERT INTO TableC (data) VALUES ('c');
SELECT @@identity AS  NewID;
...
RS = DB.OpenRecordset()
RS.MoveFirst()
A_ID = RS.GetValue("id")
RS.NextRecordset()
RS.MoveFirst()
B_ID = RS.GetValue("id")
RS.NextRecordset()
RS.MoveFirst()
C_ID = RS.GetValue("id")
役に立ちましたか?

解決

NextRecordSet()関数の類似物として、 SQLMoreResults()呼び出しを使用します。

ただし、実行を INSERT ...で構成する場合は、おそらく必要ありません。 SELECT @@ IDENTITY このステートメントから返される結果はIDのみであるため、 SQLMoreResults()に煩わされる必要はありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top