之前的100多篇文章,解决案例的大部分手段,均为数组、字典或数组与字典的组合,估计大家都看腻了。今天开始更新使用SQL语句的文章。注意SQL语句貌似只能在Excel里面使用,不能在WPS里面使用。如果有其它方法让SQL在wps里运行,也欢迎大家留言补充。 源数据:查询内容:问题描述: 1:通过SQL语句,获取表格中 条码、仓位、货号的数据; 解决的思路详解:SQL的核心语句 Sql = 'SELECT 条码,仓位,货号 FROM [商品信息目录$] '; 代码运行的结果如下:代码如下:SQL语句汇总,查询获取多列的数据,SQL语句如下: SELECT 列字段名1,列字段名2,列字段名3 FROM [工作表名称$]
Sub DoSql_Execute() Dim cnn As Object, rst As Object Dim Mypath As String, Str_cnn As String, Sql As String Dim i As Long Set cnn = CreateObject('adodb.connection') '以上是第一步,后期绑定ADO Mypath = ThisWorkbook.FullName '以上获取当前工作簿的路径及名称 If Application.Version < 12 Then '格式为.xls,调用下述语句 Str_cnn = 'Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=' & Mypath Else '格式为.xlsx,调用下述语句 Str_cnn = 'Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=' & Mypath End If cnn.Open Str_cnn '判断一下当前Excel的版本,12.0以下使用“Provider=Microsoft.Jet.Oledb.4.0”,以上使用“Microsoft.ACE.OLEDB.12.0” '以上是第二步,建立链接 ' Sql = 'SELECT 条码,仓位,货号 FROM [商品信息目录$] ' 'Sql语句,查询商品信息目录表中条码,仓位,货号的数据 [a2:c1000].ClearContents '清空[a2:c1000]区域内容 Range('a2').CopyFromRecordset cnn.Execute(Sql) 'Execute语句先执行SQL语句 '使用单元格对象的CopyFromRecordset方法将SQL查询到的内容复制到D2单元格为左上角的单元格区域 '以上是第三步,执行SQL语句并将数据读入表格指定区域 cnn.Close '关闭链接 Set cnn = Nothing '释放内存 End Sub 代码解析:本例代码,基本都有注释,所以简单的说明一下: 1:5~18行 语句为通用语句,其它表格运用,可以直接复制此代码; 2:21行 SQL语句,根据不同的查找内容,进行设置; 3:25行 用单元格对象CopyFromRecordset复制 SQL查询到的内容;但是CopyFromRecordset方法,不会返回列头和列表。返回列头和列表的方法,明天再更新。 4:29~31行 代码为通用语句。 |
|