VBA 引用从SQL数据库取数据的几个方法

首先,要定义连接的数据集

    Set objRec = CreateObject("ADODB.Recordset")
    Set objConn = CreateObject("ADODB.Connection")

然后在代码中要定义SQL语句,以便获取数据

 sqlstr = sqlstr + "  select t1.FBillNo ,t_Item.fname type,t1.FNote,t2.FNumber,t2.FName, t2.FModel,t1.FQty,  "
    sqlstr = sqlstr + " convert(varchar,T1.FCommitDate,23) rwxdrq,convert(varchar,t1.fheadselfj01111,23) rkrq,   "
    sqlstr = sqlstr + "t4.FItemID,t4.FName,t3.Fmaketime   from icmo t1 inner join t_icitem  t2 on t1.fitemid=t2.FItemID "
    sqlstr = sqlstr + " left join t_BOS257800028Entry2  t3  on t3.FID_SRC=t1.FInterID and t3.FBillNo_SRC1=t1.FBillNo "
    sqlstr = sqlstr + " left join t_Item_3005 t4 on t3.FBase4=t4.FItemID "
    sqlstr = sqlstr + " left join t_Item on t_item.fitemid=t1.FHeadSelfJ01100 and t_item.FItemClassID=3002 "
    sqlstr = sqlstr + "where t1.fheadselfj01111 >=" & "'" & Sdate & "'" & "  and t1.fheadselfj01111<=" & "'" & Edate & "'"

有三个方案用来获取数据
方法一

    '连接数据库并执行SQL语句
   objConn.ConnectionString = "Provider=SQLOLEDB;Data Source=192.168.100.3;Initial Catalog=AIS20150813141843;User ID=sa;Password=Chr_2016"
    objConn.Open
     Set objRec = objConn.Execute(sqlstr)
     If Not objRec.EOF Then

    '将结果集保存到工作表
    Set WS = ThisWorkbook.Worksheets(sheetName) '
    '将标题写入工作表
     For i = 0 To objRec.Fields.count - 1
        WS.Cells(1, i + 1).Value = objRec.Fields(i).Name
     Next i
    ActiveSheet.Range("A2").CopyFromRecordset objRec
    
'''    关闭记录集和连接
    objRec.Close
    objConn.Close
''    '释放对象
    Set objRec = Nothing
    Set objConn = Nothing

   Else
     MsgBox "没有数据,请重新选择时间段"
     Exit Sub
   End If

方法二,这段代码在WPS下能够执行,但在EXCEL下会报错

''     执行查询并将结果存储在记录集对象中
''    '连接数据库并执行SQL语句
   objConn.ConnectionString = "Provider=SQLOLEDB;Data Source=192.168.100.3;Initial Catalog=AIS20150813141843;User ID=sa;Password=Chr_2016"

    objConn.Open
   objRec.Open sqlstr, objConn
   
    If Not objRec.EOF Then

''     设置工作表对象
   Set WS = ThisWorkbook.Sheets(sheetName) ' 可以更改为你要写入数据的工作表名称
''     将数据写入工作表
    With WS.QueryTables.Add(Connection:=objRec, Destination:=WS.Range("A1"))
       .Refresh
    End With
    '''    关闭记录集和连接
    objRec.Close
    objConn.Close
''    '释放对象
    Set objRec = Nothing
    Set objConn = Nothing

   Else
     MsgBox "没有数据,请重新选择时间段"
     Exit Sub
   End If

在EXCEL中执行时,会提示
在这里插入图片描述

