ExcelVBA连接MySQL数据库遇到的巨坑
笔者在工作中,经常使用 Excel VBA查询和汇总数据,非常方便,但最近遇到个麻烦,怎么也解决不了,今天整理出来还请高手帮忙指导。
一、原始数据
数据库名称:corn
表:成品出库
查询代码:SELECT date , sht_id , customer, product , 小袋规格 , 大袋规格 FROM `成品出库`
where customer = "何现锋" and product = "达育5158"
查询结果如下图(经核对与原始数据一致):
查询结果
二、Excel VBA 连接MySQL数据库
连接代码:Option Explicit
Sub GetDataFromMysql()
Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String, customer_name$
Dim sh As Worksheet
Dim i As Integer
Set sh = Sheets(2)
sh.Range("A1:L500").Clear
"连接数据库
con.ConnectionString = "driver={MySQL ODBC 8.0 unicode Driver};server=localhost;uid=wyj;pwd=wyj;database=corn;port=3306;"
con.Open
customer_name = Sheets(2).Range("M2").Value
sql = "select date,customer,address,product,小袋规格,大袋规格 from 成品出库 where customer like "%" & customer_name & "%" "
rs.Open sql, con, adOpenStatic, adLockOptimistic
"设置表头
"sh.Range("A1:E1").Value = Array("ID", "date", "name", "salary", "other")
For i = 0 To rs.Fields.Count - 1
sh.Cells(1, i + 1) = rs.Fields(i).name
Next i
"输出结果
sh.Range("A2").CopyFromRecordset rs
"关闭连接,释放内存
rs.Close
con.Close
Set rs = Nothing
Set con = Nothing
End Sub
运行代码后查询结果:
"巨坑"来了,大家注意看product列中品种名称达育5158,只显示:达育51。丢失了部分数据。
连接数据库查询结果
三、VBA连接EXCEL检查查询结果
代码:Option Explicit
Sub QueryFromExcel()
Dim Conn As Object, Rst As Object
Dim strConn As String, strSQL As String
Dim i As Integer, Path As String
Dim customer_name As String
Set Conn = CreateObject("ADODB.Connection")
Set Rst = CreateObject("ADODB.Recordset")
Path = "E:/public/历年报表/玉米报表2022.7.13.xls"
Select Case Application.Version * 1
Case Is <= 11
strConn = "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=excel 8.0;Data source=" & Path
Case Is >= 12
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Path & ";Extended Properties=""Excel 12.0 ; HDR =YES"";"
End Select
"设置SQL查询语句
customer_name = Sheets(2).Range("M2").Value
strSQL = "SELECT date,customer,address,product,小袋规格,大袋规格 FROM [成品出库$] where customer like "%" & customer_name & "%"" _
& "or address like "%" & customer_name & "%"or product like "%" & customer_name & "%"or description like "%" & customer_name & "%" "
Conn.Open strConn "打开数据库链接
Set Rst = Conn.Execute(strSQL) "执行查询,并将结果输出到记录集对象
With Sheet2
.Range("A1:L1000").Clear
For i = 0 To Rst.Fields.Count - 1 "填写标题
.Cells(1, i + 1) = Rst.Fields(i).name
Next i
.Range("A2").CopyFromRecordset Rst
End With
Rst.Close "关闭数据库连接
Conn.Close
Set Conn = Nothing
Set Rst = Nothing
End Sub
如图所示结果显示正常:
VBA 连接 Excel查询结果
不知道为什么,非常无奈,请哪位知道的高手朋友帮忙看看问题出在哪里?
女人想你了,不会直说,但会主动对你说这些话文森屿鹿林喜欢一个人,是相见时的欢喜,分别后的想念。一旦心里住进了某个人,就会心心念念,牵挂不已,整个思绪都被对方所牵引着。或许,之前单身的时候,她并未被任何东西所牵绊,不知道思念
(小诗)寒假,走走走过你走过的路题记奔波忙碌于教育教学的征程中,放不下,倦于心。想找一个时间,找一个地点,放松放松心情,放空放空心灵雪花飘飘洒洒,漫山遍野披银装许你一张春天的请柬彩云朝南飘过,停留在你走过最美的天
勿以善小而不为,暖心之举治愈需要之人我们经常会因为别人的暖心之举而感动,哪怕是一些很微不足道的小事,但就是恰如其分的在你最需要的时候出现,就会让受恩惠的人尤为感动,记忆深刻。图片来自免费图库有些小事真的会改变一个人的
身边的熟人,对你有这3种关心,很可能是不怀好意!每个人都需要关心,不论是来自亲戚朋友的好心叮嘱,还是陌生人的善意提醒,都能够让人感觉到温暖。但是我们也要明白,万事皆有例外,有一些关系表面看起来很真实,而背后很可能隐藏着不怀好意的
诗歌忘掉一个人真难忘掉一个人真难四川颜建超忘掉一个人真难颜建超什么都在,还是那个时候的风景,还是那个公园,还是那条小河,还是那张椅子,只是身边的人,已然不见了,我有些伤感。什么都在,还是那个时候的景
看清生命的不同层次,与觉同在,不在因果层面过分纠缠醒来了,就要觉知,事实无不通,只有想不通!没有任何人或事是因为我才变好的,那只是因缘推动的结果。关关难过关关过,事事不休事事休。过不了的是妄想执着。问杜老师好,感恩传播智慧和示范每
散文丨一个看得见炊烟的地方文罗亚阳一直想找一个可以看得见炊烟的地方住上几天,于是,我来到了小溪。小溪不大,八十几户人家。每天清晨,炊烟像约好似的,陆续从村民屋顶瓦面的缝隙里飘出,慢慢散开弥漫在空中,渐渐地融
井陉中国陶瓷水镇项目以文为魂以旅为擎以居为点以商为线以产为媒熔铸速度强度的文明历程再塑自强自立的民族心性东方文化薪火不熄的时空证物北方千年冀晋古瓷窑形象大使太行文明冀晋通衢的活态遗产在总院领导大力支持
丰台布局智能建造新赛道,年内试点超十个智能建造项目北京日报客户端记者孙颖刘平1月13日举行的遇见丰台众汇京彩丰台智能建造产业创新发布会上,丰台区支持智能建造产业集群发展实施意见正式发布。这是北京市首个以智能建造为主题的集群发展实施
华民股份光伏项目正式投产成功切入新能源材料赛道本报记者何文英1月12日,华民股份年产10GW高效N型单晶硅棒硅片一期项目正式点火投产,标志着公司成功切入新能源材料赛道。鸿新新能源项目现场产出的第一根硅棒华民股份常务副总经理夏宇
1OfficeToolPlus工具如何部署Office等软件1搜索并下载OfficeToolPlus工具,并将下载好的工具解压至相应的位置,尽量下载最新版本,新版本的支持性与兼容性更好2双击打开OfficeToolPlus3许可协议这里选择