首页 > 数据库 >VBA 连接SQLserver数据库抽数据

VBA 连接SQLserver数据库抽数据

时间:2023-06-26 17:11:33浏览次数:37  
标签:Dim VBA sht cn rs 数据库 SQLserver 保存 记录集

Private Sub myy()
't1 = Timer
Dim i As Long, j As Long, sht As Worksheet
'i,j为整数变量;sht 为excel工作表对象变量,指向某一工作表, 定义为Integer类型的话,变量值超过32767时会溢出

'Dim cn As New ADODB.Connection '定义数据链接对象 ,保存连接数据库信息;请先添加ADO引用
 'Dim rs As New ADODB.Recordset '定义记录集对象,保存数据表
'工具 ---〉引用 ---〉Microsoft ActiveX data objects .... 测试2.8版本可以使用,据说这个兼容性更好一点

'下面两句就不需要增加引用ADO
Set cn = CreateObject("Adodb.Connection")
Set rs = CreateObject("Adodb.Recordset")

Dim strCn As String, strSQL As String '字符串变量
Dim strCond As String
strCn = "Provider=sqloledb;Server=127.0.0.1;Database=test;Uid=sa;Pwd=User1234" '定义数据库链接字符串

'下面的语句将读取数据表数据,并将它保存到excel工作表中:工作表为一张两维表,记录集也是一张两维表

strSQL = "select sno,cno,Grade from sc" '定义SQL查询命令字符串



cn.Open strCn '与数据库建立连接,如果成功,返回连接对象cn
rs.Open strSQL, cn '执行strSQL所含的SQL命令,结果保存在rs记录集对象中
i = 2

Set sht = ThisWorkbook.Worksheets("Sheet1") '把sht指向当前工作簿的Test工作表
Do While Not rs.EOF '当数据指针未移到记录集末尾时,循环下列操作
sht.Cells(i, 1) = rs("sno") '把当前记录的字段1的值保存到sheet1工作表的第i行第1列
sht.Cells(i, 2) = rs("cno") '把当前记录的字段1的值保存到sheet1工作表的第i行第1列
sht.Cells(i, 3) = rs("Grade") '把当前记录的字段1的值保存到sheet1工作表的第i行第1列
rs.MoveNext '把指针移向下一条记录
i = i + 1 'i加1,准备把下一记录相关字段的值保存到工作表的下一行

Range("ai:di").ClearContents

Loop '循环
rs.Close '关闭记录集,至此,程序将把某数据表的字段1保存在excel工作表sheet1的第1列,行数等于数据表的记录数



cn.Close '关闭数据库链接,释放资源
't2 = Timer
'MsgBox (t2 - t1)
Range("F14").Select


MsgBox "你麻麻的居然查询成功了", vbOKOnly + vbInformation, "查询结果"

End Sub

标签:Dim,VBA,sht,cn,rs,数据库,SQLserver,保存,记录集
From: https://www.cnblogs.com/1241187306qq/p/17506182.html

相关文章

  • 如何避免热度数据频繁更新造成数据库死锁?
    数据库死锁对业务来说是一个非常严重的问题,它一定一定一定是代码的执行流程处理不当造成的。但是重构庞大的业务代码不是说了就能轻易做到的事情,下面给出了一些方案,由浅入深,告诉大家解决死锁问题的正确之道。死锁问题产生的原因和条件死锁问题一般发生在短时间内多个并发任务对同一......
  • 【直播预告】HarmonyOS极客松赋能直播第二期:数据库与网络连接开发
      ......
  • C# Winform通用开发框架,支持多语言,多数据库,自动更新,模块化
    C#Winform通用开发框架,支持多语言,多数据库,自动更新,模块化,可用其开发任意CS端系统,非常适合需要快速搭建项目的团队或个人使用。原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/661496079150.html......
  • MySQL 8.0原理与实战一网打尽,甲骨文数据库专家硬刚5年之作
    根据权威数据库技术排名网站DB-Engines今年4月的最新数据,MySQL是全球最流行的开源数据库,没有之一。在所有数据库排名中,MySQL仅次于Oracle,“屈居”亚军之位。但大家从截图中可以看出,MySQL与Oracle的得分差距已经非常小了。“开源壮年”数据库MySQL自1995年发布1.0版本以来,迄今已经走......
  • 8万中医药方剂数据库检索方剂大全ACCESS\EXCEL数据库
    今天这一份方剂数据库是最全也是最好的方剂数据库,不但字段内容多,而且记录数也是最多的,字段包含:名称、组成、出处、功效、主治、加减、用法用量、制备方法、临床应用、各家论述、用药禁忌、附注等。HTML内容字段是排版好了的全部内容截图下方有显示“共有记录数”,截图包含了表的所有......
  • java陷阱之数据库主从
    现象客户遇到工单缺少描述,查询日志写入描述报错,但那是工单又正常生产  原因先写入工单再查询工单实时性要求比较高的不能走从库,还有就是service层方法命名不规范,不点进去看根本不知道走从库,如果要走从库应该带上Slave后缀,查询缓存也一样带上cachefindProviderIdB......
  • NetCore使用使用Scaffold-DbContext命令生成数据库表实体类
    1.根据数据库生成实体类ModelsScaffold-DbContext"DataSource=.;InitialCatalog=TEST;UserID=sa;Password=pwd;TrustServerCertificate=True"Microsoft.EntityFrameworkCore.SqlServer-OutputDirModels-Force  2.根据数据表生成实体类ModelsScaffold-DbConte......
  • 产教融合,华为云GaussDB助推高校国产数据库课程建设 GaussDB数据库助推国产数据库高校
    近日,由教育部“数据科学课程群”虚拟教研室、中国计算机学会CCF长春分部主办,华为技术有限公司、高等教育出版社协办的教育部“数据科学课程群“虚拟教研室教学研讨会在长春顺利召开。会议集结了吉林大学、西安交通大学、中央民族大学、重庆大学、湖北民族大学、东北电力大学、吉林......
  • 从新手游上线看游戏数据库选型
    最近我们深入游戏场景,参与支撑一个全新的手游项目上线,交流中发现经验丰富的游戏架构师都比较认可一个观点:游戏业务设计离不开一款靠谱的KV数据库。这款游戏项目定位是爆款精品,有长期运营规划,因此在前期开发阶段就锁定了合适的“主数据库”选型——华为云KV数据库GaussDB(forRedis)......
  • springboot+vue基于Web的社区医院管理服务系统,附源码+数据库+论文+PPT,适合课程设计、
    1、项目介绍在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括社区医院管理服务系统的网络应用,在外国线上管理系统已经是很普遍的方式,不过国内的管理系统可能还处于起步阶段。社区医院管理服务系统具有社区医院信息管理功能的选择。社区医院管理服务系统......