MS Acess 2003-用于更新SQL查询的VBA?
嘿,伙计们,有人可以通过vb向我展示一下简单的更新查询吗?我需要向表中添加新字段(仅3个),并在表单上添加两个文本框,以便用户可以添加一些与记录相关的附加数据(这已经是此表单的基础) 所以我的第一个表单是一个填充列表的表单,当用户双击该列表中的一个选项时,它会打开一个新表单,这样绑定到该表单的表的ID就可以添加这些文本框了(此时,与一条记录相关的所有组合框和文本框都绑定到活动窗体,但所有组合框和文本框都未绑定。单击按钮时,已有vb将信息保存到表中)。我没有创建这个,但是,它是由一个不再存在的人创建的,显然在这方面比我做得更好。我的问题是,有太多的vb检查记录,以及基于大小写的各种sql语句,我无法将其解译为最简单的形式 因此,我正在寻找一个简单的例子,在vb中更新sql语句,以便我可以尝试打破这一点 我需要它根据ID:sql更新记录,其中RecordID=me.RecordID 事实上,我认为我知道如何根据示例执行此操作,但是每次尝试,然后尝试在单击按钮时运行时,我都会得到一个运行时错误,即语法错误,调试只是突出显示db.execute(sql)部分。因此,我试着获得sql语句的即时窗口,我觉得很好:MS Acess 2003-用于更新SQL查询的VBA?,sql,ms-access,vba,Sql,Ms Access,Vba,嘿,伙计们,有人可以通过vb向我展示一下简单的更新查询吗?我需要向表中添加新字段(仅3个),并在表单上添加两个文本框,以便用户可以添加一些与记录相关的附加数据(这已经是此表单的基础) 所以我的第一个表单是一个填充列表的表单,当用户双击该列表中的一个选项时,它会打开一个新表单,这样绑定到该表单的表的ID就可以添加这些文本框了(此时,与一条记录相关的所有组合框和文本框都绑定到活动窗体,但所有组合框和文本框都未绑定。单击按钮时,已有vb将信息保存到表中)。我没有创建这个,但是,它是由一个不再存在的人创
UPDATE tblMain
SET [Name] = "John Doe",
[DATE] = #9/30/2009#,
[TYPE] = "TypeA",
WHERE RecordID = 958;
我可以在不考虑表中每个字段的情况下更新表吗(因为这个表中大约有15个字段加上新的3个字段,所以我在这里忽略了大约14个字段,但无论如何我都不想修改它们
所以一如既往,我感谢亚尔的帮助!!谢谢
编辑:
对不起,我总是忘了这个…我实际上是在试
Dim db as DAO.Database
Dim sql as String
set db = CurrentDb
etc你差一点就成功了!你在上一列后面加了一个简单的逗号。去掉它,它就可以正常工作了
UPDATE tblMain SET
[Name] = "John Doe",
[DATE] = #9/30/2009#,
[TYPE] = "TypeA"
WHERE RecordID = 958;
是的,你完全可以只更新几列,而不是全部。顺便说一句,这是一个最佳实践
最后,用保留字(如“name”和“Date”)命名列被认为是一种不好的做法,但我知道您继承了这种做法。您明智地在代码中包含了Debug.Print sql。bpayne已经指出了sql语句中多余的逗号 我想指出另一种故障排除技术,您可能会发现它对调试SQL语句问题很有用 从即时窗口复制该语句,并将其粘贴到新查询的SQL视图中。在查询设计器中修改该查询,直到该查询正常工作,然后修改VBA代码以生成匹配的SQL语句
在这种情况下,您可能没有注意到多余的逗号。但是,您可以创建另一个新查询,并在查询设计器中从头开始构建UPDATE语句。在使该查询正常工作后,您可以将其SQL视图与失败的查询进行比较。您是否使用.NET Framework及其ActiveX数据对象.NET(ADO.NET)?如果我没记错的话,因为VBA和VB.NET的方式非常不同。即使VB6也有自己的ADO方式。哇,这是我应该知道的,唉,我不知道。我只能说它是MS XP操作系统,访问00-02/03,我想……你在00中工作,然后转换到02/03的方式有意义吗?我几乎不是新手谢谢!我明白了吃了它。是的,那些字段名实际上是ust;对于任何模糊的字段名,db中的字段名太多了!谢谢!我通常使用即时窗口而不是msgbox,因为对我来说,这更容易,但那只是我自己。好吧,所以我想这样做(从IW复制生成的sql语句并粘贴到查询对象的sql视图中),但是如何处理所有括号和括号???我还考虑反向计算sql语句(将其从sql视图转换为vba代码),但是sql字符串可以在vb中使用所有的括号和括号吗?谢谢!对不起,我不理解你对括号和括号的担心。另外一点:我通常在查询设计器中起草一个查询。然后使用VBA创建一个与查询的sql视图相匹配的sql语句。我的意思是,我正在学习这两者(sql和vba以及vb中的sql)因此,有时当我试图为具有多个表的排名前n位的查询等计算sql时,我必须使用查询生成器来学习sql。因此,我可以在vba字符串中使用这个确切的sql吗?因为从我在vba中了解的一点sql字符串,sql视图中存在的所有括号和括号,我不确定它们是否可以n在vba中使用sql字符串??很抱歉,这是一个更一般的问题,不特定于上述查询…只是以这种方式检查查询而已..谢谢如果vba生成的sql语句与工作访问查询的sql视图匹配,我认为括号和方括号不会有问题。但是,我认为查询设计器倾向于s添加的括号比严格要求的要多。因此,在构建VBA字符串等效项时,我通常会尽可能多地丢弃这些括号。谢谢Hans!我也很想知道这一点,因此非常感谢!