確認のため実験してみました。
環境:
Oracle8.1.6(WGS)、Access2000、Access2000のリンクテーブルとしてテーブルをODBCを使ってアタッチ。
SQL> create table h_test (test1 number(12));
表が作成されました。
SQL> insert into h_test (test1) values(123456789012);
1行が作成されました。
SQL> insert into h_test (test1) values (123456789);
1行が作成されました。
ACCESS側の処理Execute,RunSQLともに結果は同じ:
Sub test_2()
Dim DB As DAO.Database
Dim StSQL As String
Set DB = CurrentDb
DoCmd.SetWarnings False
StSQL = "insert into TEST2 (test1) select test1 from H_TEST"
DoCmd.RunSQL StSQL
DoCmd.SetWarnings True
DB.Execute StSQL
End Sub
ACCESS側test1フィールドを以下の型にした場合
Long→123456789012のデータが正しく挿入されない(Null)
Double→どちらも正しく挿入
ご質問のエラーは出ませんでした。
#1で見当違いなことを言って申し訳ありません。
>オーバーフローのエラー
については、モジュール中の変数で出ているのでは無いでしょうか?
質問者
お礼
わざわざテストまでしていただきありがとうございます。
こちらの環境はOracle8.1.6(WGS)+Access97ですが
Oracle8i(8.1.7)+Access97でも同様の現象を確認しています。
変数のせいではないかとの事ですので変数を使わず、
値をセットしてみましたが結果は同じでした。
Whereで条件を指定しているのですがWhere条件を外したところ
RunSQL、Executeとも正常に動作しましたので条件指定が原因かと思われます。
where フィールド名 = 変数
where フィールド名 = 値
where フィールド名 In(変数)
where フィールド名 In(値)
のどの場合でもExecuteではエラーとなってしまうので
とりあえずRunSQLを使うことにします。
ありがとうございました
お礼
わざわざテストまでしていただきありがとうございます。 こちらの環境はOracle8.1.6(WGS)+Access97ですが Oracle8i(8.1.7)+Access97でも同様の現象を確認しています。 変数のせいではないかとの事ですので変数を使わず、 値をセットしてみましたが結果は同じでした。 Whereで条件を指定しているのですがWhere条件を外したところ RunSQL、Executeとも正常に動作しましたので条件指定が原因かと思われます。 where フィールド名 = 変数 where フィールド名 = 値 where フィールド名 In(変数) where フィールド名 In(値) のどの場合でもExecuteではエラーとなってしまうので とりあえずRunSQLを使うことにします。 ありがとうございました