次のクエリを実行すると:
INSERT INTO outRawTbl
SELECT *
FROM (select * from [out|noRFI_BS_noRT]
union all
select * from [out|noRFI_BS_RT]) AS [%$##@_Alias];
次のエラーが表示されます。
Microsoft Access set 3854 field(s) to Null due to a type conversion failure
次のようにクエリを実行すると:
INSERT INTO outRawTbl
SELECT *
FROM (select * from [out|noRFI_BS_noRT]
union
select * from [out|noRFI_BS_RT]) AS [%$##@_Alias];
その後、この型変換エラーは発生せず、すべてのデータが正常に挿入されます。UNION ALL
クエリのフィールドの一部はメモ フィールドであり、使用すると 255 文字に切り捨てられるため、使用する必要がありますUNION
。
クエリから一度に 1 つずつフィールドを挿入しようとすることはできると思いますが、各クエリには約 50 のフィールドがあり、それには多くの時間がかかります。で問題を引き起こしているフィールドをすばやく見つける方法はありUNION ALL
ますか?
編集:別の問題を解決して発見しました。INSERT
を使用する代わりに 、クエリを個別の操作として実行するというゴードンのアイデアを採用しUNION ALL
ました。次に、次のコードを使用して、クエリの各フィールドを反復処理し、個別の挿入を行って、変換エラーの原因となったフィールドを見つけました。
Sub findProblemField()
Dim qdf As QueryDef
Dim sql As String
Dim fld As Field
For Each qdf In CurrentDb.QueryDefs
If InStr(qdf.Name, "out|") Then
For Each fld In qdf.Fields
sql = "insert into outrawtbl select top 1 " & _
"[" & qdf.Name & "].[" & fld.Name & "] from [" & qdf.Name & "]"
CurrentDb.Execute sql, dbFailOnError
Next
End If
Next
End Sub
これにより、SELECT
クエリの文字列であるフィールドの1つが宛先フィールドの日付/時刻であり、空の文字列値がエラーをスローしていることがわかった. 現在、この問題の解決に取り組んでいます...