请问如何一次性执行多条SQL语句

pehacker01 2008-06-05 05:00:45
在access数据库中,我有很多数据要替换,用嵌套REPLACE :
update 表名 set 字段名=Replace(Replace(Replace(Replace(Replace(字段名, 'a', '1'), 'b', '2'), 'C', '3'), 'D', '4'), 'E', '5')
但好象只能嵌套25层,如果我有1000个这样的数据要替换的话,就要执行类似的SQL语句40条,手工一条条的执行很麻烦。
请问有没有办法一次性执行完这样的40条语句呢?如果可以用宏搞掂的话,希望能给出完整的宏代码,感谢。。。
...全文
640 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
pehacker01 2008-06-14
  • 打赏
  • 举报
回复
建立的对照表结构如下:
库名:words.mdb
表名:words1
字段1:keywords 字段2:replace
数值: a 1
数值: b 2
数值: c 3
数值: ... ...

要替换的数据库的表的字段为:data.mdb-->data1(表名)-->Resource(字段名)
这样的VBA代码:

-------------------------------------------
Sub ADOConnect()
Dim cnn As ADODB.Connection 定义连接
Dim myre As ADODB.Recordset 定义记录
Set cnn = New ADODB.Connection
Set myre = New ADODB.Recordset
cnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\words.mdb;Persist Security Info=False" 连接数据库
cnn.Open 打开数据库
myre.CursorLocation = adUseClient
myre.Open "words1", cnn, adOpenDynamic, adLockOptimistic, adCmdTable 打开数据库中表名为words1的表
Do While Not myre.EOF()
CurrentDb.Execute "update data1 set Resource=Replace(Resource,'" & a & "'" & ",'" & b & "')"
myre.MoveNext
Loop

End Sub
-------------------------------------------
运行后无出错提示,但没有达到替换的效果,请问代码错在哪里,应该如何修改呢?

ccssddnnhelp 2008-06-13
  • 打赏
  • 举报
回复

推荐你看一下这些帮助


ACCESS 2003 Help 下载
VBA参考 下载
Access VBA 参考下载
JET SQL HELP 下载
SQL 1992
DAO 3.6 Manual 下载
ActiveX Data Objects 2.5 Reference 下载
数据库系统概论PPT.
==== ====

.
贴子分数<20:对自已的问题不予重视。
贴子大量未结:对别人的回答不予尊重。
.
ccssddnnhelp 2008-06-13
  • 打赏
  • 举报
回复

你的
'a', '1'
'b', '2'
'C', '3'
'D', '4'
'E', '5'

放在哪里了? 如果很多,可以放在数据库的一张表中。
然后直接用VBA来实现。

VBA程序很简单,用一个ADO打开刚才的对照表,逐一记录生成update语句执行即可。

关键的方法。 ADO, recordset,
do while not rs.eof
conn.execute "update tbl set fld=replace('"&rs.fields(0).value&"','"&rs.fields(1).value&"')"
rs.movenext
loop

具体的代码就帮你写了。可以直接参考帮助.
==== ====

.
贴子分数<20:对自已的问题不予重视。
贴子大量未结:对别人的回答不予尊重。
.
pehacker01 2008-06-13
  • 打赏
  • 举报
回复
师傅们,我对这个问题还是没解决.
上几天是用:update 表名 set 字段名=Replace(Replace(Replace(Replace(Replace(字段名, 'a', '1'), 'b', '2'), 'C', '3'), 'D', '4'), 'E', '5')
这个笨方法替换了1500多个数值,(在ACCESS SQL窗口手工执行了50,60次.头昏眼花啊:(

这两天又看了VBA的用法,语句什么的,还是找不到门路.不会建这样的数组.我的基础太差了:(,老师们可否给出完整的代码,让菜鸟的我,只要相应的修改一下a值,b值这些的,就可以直接运行的呢?感谢啊...

想到如果以后要替换1万多数值,甚至更多的话,头都大了;(
pehacker01 2008-06-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wwwwb 的回复:]
如是在ACCESS中,可以用数组存放被替换的值与替换值,
重复运行UPDATE语句。
[/Quote]

是ACCESS数据库,未接触过数组,看不明白.可否举个实例来说明一下呢?
wwwwb 2008-06-05
  • 打赏
  • 举报
回复
OR
将被替换的值与替换值存入临时表,rr(bdh,dh)
set ff=currentdb.openrecordset("rr")
do while not ff.eof()
currentdb.execute "update tt set f1=Replace(字段名,'" & bdh & "'" & ",'" & dh & "')"
ff.movenext
loop
wwwwb 2008-06-05
  • 打赏
  • 举报
回复
如是在ACCESS中,可以用数组存放被替换的值与替换值,
重复运行UPDATE语句。
FCU 2008-06-05
  • 打赏
  • 举报
回复
健议用数组:

var
tem: Tstring;

begin
tem := TString.create(self);
tem.add();.....



然后进行遍例就可以了
ccssddnnhelp 2008-06-05
  • 打赏
  • 举报
回复

直接在VBA中通过currentproject.connection.execute "update ..."
每个a', '1'
'b', '2'
。。。
单独UPDATE就可以了。.
==== ====

.
贴子分数<20:对自已的问题不予重视。
贴子大量未结:对别人的回答不予尊重。
.
wwwwb 2008-06-05
  • 打赏
  • 举报
回复
a(1)='a'
b(1)='b'
currentdb.execute "update tt set f1=Replace(字段名,'" & a(1) & "'" & ",'" & b(1) & "')"
wwwwb 2008-06-05
  • 打赏
  • 举报
回复
思路与放到临时表中替换是一样的。

7,712

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