Office中国论坛/Access中国论坛

标题: 如何用VBA代码来表示更新查询? [打印本页]

作者: hzwyj    时间: 2009-2-16 18:52
标题: 如何用VBA代码来表示更新查询?
如何用VBA代码来表示更新查询呢?语法应该是什么样的?谢谢指教了!!
作者: todaynew    时间: 2009-2-16 19:02
dim sql as string
sql="UPDATE 表 SET 字段 = 更新值;"
docmd.runsql sql

或者:

docmd.runsql "UPDATE 表 SET 字段 = 更新值;"
作者: hzwyj    时间: 2009-2-16 19:13
因为我的更新查询特别长,我这样设了后,提示语法错误码:sql="UPDATE 生产日记录表 SET 生产日记录表.粉碎总产量 = Forms!生产日记录表!Text45, 生产日记录表.入库合格品总量 = Forms!生产日记录表!Text43, 生产日记录表.投入原材料总量 = Forms!生产日记录表!Text44, 生产日记录表.配料产生不良品量 = Forms!生产日记录表!Text59, 生产日记录表.生产完后产生粗粉量 = Forms!生产日记录表!Text105, 生产日记录表.投入杂料回用料量合计 = Forms!生产日记录表!Text51, 生产日记录表.投入待加粉量合计 = Forms!生产日记录表!Text107, 生产日记录表.当场消化错料量合计 = Forms!生产日记录表!Text111, 生产日记录表.新箱入库数量 = Forms!生产日记录表!Text128, 生产日记录表.旧箱入库数量 = Forms!生产日记录表!Text126, 生产日记录表.[25KG新箱入库数量] = Forms!生产日记录表!Text165, 生产日记录表.[20KG新箱入库数量] = Forms!生产日记录表!Text167, 生产日记录表.[25KG旧箱入库数量] = Forms!生产日记录表!Text169, 生产日记录表.[20KG旧箱入库数量] = Forms!生产日记录表!Text171
WHERE (((生产日记录表.生产单编号)=[Forms]![生产日记录表]![生产单编号]));"
作者: todaynew    时间: 2009-2-16 19:21
本帖最后由 todaynew 于 2009-2-16 19:29 编辑

可采用
sql=“字符串”
sql=sql+“字符串”
多用几次sql=sql+“字符串”,便可逐步将sql语句赋值了

sql="UPDATE 生产日记录表 "
sql=sql+"SET 粉碎总产量 = Forms!生产日记录表!Text45, 入库合格品总量 = Forms!生产日记录表!Text43, 投入原材料总量 = Forms!生产日记录表!Text44, 配料产生不良品量 = Forms!生产日记录表!Text59, 生产完后产生粗粉量 = Forms!生产日记录表!Text105, "
sql=sql="投入杂料回用料量合计 = Forms!生产日记录表!Text51, 投入待加粉量合计 = Forms!生产日记录表!Text107, 当场消化错料量合计 = Forms!生产日记录表!Text111, 新箱入库数量 = Forms!生产日记录表!Text128, 旧箱入库数量 = Forms!生产日记录表!Text126, "
sql=sql+"[25KG新箱入库数量] = Forms!生产日记录表!Text165, [20KG新箱入库数量] = Forms!生产日记录表!Text167, [25KG旧箱入库数量] = Forms!生产日记录表!Text169, [20KG旧箱入库数量] = Forms!生产日记录表!Text171 "
sql=sql+"WHERE (((生产日记录表.生产单编号)=[Forms]![生产日记录表]![生产单编号]));"

还可以写成:
sql="UPDATE 生产日记录表 "
sql=sql+"SET 粉碎总产量 = " & me.Text45 & ", 入库合格品总量 = " & me.Text43 & ", 投入原材料总量 = " & me.Text44..........
作者: Henry D. Sy    时间: 2009-2-16 19:25
CurrentDb.Execute比docmd.runsql好
作者: hzwyj    时间: 2009-2-16 19:26
请问,我不是太理解啊,能不能帮我稍稍写一下啊?谢谢
作者: todaynew    时间: 2009-2-16 19:30
请问,我不是太理解啊,能不能帮我稍稍写一下啊?谢谢
hzwyj 发表于 2009-2-16 19:26

改了,后面用me的没有写完,你仿写吧,不是很难。
作者: hzwyj    时间: 2009-2-16 19:38
谢谢todaynew,我分开写后就可以了。我看了henry D.SY所写的“CurrentDb.Execute比docmd.runsql好”,请问,这如何表达呢?好在什么地方呢?请教两位,谢谢!!
作者: todaynew    时间: 2009-2-16 19:50
谢谢todaynew,我分开写后就可以了。我看了henry D.SY所写的“CurrentDb.Execute比docmd.runsql好”,请问,这如何表达呢?好在什么地方呢?请教两位,谢谢!!
hzwyj 发表于 2009-2-16 19:38


他也给我推荐了好几次,我没怎么用过。好像是速度快一些吧。详细的需要他解释,呵呵。
作者: hzwyj    时间: 2009-2-16 19:55
那就再请教一下henry D.SY 吧,谢谢
作者: Henry D. Sy    时间: 2009-2-16 20:10
性能好,特别是在数据量大时更明显,
而且,不会弹出警告对话框
作者: yangzhesheng    时间: 2009-6-14 13:45
看看
作者: dddd042821    时间: 2009-6-23 11:44
学习了




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3