我正在使用Acceess 2007中的Northwind Microsoft Access数据库。在Orders表中有三个日期字段:OrderDate,RequiredDate和ShippedDate。
所有这些领域都在1994-1996。我正在尝试将其输入到ETL系统中,但该系统不允许超过15年的日期。
我想在这三个领域中增加10年。
我正在尝试这样的事情: 更新订单 设置OrderDate = DateAdd(“yyyy”,10,OrderDate)
...但收到错误“参数太少。预计1.” 当我看到这个错误时,它通常是使用的列名中的拼写错误,但我在这里没有看到它。有什么建议吗?
答案 0 :(得分:2)
问题绝对不是由于DateAdd
的语法错误造成的。此立即窗口示例演示了您的DateAdd
语法是否有效。
? DateAdd("yyyy",10,Date())
2/18/2024
它在VBA代码或查询中的工作方式相同。
请注意,Access字段可以包含 name 和 caption 属性。
当某个字段分配了字幕时,在许多情况下使用该字幕代替字段的名称。其中一种情况是直接在数据表视图中打开表。
因此,在您的情况下,该表可能包含一个字段,其标题为" OrderDate ",但实际的字段名称是其他内容。在查询中,您必须使用该名称,因为Access无法识别标题,假设它必须是参数,并且您希望为参数提供值。
检查表格设计,确保您在查询中使用实际字段名称。
您可以通过在Access查询设计器中构建查询来避免此问题。将其作为SELECT
查询启动,并从可用的字段名称中进行选择。在将其作为SELECT
正常工作后,您可以将其转换为实际需要的UPDATE
。
Access提供方便的手持功能。有时他们会按照自己的方式行事并变得烦人。但这是Access'有用的倾向可以真正有用。 : - )
原来我从Access 2007获得了Northwind的副本。至少在我的副本中,该字段被命名为" Order Date"。因此,标题不是罪魁祸首。只需括起字段名称,以便Access将其识别为"一件事"而不是两个。
UPDATE Orders
SET [Order Date] = DateAdd("yyyy",10,[Order Date]);
请注意,这是查询设计人员可以帮助您避免的另一个问题示例。
答案 1 :(得分:0)
我最终进入创建然后进入查询设计。在那里,功能区现在将设计显示为选项卡。我单击Update,然后单击SQL视图并粘贴它,然后切换到设计视图。保存查询后,我尝试运行它,由于某些安全功能被禁用,它失败了。我启用它并更新数据库确定。 最终这样做了:
UPDATE Orders SET RequiredDate = DateAdd("yyyy",10,RequiredDate);
UPDATE Orders SET OrderDate = DateAdd("yyyy",10,OrderDate);
UPDATE Orders SET ShippedDate = DateAdd("yyyy",10,ShippedDate);
感谢大家的帮助。
答案 2 :(得分:-2)
而不是DATEADD(“yyyy”,10,OrderDate)
将其设为DATEADD(年,10,OrderDate)