2011-06-23 7 views
1

次のC#コードをIronPythonに変換しようとしていますが、強く型付けされた可変配列を処理する方法がわかりません。このコードは、サーバーサイドSSRSレポートをローカルPDFに書き込むためのテストコードであり、C#で正常に動作します。私はIronPythonのSSRSへの呼び出し - 可変配列の処理方法

streamids = Array.CreateInstance(String, 1) 

として配列を設定している場合ので、私の呼び出しは、この

bytes = report.Render("PDF", None, mimeType, encoding, filenameExtension, streamids, warnings) 

のように見えます

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 
using System.Data; 
using System.Drawing.Imaging; 
using System.Drawing.Printing; 
using System.Collections.Generic; 
using Microsoft.Reporting.WinForms; 

namespace ConsoleBooking 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      ServerReport report = new ServerReport(); 
      report.ReportServerUrl = new Uri("http://192.168.1.29/ReportServer"); 
      report.ReportPath = "/Report Project Media Bookings/Business"; 

      Warning[] warnings; 
      string[] streamids; 
      string mimeType; 
      string encoding; 
      string filenameExtension; 

      byte[] bytes = report.Render(
       "PDF", null, out mimeType, out encoding, out filenameExtension, 
       out streamids, out warnings); 

      string filename = Path.Combine(Path.GetTempPath(), "business.pdf"); 
      using (FileStream fs = new FileStream(filename, FileMode.Create)) 
      { 
       fs.Write(bytes, 0, bytes.Length); 
      } 
     } 
    } 
} 

は、その後、私はこのかなり謎めいた未処理の例外が予想

を返しますStrongBox [str]、strを取得

これはどのようにコードする必要がありますか?

上記の報告書は、任意のパラメータを取りませんが、C#ではこれらは再び、関連レポートで私のために正常に動作します

 List<ReportParameter> paramList = new List<ReportParameter>(); 
     paramList.Add(new ReportParameter("pBookingID", "6761", false)); 
     report.SetParameters(paramList); 

を使用して追加された - 私はIronPythonのでこれを追加するにはどうすればよいですか?

更新:Jeff Hardyが提案したように、バイト、mimeType、encoding、filenameExtension、streamids、warnings = report.Render( "PDF"、null)を使用して即時呼び出しを取得しますが、解凍する 'エラーが表示されます。任意に配列のサイズを拡張したり、余分なパラメータを追加しても、このエラーは変わりません。何がうまくいかないかを知ることは困難です。何か案は?

答えて

1

最初の問題については、the documentation on ref and out parametersを参照してください。基本的に、outパラメータは返されたタプルの一部になります。これは、(未テスト)のようなものになります。第二のために

bytes, mimeType, encoding, filenameExtension, streamids, warnings = report.Render("PDF", null) 

を、試してみてください。

from System.Collections.Generic import List 

params = [ReportParameter("pBookingID", "6761", False), ...] 
report.SetParam(List[ReportParameter](params)) 
+0

おかげで、だから何のコードのように第1の部分になりますか? (変数の初期化と呼び出しのみ) – Cruachan

+0

例を追加しましたが、テストしていません。 –

関連する問題