|
分類:[VB6 以前]
突然でもうしわけありませんが教えてください。
ASPでActiveReports2.0Jを使ってRDFファイルを作成し、表示するプログラムを作っています。
以前は動いていたんですが、突然RDFファイルが作成されなくなってしまいました。
原因を調べたところDLLに問題があるところまではつかめました。
そのDLLはActiveReportsのサンプルをそのまま引用したものです。
-----以下ソース------
Public Function SaveToRDFFile(Optional datProvider As Variant, Optional strBoundRptsConnectionString As String = "") As String
On Error GoTo errorhandler
'===================================================================================
'第1引数<datProvider> .asp側で生成したdatProviderクラスオブジェクト
'第2引数<strBoundRptsConnectionString>
' データベース接続文字列
'===================================================================================
'戻り値 成功時にサーバー上に保存したRDFファイル名(パスは含まない)を返します。
'===================================================================================
'===========================================================================
'Webサーバー上に、レポートの出力結果をRDFファイル形式で出力します。
'この関数を呼び出すことで、呼び出しのASPページにバイト配列を渡すことができます。
'その後、バイト配列はASPの Response.BinaryWriteメソッドを使用して、クライアント
'ブラウザに直接配信できます。これはクライアントブラウザへレポートを配信するための
'有効な方法です。
'===========================================================================
Dim strTrackLocation As String
Dim rpt As ActiveReport
SaveToRDFFile = ""
strTrackLocation = "AR2 - SaveToRDFFile関数内でActiveReportのクラスを生成 " & Now
TrackLocation (strTrackLocation)
Set rpt = New ActiveReport
rpt.LoadLayout mstrRPXInputPathandFileName
rpt.Printer.DeviceName = ""
If mblnIsUnbound Then 'アンバウンドのとき
strTrackLocation = "AR2 - AddNamedItemメソッドの呼び出し"
TrackLocation (strTrackLocation)
rpt.AddNamedItem "DataClass", datProvider
Else 'バウンドのとき
'データーベース接続文字が指定されていれば、DataControlへセットします。
If strBoundRptsConnectionString <> "" Then
strTrackLocation = "AR2 - レポートのDataControlに、データベース接続文字を設定"
TrackLocation (strTrackLocation)
rpt.Sections("Detail").Controls("DataControl1").ConnectionString = strBoundRptsConnectionString
End If
End If
rpt.Run False
Dim m_sFName
'ランダムな名前に出力します。
m_sFName = GetRandomFileName("\reports\", "AR", "RDF")
rpt.Pages.Save m_sFName
Dim i
For i = Len(m_sFName) - 1 To 0 Step -1
If Mid$(m_sFName, i, 1) = "\" Then
SaveToRDFFile = Mid$(m_sFName, i + 1, Len(m_sFName) - i) 'ファイル名を返します。
Exit For
End If
Next
Exit Function
errorhandler:
End Function
-----以上------
引数なしでASP側から読み出しています。
このプログラムの「rpt.Pages.Save m_sFName」の部分でエラーに落ちているようです。
「sFName」にはちゃんとパスが渡せているようなので、書き込み権限かとも思いいろいろとチェックしてみたのですが、どうしてもうまくいきません。
ご存知の人がいればなにかアドバイスなど、いただけると助かります。
|