※ ChatGPTを利用し、要約された質問です(原文:Access にて DISTINCROW を使用した INSERT SELECT)
AccessにてDISTINCTROWを使用したINSERT SELECT
このQ&Aのポイント
Access2003 VBAでDoCmd.RunSQLを使用する際に、DISTINCTROW句を使用した場合には数百件しかINSERTできない問題があります。数千件のデータをINSERTする方法はありますか?
SELECT文では、DISTINCTROW句を使用しても数千件の結果を表示することができますが、INSERTの場合には制限があります。
試しにDISTINCTROWではなく、SQL文を変更してDISTINCTを使用した場合、2000件以上のデータをINSERTできました。
Access にて DISTINCROW を使用した INSERT SELECT
お世話様です。
Access2003 VBAにて、DoCmd.RunSQLを使用してSQL文を流す際、
普通のINSERT-SELECT文はOKですが、
そのSELECT文にDISTINCROW句を使用していると、
数百件程度のSELECT結果しかINSERTできません。
本当は数千件のSELECT結果をINSERTしたいのですが、
これを実行した場合、エラーにもならず、1レコードもINSERTされません。
ためしに、DINSTINCTROWではなく、SQL文を変更してDISTINCTにしてみたところ、
2000件以上でもINSERTできました。
DISTINCROW句を使用して数千件でもINSERTできる方法はあるでしょうか?
ちなみにSELECT単体ですと、DISTINCTROWを使用していながら、
数千件でも結果を表示できます。
SQL例:
str_SQL = " INSERT INTO 結果テーブル(フィールド1, フィールド2, フィールド3)
SELECT DISTINCTROW A.項目1, A.項目2, B.項目1
FROM テーブル1 A, テーブル2 B
(WHERE句はあってもなくても現象変わらず)
ORDER BY A.項目4 ASC, A.項目5 ASC "
DoCmd.RunSQL (str_SQL)
よろしくお願いいたします。
お礼
早速のご返答、ありがとうございます。 CurrentDb.Execute を使用しても、現象変わらずでした。 ちなみに、INSERT項目数を減らしてみたところ、INSERTできていました。 DISTINCTROW句を使用した場合、何か最大INSERTバイト数のようなものが存在するのでしょうか。。。 まだ調べ切れていません。