- PR -

ActiveReportsでWebViewerを使用した場合の現象について

1
投稿者投稿内容
ぶどうの樹
会議室デビュー日: 2008/01/20
投稿数: 3
投稿日時: 2008-01-20 22:42
こんばんは。

ASP.NET1.1 + ActiveReports for .NET(Professional Edition)で
指定したTIF形式の画像を動的に表示するレポートを作成しています。

DetailセクションにPictureコントロールを貼り付け、WebViewerを使用して
表示させるようにしているのですが、複数のクライアント端末で同時に
レポート画面にアクセスし、同時にレポートを生成すると、Viewerに表示される
画像が、別端末で指定したものまで共有され、一緒に表示されてしまいます。
(※実行環境:WindowsXP、IE7.0、AdobeReader8または7)

ただし、この現象が起こるのが、AcrobatReaderの形式でViewerに表示した
場合のみで、ActiveXの場合は現象が起こりません。
また、Viewerを使用せず、PDFにエクスポートした場合も現象はおきません
でした。

このような現象が起きたことがある方、上記の現象に対して対策をされた方
はいらっしゃいますか?
(検索をしてみましたが、同様の現象が起きている等の情報は得られませんでした)
また、回避方法や、上位バージョンでは同様の現象が起きるのか等、
上記に関連する情報があれば、教えていただけないでしょうか。

今のところ、PDF形式で表示したいので、Viewerで表示することは
諦めようとしていますが、現象が起こる原因をつきとめられればと
考えています。

よろしくお願いいたします。




じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-01-21 09:45
引用:

ぶどうの樹さんの書き込み (2008-01-20 22:42) より:

DetailセクションにPictureコントロールを貼り付け、WebViewerを使用して表示させるようにしているのですが、


このあたりのソース コードの提示をお願いします。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ぶどうの樹
会議室デビュー日: 2008/01/20
投稿数: 3
投稿日時: 2008-01-21 13:43
じゃんぬねっとさんこんにちは。

ソースコードですが、以下のようにしています。
よろしくお願いいたします。

<WebViewerを貼り付けているForm>
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

 Dim lStrFilePass As String
 Dim lDtRow As DataRow

 Dim lARpt As New rpt

 'データテーブル作成
 Dim DT As DataTable = New DataTable("ImageList")
 Dim lDtColumn As DataColumn = New DataColumn
 lDtColumn.DataType = System.Type.GetType("System.String")
 lDtColumn.ColumnName = "FilePass"
 lDtColumn.DefaultValue = "Str"
 DT.Columns.Add(lDtColumn)

 '指定したファイルパスを格納したSortedListをデータテーブルへセット
 For Each lDicEntry As DictionaryEntry In pSortList
  If CStr(lDicEntry.Value).Trim <> "" Then
   lDtRow = DT.NewRow()

   'ファイルパスをDetailセクションの隠しテキストボックスにセットする
   lDtRow.Item("FilePass") = CStr(lDicEntry.Value).Trim
   DT.Rows.Add(lDtRow)
  End If
 Next lDicEntry

 lARpt.DataSource = DT
 lARpt.DataMember = "ImageList"
 lARpt.Run()
 WebViewer.Report = lARpt

End Sub


<レポート(rpx)>
Private Sub Detail_Format(ByVal sender As Object, ByVal e As System.EventArgs) Handles Detail.Format

 '隠しテキストボックスに設定したファイルパスからPictureコントロールへ動的に画像を表示
 Me.Pic_Img.Image = System.Drawing.Image.FromFile(Txt_FilePass.Text.Trim)

End Sub
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-01-21 14:56
引用:

ぶどうの樹さんの書き込み (2008-01-21 13:43) より:

Me.Pic_Img.Image = System.Drawing.Image.FromFile(Txt_FilePass.Text.Trim)


FromFile メソッドではなく FromStream メソッドでやるとどうでしょうか?

引用:

Viewerに表示される画像が、別端末で指定したものまで共有され、一緒に表示されてしまいます。


今さら根本的なことをお聞きするようですが、画像までのパスは双方とも同じなのでしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ぶどうの樹
会議室デビュー日: 2008/01/20
投稿数: 3
投稿日時: 2008-01-21 15:32
じゃんぬねっとさん、返信ありがとうございます。

引用:

じゃんぬねっとさんの書き込み (2008-01-21 14:56) より:
FromFile メソッドではなく FromStream メソッドでやるとどうでしょうか?



当初はFromFileメソッドで画像ファイルがロックされるのが原因かと思い、
FromStreamメソッドを使用してみましたが、結果は同じでした。

引用:

今さら根本的なことをお聞きするようですが、画像までのパスは双方とも同じなのでしょうか?


画像ファイルは仮想フォルダの直下にImageフォルダを作成し、Imageフォルダ内に
実ファイルを複数置いていますが、双方共に同じパスで同じファイルを指定した
場合も、それぞれが違うファイルを指定した場合も現象は起きています。

よろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)