2012-02-02 16 views
0

変数値を変更して、マクロ内で複数回スクリプトを実行したいとします。 以下は、1つの値に対して実行するコードの例です。 私が変更したいコードの行はExcel VBA - 異なる変数値でSQLスクリプトを複数回実行する

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

はいつか私がwhere句が

になりたいです( '12314')でm.outletid

または

( '411')のm.chainid ...

コード:

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に保存できます。 Array(forループ)から各OutletIdを取得し、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

関連する問題