2014-10-08 4 views
0

У меня есть проект, который добавляет и удаляет даты, добавить пункт есть следующий код:Команда DELETE не работают в VBA

Set dbs = CurrentDb 
dbs.Execute " INSERT INTO TMP " _ 
E " (diaMes) VALUES (" _ 
& "' " & Tmp7 & "') " 

где tmp7 является дата типа, как дд-мм-гггг и отлично работает

удаления является следующим кодом:

Set dbs = CurrentDb 
dbs.Execute " DELETE * FROM TMP " _ 
And " where diaMes = # " ​​& tmp7 & " # " ; 

проблема заключается в том, что удаление только день более чем на 12, я понимаю, если день равен менее 12 интерпретируются как дд-мм-гггг

tmp7 - строка конкатенации строк.

Как заставить SQL Pass dd-mm-yyyy?

+0

'CDate' будет преобразовать строку в дату, при условии, что в таком формате, который может быть converted.'Format (YourField,«Short Date»)' преобразует дату в дд/MM/yyyy. –

ответ

0

Доступ использует формат американской даты, поэтому даже при передаче DD/MM/YYYY он будет думать MM/DD/YYYY. Как вы ясно видите, даты более 12 понятны правильно. Пример 13/10/2014 будет пониматься как 13 октября 2014 года. Но 7/10/2014 на наших глазах - 7 октября 2014 года, но он не согласен с Access, поэтому он интерпретирует его как 10 июля 2014 года.

Так что ваша проблема может быть избегая его форматирования. Попробуйте использовать это,

Set dbs = CurrentDb 
dbs.Execute "DELETE * FROM TMP WHERE diaMes = " & _ 
      Format(tmp7, "\#mm\/dd\/yyyy\#") 
+0

Здравствуйте, я понимаю разрешение, но даю ошибку (Ожидаемое: выражение) – SaPires

+0

OOPS! Извините, я, похоже, потерял двойные кавычки. Не могли бы вы обратиться к отредактированному коду? – PaulFrancis

+0

Thks много, я не знаю, что Access имеет формат американской даты ... – SaPires

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