2012-06-19 76 views
0

使用此C#應用程序選擇一個開始和結束日期範圍,然後SAP將用它來執行查詢。我做了一個應用程序傳遞一個參數,它的工作方式就是這樣,但是在做兩個時它不起作用。誰能幫忙?C#VBScript變量

C#

 private void button1_Click(object sender, EventArgs e) 
     { 
      String startDate = dateTimePicker1.Value.ToString("MM/dd/yyyy"); 
      String finishDate = dateTimePicker2.Value.ToString("MM/dd/yyyy"); 
      Process processbefore = new Process(); 
      processbefore.StartInfo.FileName = "C:\\Program Files\\SAP\\FrontEnd\\SAPgui\\saplogon.exe"; 
      processbefore.Start(); 
      processbefore.WaitForExit(1000 * 5 * 1); 
      Process process = new Process(); 
      process.StartInfo.FileName = "C:\\Script2.vbs"; 
      process.StartInfo.Arguments = startDate; 
      process.StartInfo.Arguments = finishDate; 
      process.StartInfo.ErrorDialog = true; 
      process.StartInfo.WindowStyle = ProcessWindowStyle.Minimized; 
      process.Start(); 
      process.WaitForExit(1000 * 60 * 10); // wait up to 5 minutes. 
     } 
    } 
} 

Script2.vbs - 的VBScript(縮寫)

startDate = WScript.Arguments.Item(0) 
finishDate = WScript.Arguments.Item(1) 

我得到一個下標超出範圍爲finishDate = WScript.Arguments.Item(1)

之後的其餘代碼。我需要知道如何添加另一個參數傳遞給VBScript。如果我只是添加另一條相同的行,則會出現錯誤。

+0

我們是否真的需要查看所有代碼?我懷疑你可以用六行代碼重現問題。列表中的哪一行代碼失敗,以及您收到了哪些錯誤消息? –

回答

0

相反的:

process.StartInfo.Arguments = startDate; 
process.StartInfo.Arguments = finishDate; 

你想:

process.StartInfo.Arguments = startDate + " " + finishDate; 

這是因爲參數是空間上的Windows分開,process.StartInfo.Arguments是包含所有參數的單個字符串。

注意:如果其中一個參數中有一個空格,則需要在其周圍放置引號,否則它將被解釋爲多個參數。例如:

process.StartInfo.Arguments = "\"" + startDate + "\" \"" + finishDate "\""; 
+0

馬上工作。感謝您的快速幫助 – tluck234