(VBA)在vba中使用外部变量时声明sql中的表数组

时间:2016-03-28 18:47:00

标签: sql excel vba excel-vba

以下代码我似乎无法开始工作。我一直试图运行2个单独的查询。存储在变量历史记录中的第一个工作..但Open_Resolved中的第二个没有。我一直在研究和阅读,执行会起作用,但事实并非如此。我是VBA的新手,我知道我的查询可以在我的sql工作台中测试它。如果有人能说明如何纠正这一点我会非常感激。

谢谢

-KL

Private Sub CommandButton1_Click()

  'Declare variables'    
   Dim TheSheet As Worksheet
   Set TheSheet = Sheets("Sheet2")
   QueryType = TheSheet.Cells(25, 4)

   Set objMyConn = New ADODB.Connection
   Set objMyRecordset = New ADODB.Recordset
   Dim History As String
   Dim Open_Resolved As String

   'Open Connection'
   objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=XXXXX;" _ 
                & "Initial Catalog=XXXXX;User ID=XXXXXXX;Password=XXXXXXXXX;"
   objMyConn.Open

   Sheets("Sheet2").Range("J9:O600").ClearContents
   If ComboBox1.ListCount = 1 Or ComboBox1.Value = "" Then
        Exit Sub
   End If

   'THIS CREATES A STRING LIST OF THE VALUES IN THE VARIABLE FROM COMBOBOX' 
   bnum = ""
   If ComboBox1.Value = "Select All" Then
        For intComboItem = 1 To ComboBox1.ListCount - 1
            Id_split = Split(ComboBox1.List(intComboItem), "   ")
            If (bnum <> "") Then
                bnum = bnum & " , "
                'POSSIBLY CONVERT TO INT and feed it in that way.'
            End If
            bnum = bnum & "(" & Id_split(0) & ")"
       Next
   Else
       Id_split = Split(ComboBox1.Value, "   ")
       bnum = "(" & Id_split(0) & ")"
   End If

   History = "SELECT id, time, team, importance, status, assigned " & _
             "FROM XXXXXXXXXXX " & _
             "WHERE id in (" & bnum & ")" & _
             "ORDER BY id, time"

   Open_Resolved = "SET NOCOUNT ON " _
                    & "DECLARE @blist table (id int);" _
                    & "insert into @blist values" & bnum & ";" _
                    & "SELECT id, time, team, importance, status, assigned " _
                    & "FROM   XXXXXXXXXXXXX" _
                    & "WHERE  Team like 'winner % name%' " _
                    & "AND id in (SELECT id FROM @blist) " _
                    & "ORDER BY id, time"

   'objMyRecordset.Open '
   'Open Recordset'

   Set objMyRecordset.ActiveConnection = objMyConn            
   objMyConn.Execute bugOpen_Resolved

   If QueryType = "History" Then objMyRecordset.Open History
   If QueryType = "OPEN/RESOLVED" Then objMyRecordset.Open Open_Resolved            

   ActiveSheet.Range("J9:O600").CopyFromRecordset (objMyRecordset)

End Sub

0 个答案:

没有答案