2017-02-13 7 views
1

バックエンド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に変更すると、それが正しく挿入され、データベースに表示されます。 私が試してみました物事との観測:

  1. また、私は私のVBAコードに挿入ステートメントを実行する前に手動でCDBL()関数を使用して、二重に1を変換しようとしています。私は、行のように次の値に行IDをスキップし、値1を持つ最初の挿入の後のコードを壊す場合

を挿入し、他にどこ私が見ることができますか?

+0

私はあなたが1.0の値をハードコードしていればうまくいくと思います。あなたの地域の設定は何ですか、私は1,1,1を数字として解釈するのだろうか? – Minty

+1

* "データベースはエラーを報告しません" * - 'CurrentDb.Execute sqlStatement2、dbFailOnError'を試してみて、動作が異なるかどうか確認してください。 –

+1

@gordThompson dbFailOnErrorを使用すると、テーブル自体の検証エラーであることがわかりました。ありがとう! – Tino

答えて

0

データベースでエラーが返されず、行が表示されません。 .Executeメソッドのデフォルトの動作は

CurrentDb.Execute (sqlStatement2) ' with no second argument 

は、クエリが困難に遭遇した場合、エラーがスローされないようになるようなものであるので。だ

CurrentDb.Execute sqlStatement2, dbFailOnError 

だから、.Executeは、なぜINSERTが失敗したのかを伝えることができます。

関連する問題