ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 根据工作表批量更新数据库(不使用循环)2007求助

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-3-21 12:30 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
各位老师,SQL修改数据库时因数据量很大,用循环方式代码修改很费时,能否将下面的循环代码改用数组方式的SQL语句代码?谢谢指教!
For I = 10 To Range("A65536").End(xlUp).Row
      If Cells(I, 1) <> "" Then '
        SQL = "update 学生档案 set  学校名称='" & [D5] & "',学校地址='" & [D6] & "'" _
            & "where 学生编号=" & Cells(I, 1).Value & "" '
        cnn.Execute SQL
      End If
    Next
学校名称:
上海复旦大学附中
学校地址:
上海市杨浦区杨浦路1239号
学生编号姓名性别出生日期
籍贯
住址家庭电话年级班级特长
100001
王兵
36547
四川
解放路219号
6640065
1年级
A班
乒乓球
100002
严匡斌
36547
江西
建康路213号
3647354
1年级
A班
100003
周天昊
36534
广东
北环路294号
2293323
1年级
A班
绘画,书法
100004
王晓斌
36507
湖南
北京路290号
3988312
1年级
A班
航模,钢琴,乒乓球
100005
李祯
36502
黑龙江
建设路263号
5844306
1年级
A班
100006
韩迎
36496
上海
北京路227号
6241022
1年级
A班
100007
王鑫
36494
广西
南新路214号
4087883
1年级
A班
100008
王从波
36472
广东
建康路282号
5782051
1年级
A班
航模,钢琴,乒乓球
100009
周斌
36461
广东
南新路155号
8425003
1年级
A班
100010
高国峰
36450
湖南
海滨路225号
7674460
1年级
A班
100011
于啸鹏
36425
湖南
海滨路267号
3766945
1年级
B班
长跑
100012
张翌
36425
上海
国庆路214号
3894342
1年级
B班
100013
黄晴
36406
广东
北京路111号
2591161
1年级
B班
100014
杨拯国
36385
上海
安源路272号
5294141
1年级
B班
武术,舞蹈

今天不知是什么原因网站不能上传附件,所以只能贴上,请见谅。

TA的精华主题

TA的得分主题

发表于 2019-3-21 14:46 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-21 14:58 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-3-21 15:12 | 显示全部楼层
update 学生档案 set  学校名称='上海复旦大学附中',学校地址='上海市杨浦区杨浦路1239号'
         where 学生档案.学生编号=Newtable.学生编号

把xls表格导入到SQL Server数据库 中,表格名称是Newtable

这样试一下。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-21 18:11 | 显示全部楼层
魂断蓝桥 发表于 2019-3-21 15:12
update 学生档案 set  学校名称='上海复旦大学附中',学校地址='上海市杨浦区杨浦路1239号'
         where ...

老师您好!我将ACCESS替代SQL数据库,请您帮我试试,谢谢!
批量更新数据库求助.rar (323.3 KB, 下载次数: 6)

TA的精华主题

TA的得分主题

发表于 2019-3-22 10:02 | 显示全部楼层
忘得快 发表于 2019-3-21 18:11
老师您好!我将ACCESS替代SQL数据库,请您帮我试试,谢谢!
  1. '引用Microsoft ActiveX Data Objects 2.x Library
  2. Sub updateaddRecords2007()
  3.     Dim cnn As New ADODB.Connection, sql$, MYF$, m%
  4.     myPath = ThisWorkbook.Path & "\学校管理.accdb"
  5.     myTable = "学生档案"
  6.     MYF = ThisWorkbook.Name
  7.     cnn.Open "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & myPath '连接数据库
  8.     sql = "(select  学生编号,姓名,""" & Sheet2.[D5] & """ AS 学校名称,""" & Sheet2.[D6] & """ AS 学校地址" & " from [Excel 12.0;Database=" & ThisWorkbook.Path & "" & MYF & "].[数据$a9:b] where 学生编号 is not null) as a "
  9.     sql = "UPDATE 学生档案 INNER JOIN " & sql & " ON 学生档案.学生编号=a.学生编号 SET 学生档案.学校名称= a.学校名称,学生档案.学校地址=a.学校地址"
  10.     cnn.Execute sql, m
  11.     MsgBox "更新OK,更新" & m & " 条数据"
  12.     Set cnn = Nothing
  13. End Sub
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-3-22 10:09 | 显示全部楼层
代码审核中,附件上传不了,只能给你个图片了。
捕获.PNG


sql = "(select  学生编号,姓名,""" & Sheet2.[D5] & """ AS 学校名称,""" & Sheet2.[D6] & """ AS 学校地址" & " from [Excel 12.0;Database=" & ThisWorkbook.Path & "\" & MYF & "].[数据$a9:b] where 学生编号 is not null) as a "
    sql = "UPDATE 学生档案 INNER JOIN " & sql & " ON 学生档案.学生编号=a.学生编号 SET 学生档案.学校名称= a.学校名称,学生档案.学校地址=a.学校地址"

TA的精华主题

TA的得分主题

发表于 2019-3-22 10:10 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-22 14:36 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-22 21:06 | 显示全部楼层

老师您好!您的这个代码用于ACCESS数据库能正常运行,但用于SQL Server数据库出错,提示:
出错信息.jpg
请教这是什么原因?如何修改代码?谢谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-26 11:52 , Processed in 0.049432 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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