如何在access中同时提交多条sql语句

bciAnson 2004-10-09 12:43:41
在vb中我们通常会自己做一些运行sql语句的函数,在函数中我们会做一些异常和事务的处理,所以要提交多条sql语句时也很方便的。如下:
dim mySQL as string
mySQL="insert into 某表(col1,col2) values (value1,value2)" & chr(13) & _
"update 某某表 .........." & chr(13) & _
"delete 某某某表........."
if myExecSQL(mySQL) = False then 'myExecSQL就是自己写的函数,用来提交sql语句
msgbox "提交数据库失败"
else

end if
以上这些对于连ms sqlserver来说当然没有问题了。但连access就不行了,系统会说";"分号没有发现。我知道ms sqlserver用的是T-SQL,而access用的不是,具体的忘了,知道有些区别。
请问如何在access中同时提交多条sql语句呢?

...全文
1079 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
changechange 2004-10-10
  • 打赏
  • 举报
回复
4、ACCESS查询是否可以连续执行多条 JET SQL 语句,是否可以将多条JET SQL 语句写在一个查询里面


4、前面已经说过,ACCESS 查询只支持单条的 JET SQL 语句,因此如果你要执行多条语句请使用 VBA 调用 ADO 或者 DAO 来完成,比如:

Dim strSQL As String
strSQL = "insert into mruser (userid,upass,uname) values ('11','sss','ww')"
CurrentProject.Connection.Execute strSQL
strSQL = "update mruser set upass='sss',uname='ww', userid='11'"
CurrentProject.Connection.Execute strSQL



如果要考虑数据结构完整性请使用 ADO 支持的事务处理
关于此主题请参考:
《查询》什么是事务处理?怎么进行事务处理?
http://access911.net/index.asp?u1=a&u2=71FABE1E13DC
关于此主题请参考:
关于事务处理《查询》
http://access911.net/index.asp?u1=a&u2=73FABF1E14DC



关于此主题请参考:
用一个JET SQL 语句一次插入多行值到指定表中(“值”来自变量)《查询》
http://access911.net/index.asp?u1=a&u2=71FAB21E12DCECF3
关于此主题请参考:
jet sql是否支持程序流分支?是否能像存储过程那样使用变量?《查询》
http://access911.net/index.asp?u1=a&u2=72FAB51E17DCE9F3
bciAnson 2004-10-10
  • 打赏
  • 举报
回复
这里找到答案
http://community.csdn.net/Expert/topic/3439/3439320.xml?temp=.7296259
=========================================================
zyg0(影子(努力吃饭中))
调用我写的韩素做这件事
Public Function Exsql(ParamArray sql()) As Boolean
'事务执行多个sql语句,为可选参数

dim cn as string
Dim cnConn As ADODB.Connection
Set cnConn = New ADODB.Connection
Dim mysql
On Error GoTo err1

cn=""
'连接字符串自己写
cnConn.Open CN
cnConn.BeginTrans '开始一个事务

For Each mysql In sql
cnConn.Execute mysql
Next
cnConn.CommitTrans '提交一个事物

Set cnConn = Nothing
Exsql = True
Exit Function
err1:
cnConn.RollbackTrans '回滚一个事物
Exsql = False
End Function
bciAnson 2004-10-10
  • 打赏
  • 举报
回复
up
蓝帆·雨轩 2004-10-09
  • 打赏
  • 举报
回复
建议还是改成多条,逐条执行吧.Access和SQL Server是不同的。
Vicky79 2004-10-09
  • 打赏
  • 举报
回复
用事务处理
victorycyz 2004-10-09
  • 打赏
  • 举报
回复

你在myExecSQL函数中根据mySQL中的回车符拆分mySQL成多条语句进行查询操作即可。调用的语法就可以不改动。

bciAnson 2004-10-09
  • 打赏
  • 举报
回复
victorycyz(中海)
================
你的方法行不通,因为回车不代表回车后的sql是新的另一条sql,如下
update 某表 '<Enter>
set 字段=... '<Enter>
where ...... '<Enter>
delete from 某表 ....'<Enter>
以上是只是两条SQL.

7,714

社区成员

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

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