MS Access 2003 - 用于更新SQL查询的VBA?

时间:2009-09-26 16:00:44

标签: sql ms-access vba

嘿伙计们,有人可以通过vb向我展示简单的更新查询吗?我需要向表中添加新字段(仅3个)并在表单上添加几个文本框,以便用户可以添加一些相对于记录的附加数据(这已经是此表单的基础)。

所以我的第一个表单是填充列表的表单,当用户双击该列表中的选项时,它会打开一个新表单,以便与此表单关联的表的ID我需要添加这些文本框(相对于一个记录的所有组合框和文本框此时都绑定到活动表单,但是所有未绑定。在按钮单击时,已经有vb将信息保存到桌子)。然而,我并没有创造它,它是由不再存在的人建造的,显然在这方面比我好。我的问题是,有太多的vb检查记录,以及各种基于case的sql语句,我无法将其解读为最简单的形式。

所以我在vb中寻找一个更新sql语句的简单例子,所以我可以尝试将它分开。

我需要它根据ID更新记录:sql WHERE RecordID = me.RecordID

我实际上认为我知道如何根据示例执行此操作,但每次尝试时,然后尝试按下按钮运行,我得到SYNTAX错误的运行时错误,并且调试只是突出显示db.execute (sql)部分。所以我试着得到sql语句的结果立即窗口,它对我来说很好看:

UPDATE tblMain 
   SET [Name] = "John Doe", 
       [DATE] = #9/30/2009#, 
       [TYPE] = "TypeA", 
 WHERE RecordID = 958;

我是否可以在不考虑表格中的每个字段的情况下更新表格(因为这个字段大约有15个加上新的3个,所以我在这里忽略了大约14个字段,但我不想改变它们呢?< / p>

一如既往,我很感激帮助你!谢谢!

编辑:

对不起,我总是忘记这一点....我正在尝试DAO ....

  Dim db as DAO.Database
  Dim sql as String
  set db = CurrentDb

2 个答案:

答案 0 :(得分:4)

你很亲密!在最后一列之后,您有一个简单的额外逗号。摆脱它,它工作正常。

UPDATE tblMain SET 
[Name] = "John Doe", 
[DATE] = #9/30/2009#, 
[TYPE] = "TypeA" 
WHERE RecordID = 958;

是的,您绝对只能更新几列而不是全部列。这是最好的做法,BTW。

最后,在“姓名”和“日期”之类的保留字之后命名列是不好的做法,但我知道你继承了这个。

答案 1 :(得分:2)

您最好在代码中包含 Debug.Print sql 。 bpayne已经在你的SQL语句中指出了额外的逗号。

我想指出另一种可能对调试SQL语句问题有用的故障排除技术。

从立即窗口复制语句,并将其粘贴到新查询的SQL视图中。在查询设计器中修改查询,直到可以使其工作,然后修改VBA代码以生成匹配的SQL语句。

在这种情况下,您可能没有注意到额外的逗号。但是,您可以创建另一个新查询,并在查询设计器中从头开始构建UPDATE语句。在使用它之后,您可以将其SQL视图与失败的查询进行比较。