バックエンドJETデータベースを使用してAccess 2010で作業していて、そのデータベースに値を挿入しています。アクセスデータベースがVBAを使用して特定の値を持つ挿入を受け付けない
これは、(エラーのMSGが返されない)
insert into [PROJECT RESOURCE UPDATE HISTORY] ([Current Date], [Project Auto No Ref], [Resource ID Ref], [Allocation Notes], [Allocation Role],[Usage Percentage - Oct], [Usage Percentage - Nov], [Usage Percentage - Dec], [Usage Percentage - Jan], [Usage Percentage - Feb], [Usage Percentage - Mar], [Usage Percentage - Apr], [Usage Percentage - May],[Usage Percentage - Jun], [Usage Percentage - Jul], [Usage Percentage - Aug], [Usage Percentage - Sep]) values (#2/13/2017 11:01:41 AM#, 540,11,'','Project Manager',0,1,1,1,1,1,1,0,0,0,0,0)
をデータベースに挿入されませんが、これは
insert into [PROJECT RESOURCE UPDATE HISTORY] ([Current Date], [Project Auto No Ref], [Resource ID Ref], [Allocation Notes], [Allocation Role],[Usage Percentage - Oct], [Usage Percentage - Nov], [Usage Percentage - Dec], [Usage Percentage - Jan], [Usage Percentage - Feb], [Usage Percentage - Mar], [Usage Percentage - Apr], [Usage Percentage - May],[Usage Percentage - Jun], [Usage Percentage - Jul], [Usage Percentage - Aug], [Usage Percentage - Sep]) values (#2/13/2017 11:04:38 AM#, 540,821,'','DevOps',0,0.13,0.13,0.13,0.13,0.13,0.13,0,0,0,0,0)
を行い、ここに挿入する実際の処理を行い、コードのスニペットがある
sqlStatement2 = "insert into [PROJECT RESOURCE UPDATE HISTORY] (" & _ "[Current Date], [Project Auto No Ref], [Resource ID Ref], [Allocation Notes], [Allocation Role]," & _ "[Usage Percentage - Oct], [Usage Percentage - Nov], [Usage Percentage - Dec], [Usage Percentage - Jan]," & _ "[Usage Percentage - Feb], [Usage Percentage - Mar], [Usage Percentage - Apr], [Usage Percentage - May]," & _ "[Usage Percentage - Jun], [Usage Percentage - Jul], [Usage Percentage - Aug], [Usage Percentage - Sep] " & _ ") values (" & _ "#" & Now() & "#," & _ rst![Current Project Ref No] & "," & rst![Current Resource Person ID] & ",'" & rst![Current Allocation Notes] & _ "','" & rst![Current Allocation Role] & "'," & CDbl(oct) & "," & CDbl(nov) & "," & CDbl(dec) & _ "," & CDbl(jan) & "," & CDbl(feb) & "," & CDbl(mar) & "," & CDbl(apr) & _ "," & CDbl(may) & "," & CDbl(jun) & "," & CDbl(jul) & "," & CDbl(aug) & _ "," & CDbl(sep) & ");" MsgBox (sqlStatement2) CurrentDb.Execute (sqlStatement2) rst.MoveNext
私は、この問題が最初の例でデータベースに1を挿入することを想定していると思います。データベースはエラーを報告しないため、行は表示されません。値を1から0.99に変更すると、それが正しく挿入され、データベースに表示されます。 私が試してみました物事との観測:
また、私は私のVBAコードに挿入ステートメントを実行する前に手動でCDBL()関数を使用して、二重に1を変換しようとしています。私は、行のように次の値に行IDをスキップし、値1を持つ最初の挿入の後のコードを壊す場合
は
を挿入し、他にどこ私が見ることができますか?
私はあなたが1.0の値をハードコードしていればうまくいくと思います。あなたの地域の設定は何ですか、私は1,1,1を数字として解釈するのだろうか? – Minty
* "データベースはエラーを報告しません" * - 'CurrentDb.Execute sqlStatement2、dbFailOnError'を試してみて、動作が異なるかどうか確認してください。 –
@gordThompson dbFailOnErrorを使用すると、テーブル自体の検証エラーであることがわかりました。ありがとう! – Tino