zoukankan      html  css  js  c++  java
  • VBA连接SQL SERVER数据库操作Excel

    Private Sub btn1_Click()
    '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=192.168.80.17;Database=20200326;Uid=sa;Pwd=123456" '定义数据库链接字符串
    
    '下面的语句将读取数据表数据,并将它保存到excel工作表中:工作表为一张两维表,记录集也是一张两维表
    
    strSQL = "select top 8000 code, code1,name,specs from cbo_itemmaster" '定义SQL查询命令字符串
    
    cn.Open strCn '与数据库建立连接,如果成功,返回连接对象cn
    rs.Open strSQL, cn '执行strSQL所含的SQL命令,结果保存在rs记录集对象中
    i = 2
    
    Set sht = ThisWorkbook.Worksheets("Test") '把sht指向当前工作簿的Test工作表
    Do While Not rs.EOF '当数据指针未移到记录集末尾时,循环下列操作
    sht.Cells(i, 1) = rs("code") '把当前记录的字段1的值保存到sheet1工作表的第i行第1列
    rs.MoveNext '把指针移向下一条记录
    i = i + 1 'i加1,准备把下一记录相关字段的值保存到工作表的下一行
    Loop '循环
    rs.Close '关闭记录集,至此,程序将把某数据表的字段1保存在excel工作表sheet1的第1列,行数等于数据表的记录数
    
    cn.Close '关闭数据库链接,释放资源
    't2 = Timer
    'MsgBox (t2 - t1)
    End Sub

    参考博客:https://blog.csdn.net/waterxcfg304/article/details/42146143,在此表示感谢。

  • 相关阅读:
    GhostBSD 3.0RC3,基于GNOME的FreeBSD
    Nagios 3.4.3 发布,企业级监控系统
    Jolokia 1.0.6 发布, JMX远程访问方法
    微软希望开发人员不要使 WebKit 成为新版 IE6
    Kwort Linux 3.5 正式版发布
    EJDB 1.0.24 发布,嵌入式 JSON 数据库引擎
    Pale Moon 15.3 Firefox“苍月”优化版发布
    Galera Load Balancer 0.8.1 发布
    SmartSVN V7.5 正式发布
    PostgresQL建立索引如何避免写数据锁定
  • 原文地址:https://www.cnblogs.com/williamton/p/12869924.html
Copyright © 2011-2022 走看看