Каков синтаксис SQL-запроса для записи в поле данных даты / времени в MS Access из LotusScript?

У меня есть подпрограмма LotusScript (8.5.3), которая записывает данные Notes из представления (8.5.3) в базу данных Microsoft Access 2010 с помощью ODBC. Я использую оператор SQL, аналогичный приведенному ниже, для записи данных. Проблема, с которой я столкнулся, заключается в том, чтобы синтаксис получить значение даты / времени Notes для значения даты / времени Access 2010.

strSQL = | INSERT INTO DATASHEET ("DocumentNumber", "RevisionNumber", "RevisionDate") VALUES ('|> + docnum + |', '| + docrevnum + |', {d '| + revdate.DateOnly + |'} |

Когда я выполняю это, я получаю следующую ошибку:

[Microsoft] [ODBC Microsoft Access Driver] Синтаксическая ошибка (отсутствует оператор) в запросе> выражение 'd '06 / 23/2010'} '

Я уверен, что мой синтаксис неправильный, но я пробовал несколько синтаксисов, на которые я нашел ссылки в Интернете, и ни один из них, похоже, не работает.

Может ли кто-нибудь, кто действительно знает, каким должен быть синтаксис и имеет работающий код, дайте мне правильный синтаксис.

ОБНОВЛЕНИЕ: я пробовал следующий синтаксис:

strSQL = | INSERT INTO DATASHEET ("DocumentNumber", "RevisionNumber", "RevisionDate") VALUES ('|> + docnum + |', '| + docrevnum + |', # | + revdate.DateOnly + | # |

Когда я выполняю это, я получаю следующую ошибку:

[Microsoft] [ODBC Microsoft Access Driver] Синтаксическая ошибка даты в выражении запроса '#'.

Спасибо,

MJ


person Mike Jackson    schedule 21.03.2013    source источник
comment
@HansUp Я обновил исходное сообщение результатами вашего предложения. По крайней мере, он знает, что это свидание.   -  person Mike Jackson    schedule 21.03.2013
comment
Похоже, что LotusScript использует вертикальную черту (|) в качестве разделителя строк, поэтому я не совсем понимаю, что там делает >. Кроме того, в настоящее время вам не хватает закрывающего ).   -  person Gord Thompson    schedule 21.03.2013
comment
Еще один совет: когда ваша дата преобразуется в строку, убедитесь, что она заканчивается как mm/dd/yyyy или yyyy/mm/dd. Если он закончится как dd/mm/yyyy, у вас будут проблемы. Всегда лучше явно указывать формат даты, чтобы вас не запутали машины с разными региональными настройками. (Кстати, mm-dd-yyyy и yyyy-mm-dd тоже работают.)   -  person Gord Thompson    schedule 21.03.2013


Ответы (1)


Комментарий HansUp был ответом. Ниже приведен синтаксис:

Проблема, с которой я столкнулся, когда я впервые запустил его, заключалась в том, что он натолкнулся на NULL-дату, поэтому он не знал, как ее обработать. Итак, я сошел с ума от следующих изменений:

Если revdate.DateOnly = "" then rdate = "01/01/1900" 'This is Access' эквивалентно нулевой дате иначе rdate = revdate.DateOnly end if

strSQL = | INSERT INTO DATASHEET ("DocumentNumber", "RevisionNumber", "RevisionDate") VALUES ('|> + docnum + |', '| + rdate + |', # | + revdate.DateOnly + | # |

Спасибо за помощь.

MJ

person Mike Jackson    schedule 21.03.2013