sql-server - 使用 excel vba 和 where 语句从 mssql 中选择数据
问题描述
我需要使用 Excel 从数据库中选择数据。我只想从数据库中选择一列,我需要使用where
语句(仅选择与 Excel 表中的数据具有相同唯一值的数据)
我试过这个
Sub DB_RTVresult()
Dim Cn As ADODB.Connection
Dim Server_Name As String
Dim Database_Name As String
Dim User_ID As String
Dim Password As String
Dim SQLStr As String
Dim myRes As ADODB.Recordset
Server_Name = "123" ' Enter your server name here
Database_Name = "DBName" ' Enter your database name here
User_ID = "UserName" ' enter your user ID here
Password = "Pass" ' Enter your password here
Set myCon = New ADODB.Connection
Worksheets(2).Select
LastRow = GetRowCnt
For bl = LastRow To 5 Step -1
myCon.ConnectionString = "Driver={SQL Server};Server=" & Server_Name & _
";Uid=" & User_ID & ";Pwd=" & Password & ";Database=" & Database_Name & ";"
myCon.Open
SQLStr = "SELECT [RTV_RESULT]" & _
"FROM [WSCZWMS].[WSCZWMS].[OMEGA_E2E_REPORT] WHERE [SME_TRACK_NO] ='" & Cells(bl, "CC").Value & "'"
Set myRes = myCon.Execute(SQLStr)
Worksheets("HelpTables").Range("E2" & Rows.Count).End(xlUp).Offset (1)
StrQuery = "OMEGA_SPEQ_REPORT"
myCon.Close
Set myRes = Nothing
Set myCon = Nothing
Next
End Sub
但是当我运行它时,它会写入 Application-define 或 object-define 错误。并为这条线着色
Worksheets("HelpTables").Range("E2" & Rows.Count).End(xlUp).Offset(1).CopyFromRecordset myRes
此行将选择数据放入 E 列的第一个空行中,(从第 3 行开始)
你知道如何解决这个问题吗?
解决方案
您的问题的原因是,您已经在.Range("E2" & Rows.Count)
.
如果将上述行修改为以下内容,它应该可以正常工作:
Worksheets("HelpTables").Cells(Rows.Count, 5).End(xlUp).Offset(1).CopyFromRecordset myRes
5
in.Cells(Rows.Count, 5)
用于第五列 ('E') 。
推荐阅读
- r - 在不使用 R 中的内置函数的情况下生成几何变量
- json - 如何使用 NimYAML 将 JsonNode 转储到 yaml 文件?
- xamarin.forms - Xamarin Forms:删除网格元素之间的间隙
- android - 我正在创建 react-native 应用程序,我的 api 是在节点中开发的,我正在尝试从 API 获取数据,但我做不到
- keras - GridSearchCV - 无需改装的最佳模型
- vb.net - 具有下推效果的按钮的代码?VB网
- ios - 父对话框中 KeyboardAvoidingView 的反应原生内容
- javascript - 无法在专用网络上获取 /peerjs/id
- protocol-buffers - Protobuf 组和消息
- sql - PL/SQL 抛出错误 ORA-02289: 序列不存在 (Oracle SQL)