首页 > 解决方案 > 使用 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 行开始)

你知道如何解决这个问题吗?

标签: sql-serverexcelvba

解决方案


您的问题的原因是,您已经在.Range("E2" & Rows.Count).

如果将上述行修改为以下内容,它应该可以正常工作:

Worksheets("HelpTables").Cells(Rows.Count, 5).End(xlUp).Offset(1).CopyFromRecordset myRes

5in.Cells(Rows.Count, 5)用于第五列 ('E') 。


推荐阅读