ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 280|回复: 7

[求助] 求SQL Server和Access数据库获取受影响行数的代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-6-19 08:13 来自手机 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
请教各位大侠,用excel vba操作SQL Server和access数据库时,更新或插入数据时能够获取受影响行数的代码,非常感谢!

TA的精华主题

TA的得分主题

发表于 2024-6-19 08:32 来自手机 | 显示全部楼层
SQL Server 有个全局变量@@RowCount,其实这么简单的问题,为啥不问下人工智能或者搜索引擎?都2024年了,还不会用人工智能简直就是新时代的文盲啊

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-6-19 10:44 来自手机 | 显示全部楼层
一招秒杀 发表于 2024-6-19 08:32
SQL Server 有个全局变量@@RowCount,其实这么简单的问题,为啥不问下人工智能或者搜索引擎?都2024年了, ...

我说的是在EXCEL里面用VBA操做数据库,获取受影响的行数,就是没有找到答案,才求大侠帮忙的。

TA的精华主题

TA的得分主题

发表于 2024-6-19 14:06 | 显示全部楼层
  1. '*****************************************************************************************
  2. '函数名:    AddDelMove
  3. '函数功能:  执行SQL语句,一般为添加、修改删除语句
  4. '返回值:    返回影响的行数:-2是错误提示
  5. '参数1:     StrSQL     字符类型   SQL查询语句
  6. '参数2:     Str_coon   字符类型   链接语句
  7. 'Str_coon = "Provider=Microsoft.JET.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=yes';Data Source=" & ThisWorkbook.FullName      '//OFFICE2003
  8. 'Str_coon = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=yes';Data Source =" & ThisWorkbook.FullName     '//OFFICE2007
  9. 'Str_coon = "HDR=yes';Data Source =" & FileArr(i)    '//OFFICE2003,2007 通用
  10. '使用方法: StrSQL = "DELETE FROM 双色球 WHERE 总序号>1440"
  11. '           StrSQL="insert into [sheet1$k2:l6] (f1,f2) values (9,'mine')"
  12. '           IntX= AddDelMove(StrSQL, Str_coon)
  13. '*****************************************************************************************
  14. Public Function AddDelMove(ByVal StrSQL As String, ByVal Str_coon As String) As Long    '//执行SQL语句,一般为添加、修改删除语句
  15.     On Error Resume Next    ' 改变错误处理的方式。
  16.     Dim iRowscount As Long
  17.     Dim CN
  18.    
  19.     Rem Str_coon = "HDR=yes';Data Source=" & ThisWorkbook.FullName
  20.     If InStr(UCase(Str_coon), "=SQLOLEDB") > 0 Or InStr(UCase(Str_coon), "={MYSQL") > 0 Then
  21.         Rem 如果链接的是MSSQL 或者MySQL 则使用原来的链接字符串, 不做任何处理
  22.         Rem Str_coon ="Driver={MySql ODBC 5.3 Unicode Driver};Server=myqcloud.com;Port=7139;DB=test;UID=用户名;PWD=密码;OPTION=3;"    '//外网MySQL  没有:WWW   192.168.1.05   没有:\\
  23.         Rem Str_coon = "Provider=SQLOLEDB;Server=192.168.1.103;Database=XieXin;Uid=sa;Pwd=1005;"       '//SQLServer2005局域网, 广域网链接   192.168.1.05   没有:\\
  24.     Else
  25.         Rem  如果链接: ACCESS Exce 或者WPS
  26.         If InStr(UCase(Application.Path), "WPS") > 0 Then
  27.             Rem 如果是WPS中使用,  必须是4.0版本的
  28.             If InStr(UCase(Str_coon), "PROVIDER=") = 0 Then
  29.                 Rem 如果是简化的链接字符  就补全
  30.                 Str_coon = "Provider=Microsoft.JET.OLEDB.4.0;Extended Properties='Excel 8.0;" & Str_coon
  31.                 Rem  完整的WPS链接字符
  32.                 Rem Str_coon = "Provider=Microsoft.JET.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=yes';Data Source=" & ThisWorkbook.FullName
  33.             End If
  34.         Else
  35.             If InStr(UCase(Str_coon), "PROVIDER=") = 0 Then
  36.                 Rem 如果是简化的链接字符  就补全
  37.                 If Val(Application.Version * 1) < 12 Then
  38.                     Rem 2003及以下版本的  使用4.0版本引擎
  39.                     Str_coon = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;" & Str_coon
  40.                 Else
  41.                     Rem 2007及以上版本的  使用12.0版本引擎
  42.                     Str_coon = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;" & Str_coon
  43.                 End If
  44.             End If
  45.         End If
  46.     End If
  47.    
  48.     Err.Clear
  49.     If StrSQL = "" Then AddDelMove = -2: Exit Function
  50.    
  51.     Set CN = CreateObject("Adodb.Connection") '//新建一个ADO连接
  52.     CN.Open Str_coon
  53.     CN.Execute StrSQL, iRowscount, adCmdText  '//执行SQL语句,返回影响的行数
  54.     Rem CN.Execute(StrSQL,iRowscount)  iRowscount操作记录数,比如你插入10条数据,10条数据插入成功,那这个x就等于10
  55.    
  56.     If Err.Number <> 0 Then
  57.         MsgBox "Error: " & Err.Description
  58.         AddDelMove = -2
  59.     Else
  60.         AddDelMove = iRowscount
  61.     End If
  62.    
  63.     CN.Close  '//关闭ADO连接
  64.     Set CN = Nothing  '//释放内存
  65. End Function
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-6-19 18:52 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
opiona 发表于 2024-6-19 14:06

代码优秀,谢谢大侠!

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-6-19 19:21 来自手机 | 显示全部楼层
本帖最后由 F9458808 于 2024-6-19 19:23 编辑

[quote]F9458808 发表于 2024-6-19 18:52
代码优秀,谢谢大侠![/quo

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-6-19 19:23 来自手机 | 显示全部楼层
opiona 发表于 2024-6-19 14:06

大侠,能不能再请你帮忙写个代码,就是多人操作SQL Server和Access数据库,解决并发问题,加锁的VBA代码,感谢!

TA的精华主题

TA的得分主题

发表于 2024-6-20 11:12 | 显示全部楼层
F9458808 发表于 2024-6-19 19:23
大侠,能不能再请你帮忙写个代码,就是多人操作SQL Server和Access数据库,解决并发问题,加锁的VBA代码 ...

多人操作SQL Server和Access数据库  没问题 啊
什么情况 还需要特意去下锁, 我到目前还没用过
https://club.excelhome.net/thread-1635846-1-1.html

查询就不用说了
修改时 下锁  是占用时间太长吗?
可以看看我的百万级数据 秒级保存
https://club.excelhome.net/thread-1666858-1-1.html
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 19:05 , Processed in 0.043518 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表