我和一个朋友已经尝试了几个小时,但几乎没有取得任何进展,以便为我们作为一个项目设计的发票系统获得一段正确的代码。
我们正在尝试将 InvoiceNo 字段更新为一个值(在前面的 VisualBasic 代码中计算出来),其中 CustomerNo 是一个特定值,FinishDate 介于两个日期之间。起初我试图使用 TO_DATE,但后来我们意识到 Access 使用的 SQL 中不一样(经过大量搜索)。
这是我一直在使用的简单语句,用于测试并尝试使某些东西起作用,然后转换为 VisualBasic 并放入我们的变量中。它更容易阅读,所以我想我会提供它。
UPDATE tblJob SET tblJob.InvoiceNo = '8' WHERE tblJob.CustomerNo = '1' AND (tblJob.FinishDate BETWEEN cdate(format('08/09/2013', '##/##/####')) AND cdate(format('03/10/2013', '##/##/####')));
看了几个例子后,我有一种感觉,我们的日期应该没有正斜杠。所以我尝试了它,它也没有工作。
这是从所有这些中得出的 VisualBasic 代码,它完全相同,但使用了一些变量,而不是我一直用于测试的设置值。
DoCmd.RunSQL ("UPDATE tblJob SET tblJob.InvoiceNo = '" & newInvoiceNo & "' WHERE tblJob.CustomerNo = '" & VbCustNo & "' AND (tblJob.FinishDate BETWEEN cdate(format('" & Forms![frmMainMenu][txtFirstDate] & "', '##/##/####')) AND cdate(format('" & Forms![frmMainmenu][txtEndDate] & "', '##/##/####')));")
我们看了一下:在 Access 中将字符串转换为日期,它帮助我们意识到它是 cdate(format()) 而不是 Oracle 中的 TO_DATE。但我们似乎无法让它正常运行,任何帮助将不胜感激。