方法三,由于方法二在EXCEL中执行会有问题,经查询资料,使用ListObjects的方法进行。但此方法在EXCEL中能执行,WPS中执行会报错(WPS中无ListObject对象)

  ActiveWorkbook.Queries.Add Name:="查询1", Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    源 = Odbc.Query(""dsn=CHR"", """ & sqlstr & """)" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    源" & ""
   ''     设置工作表对象
    Set WS = ThisWorkbook.Sheets(sheetName) ' 可以更改为你要写入数据的工作表名称
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=查询1;Extended Properties=""""" _
        , Destination:=WS.Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [查询1]")
        .RowNumbers = False
        .Refresh BackgroundQuery:=True '后台进行查询,false时会跳出对话框
    End With
   ActiveWorkbook.Queries(1).Delete '删除查询

如果系统设置过ODBC,也可以将连接语句设置如下

dim connstring as string
     connString = "DRIVER={ODBC Driver 17 for SQL Server};" & _
                  "SERVER=192.168.100.3;" & _
                  "DATABASE=AIS20150813141843;" & _
                  "UID=sa;" & _
                  "PWD=Chr_2016;"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/628508.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【稀疏三维重建】pixelSplat:仅需两张图像的3D Gaussian Splats重建

文章目录 一.摘要二、相关工作 , 背景(gs)三、基于图像的三维高斯预测3.1 双视图图像编码器&#xff08;解决尺度模糊性&#xff09;3.2 &#xff08;像素对齐的&#xff09;高斯参数预测 四、实验效果 论文&#xff1a;《pixelSplat: 3D Gaussian Splats from Image Pairs for…

新串口通道打通纪实

在计算机系统中&#xff0c;串口是“古老”的通信方式&#xff0c;和它同时代的“并口”通信方式已经消失了。但它仍然顽强的存活着&#xff0c;主要原因是在开发和调试底层软件时还经常用到串口。 正因为有这样的需求&#xff0c;幽兰代码本是支持串口的&#xff0c;而且有两种…

玩转Matlab-Simscape(初级)- 06 - 基于Solidworks、Matlab Simulink、COMSOL的协同仿真(理论部分2)

** 玩转Matlab-Simscape&#xff08;初级&#xff09;- 06 - 基于Solidworks、Matlab Simulink、COMSOL的协同仿真&#xff08;理论部分2&#xff09; ** 目录 玩转Matlab-Simscape&#xff08;初级&#xff09;- 06 - 基于Solidworks、Matlab Simulink、COMSOL的协同仿真&am…

Python项目——基于回合制的RPG游戏设计与实现

基于回合制的RPG游戏设计与实现 项目概述 《魔法冒险》是一款基于回合制战斗的角色扮演游戏。玩家将创建一个角色&#xff0c;探索世界&#xff0c;战斗敌人&#xff0c;收集物品并提升等级。 项目设计报告 一、引言 本项目的目标是实现一个基于回合制战斗的 RPG 游戏&…

6---Linux下版本控制器Git的知识点

一、Linux之父与Git的故事&#xff1a; Linux之父叫做“Linus Torvalds”&#xff0c;我们简称为雷纳斯。Linux是开源项目&#xff0c;所以在Linux的早期开发中&#xff0c;许多世界各地的能力各异的程序员都参与到Linux的项目开发中。那时&#xff0c;雷纳斯每天都会收到许许…

1-4 GPIO输入模式(ARM-GD32)

输入结构 浮空输入模式&#xff1a; 上拉输入&#xff1a; 上面的电路浮空输入的状态是不确定的故需要通过设置上拉电阻的方式将电平设置为高电平&#xff0c;也就是确定的状态&#xff0c;此时下拉电阻处于关闭的状态&#xff0c;当按键没有按下的时候&#xff0c;处于浮空的状…

the7主题下载,探索WordPress主题的无限可能

在数字时代&#xff0c;一个出色的网站是任何企业或个人品牌的必备。但在这个竞争激烈的网络世界中&#xff0c;如何让您的网站脱颖而出&#xff1f;答案就是 the7 —— 一款专为创造独特和视觉冲击力强的网站而设计的 WordPress 主题。 1. 无限设计可能性 the7 以其独特的设…

Mini Cheetah 代码分析(八)基于零空间的任务分级

一、主要公式 二、源代码注释 三、相关原理解释 一、主要公式 二、源代码注释 该功能的实现在文件KinWBC.cpp中的FindConfiguration函数&#xff0c;主要看注释&#xff0c;与公式是能够对应起来的&#xff0c;由第0个任务&#xff0c;也就是接触任务开始进行迭代&#xff0…

【MATLAB】Enigma机加密原理与自实现

文章目录 什么是EnigmaEnigma机加密通信流程Enigma的物理构造Enigma的加密设置Enigma加密通信密码重新设置Enigma加密消息拼接注意 Enigma的解密分解设置Enigma解密通信密码重新设置Enigma解密消息 Enigma的弱点MATLAB自实现Enigma加密与解密Enigma_functionRotate_functiontes…

Scrapy爬虫:利用代理服务器爬取热门网站数据

在当今数字化时代&#xff0c;互联网上充斥着大量宝贵的数据资源&#xff0c;而爬虫技术作为一种高效获取网络数据的方式&#xff0c;受到了广泛的关注和应用。本文将介绍如何使用Scrapy爬虫框架&#xff0c;结合代理服务器&#xff0c;实现对热门网站数据的高效爬取&#xff0…

金价又双叒涨了!现货黄金什么比较好

虽然近期有新闻显示&#xff0c;国内的实物黄金价格出现大幅的下跌&#xff0c;但是从整体看&#xff0c;多个黄金投资品种的长期上升趋势还是比较稳定的&#xff0c;因此我们会看到&#xff0c;很多投资者会趁现在这波下跌重新入场做多。那么投资黄金买什么比较好呢&#xff1…

2024年5月18日(星期六)骑行香杆箐

2024年5月18日 (星期六&#xff09;骑行香杆箐&#xff0c;早8:30到9:00&#xff0c;郊野公园西门集合&#xff0c;9:30准时出发【因迟到者&#xff0c;骑行速度快者&#xff0c;可自行追赶偶遇。】 偶遇地点:郊野公园西门集合 &#xff0c;家住东&#xff0c;西&#xff0c;南…

dvwa靶场 JavaScript Attacks(js攻击)全难度教程(附代码分析)

JS简介 一种解释型语言&#xff08;代码不需要编译&#xff09;&#xff0c;一般镶嵌在html或者php中实现。 JavaScript Attacks&#xff08;Security Level: low&#xff09; 代码分析 <?php $page[ body ] . <<<EOF <script>/* MD5 code from here h…

参赛指南第二弹!9省齐发 详解赛事参与全攻略

一. 大赛介绍 中国机器人及人工智能大赛是由中国人工智能学会、教育部高等学校计算机课程教学指导委员会联合主办。旨在引导和激励广大青年学生弘扬创新精神&#xff0c;搭建良好的科技创新赛事平台&#xff0c;积极推动广大学生参与机器人、人工智能科技创新实践、提高团队协…

动规解决01背包/完全背包精讲

还不会用动态规划解决01背包/完全背包&#xff1f;看这一篇文章就够了&#xff01; 首先我们要明白什么是01背包和完全背包。 背包问题总体问法就是&#xff1a; 你有一个背包&#xff0c;最多能容纳的体积是V。 现在有n个物品&#xff0c;第i个物品的体积为vi​ ,价值为wi​…

Linux|如何允许 awk 使用 Shell 变量

引言 当我们编写 shell 脚本时&#xff0c;我们通常会在脚本中包含其他较小的程序或命令&#xff0c;例如 awk 操作。就 Awk 而言&#xff0c;我们必须找到将一些值从 shell 传递到 Awk 操作的方法。 这可以通过在 Awk 命令中使用 shell 变量来完成&#xff0c;在本文中&#x…

做全域运营赛道,如何避免被割韭菜?

当下&#xff0c;全域运营赛道逐渐成型&#xff0c;许多创业者虽然都有了做全域运营服务商的想法&#xff0c;但却因全域运营是割韭菜等流言而心存疑虑&#xff0c;担心自己上当受骗&#xff0c;赔得血本无归。 事实上&#xff0c;关于全域运营是不是割韭菜这个问题&#xff0c…

Electron自动化测试技术选型调研

Electron简介 Electron是一个开源的框架&#xff0c;用于构建跨平台的桌面应用程序。它由GitHub开发并于2013年首次发布。Electron允许开发人员使用Web技术&#xff08;如HTML、CSS和JavaScript&#xff09;来构建桌面应用程序&#xff0c;同时可以在Windows、macOS和Linux等操…

量子计算机接入欧洲最快超算!芬兰加快混合架构算法开发

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨浪味仙 排版丨沛贤 深度好文&#xff1a;1900字丨7分钟阅读 摘要&#xff1a;芬兰技术研究中心&#xff08;VTT&#xff09;与 CSC 展开合作&#xff0c;基于量子计算机超算架构进行算法开…

Java为什么会成为现在主流的编程语言

Java为什么会成为现在的主流语言 前言一、Java语言概述Java是什么为什么大多数人会选择从事Java为什么从事Java的工作者数量从年递减 二、Java语言的特点简单性面向对象分布式&#xff08;微服务&#xff09;健壮性安全性体系结构中立可移植性解释型高性能多线程动态性 三、Jav…