2

我有一个LotusScript(8.5.3)例程,它使用ODBC将视图(8.5.3)中的Notes数据写入到Microsoft Access 2010数据库。我正在使用类似于下面的SQL语句来编写数据。我遇到的问题是语法将Notes日期/时间值设置为Access 2010日期/时间值。什么是从LotusScript写入MS Access中日期/时间数据字段的SQL查询语法?

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

当我执行,我得到了以下错误:

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query >expression 'd '06/23/2010'}'

我敢肯定,我的语法是错误的,但我已尽力,我在网上找到了,没有上引用多个语法似乎工作。

有人可以真正知道语法应该是什么,并有代码正在工作,请给我正确的语法。

更新:我试过的语法如下:

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

当我执行,我得到了以下错误:

[Microsoft][ODBC Microsoft Access Driver] Syntax error in date in query expression '#'.

感谢,

MJ

+0

@HansUp我更新了原始信息和您的建议结果。它至少知道这是一个约会。 – 2013-03-21 15:30:55

+1

看起来LotusScript使用管道字符('|')作为字符串分隔符,所以我不太明白'>'在那里做什么。此外,你目前错过了关闭')'。 – 2013-03-21 15:31:25

+1

另一个提示:当你的日期被转换为一个字符串时,确保它以“mm/dd/yyyy”或“yyyy/mm/dd”结尾。如果它变成'dd/mm/yyyy',你会遇到问题。明确指定日期格式总是最好的,这样您就不会被具有不同区域设置的机器搞乱。 (顺便说一句,'mm-dd-yyyy'和'yyyy-mm-dd'也有效。) – 2013-03-21 15:44:50

回答

2

HansUp的评论是答案。以下是Syntax最终的结果:

我第一次运行它时遇到的问题是它遇到了NULL日期,所以它不知道如何处理它。所以,我疯了以下变化:

If revdate.DateOnly="" then rdate="01/01/1900" 'This is Access' equivalent to null date else rdate=revdate.DateOnly end if

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

感谢您的帮助。

MJ