2017-02-13 11 views
1

Im работает в Access 2010 с базой данных JET Database, вставляя значения в эту базу данных.База данных Access не принимает вставки с определенным значением с помощью VBA

Это не вставляет в базу данных (не сообщ ошибки не возвращается)

 
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. Я также попытались вручную преобразованиями 1 в два раз с помощью функции CDbl(), прежде чем я сделать заявление вставки в моей УВЕ.

  2. Если я нарушу код после первой вставки со значением 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 был неудачным.

 Смежные вопросы

  • Нет связанных вопросов^_^