2012-02-02 26 views
0

我想通過更改變量值多次在我的宏中運行腳本。 下面是我爲一個值運行的代碼示例。 我想改變的代碼行是Excel VBA - 使用不同的變量值多次運行SQL腳本

sScript = sScript + "where m.outletid in ('" & sOutletId & "') " & vbCrLf 

有時我想要的where子句是

其中( '12314')m.outletid

其中m.chainid在( '411')......

代碼:

Sub Report() 
    Dim sScript As String 
    Dim sServer As String 
    Dim sDatabase As String 
    Dim sTransTable As String 
    Dim iVal As Integer 
    Dim iReturnVal As Integer 
    Dim SheetExists As Worksheet 
    Dim WK_SHEET As String 

     sServer = Trim(UserForm1.txtServer.Value) 
     sDatabase = Trim(UserForm1.txtDatabase.Value) 
     sTransTable = Trim(UserForm1.txtTransTable.Value) 

     For Each SheetExists In Worksheets 
      If SheetExists.Name = ("Report") Then 
      Application.DisplayAlerts = False 
      Sheets("Report").Delete 
      Application.DisplayAlerts = True 
     Exit For 
     End If 
     Next SheetExists 

     Worksheets.Add after:=Sheets("Sheet1") 
     ActiveSheet.Name = ("Report") 

     WK_SHEET = "Report" 

     Sheets(WK_SHEET).Select 

     sOutletId = "12314" 

     sScript = "Select top 10 m.CustNumber, m.Name, sum(t.Transvalue) " & vbCrLf   
     sScript = sScript + "from " & sTransTable & " t " & vbCrLf 
     sScript = sScript + "where m.outletid in ('" & sOutletId & "') " & vbCrLf 
     sScript = sScript + "Group by m.CustNumber, m.Name " & vbCrLf 
     sScript = sScript + "order by sum(t.Transvalue)Desc " & vbCrLf 

     iReply = MsgBox(Prompt:="Do you wish to continue with the following script for Top 10 Customers?" + sScript + "", _ 
    Buttons:=vbYesNo, Title:="Run MACRO Top 10 Reports") 
    If iReply = vbNo Then 
     End 
    End If 

    iVal = execute_sql_select(WK_SHEET, 2, 1, sServer, sDatabase, sScript) 

    Sheets(WK_SHEET).Name = "Outlet" & sOutletId & "Top 10 by Spend" 

現在我想用OutletId 12315重新運行上述內容...我該怎麼做?我使用某種循環?

回答

1

您可以將OutletId的列表保存到Array中。然後從數組中獲取每個OutletId(for循環)並執行你的sql腳本。

Pseudu代碼

Array listOutid = new Array[12,13,14,15]; 

for(int idx = 0; idx < listOutid.Length; idx++) 
{ 
    var OutletId = listOutid[idx]; 

    //put ur sql statement and execute here.. 
} 
+0

對不起,我嘗試添加這對我的VBA代碼,但我收到錯誤消息 - 「編譯錯誤:預期的行號或標號或語句或結束」的陣列。你能解釋一下我需要如何將它添加到我的代碼中,我對此仍然很陌生。謝謝 – HL8 2012-02-02 05:24:33

相關問題