0

Crystal Report(Visual Studio 2005に組み込まれている)で使用するデータテーブルを作成する.xsdファイルに、Crystalレポートの画像を保持することになっている列(datatatype = 'Byte')を含めました.

ただし、COMMENT1 と入力した場所には常にエラーがスローされ、ファイルが別のプロセスによって使用されているというメッセージが表示されます。アクセスしているファイルは、サーバーにマップされたドライブです。

エラーを無視して続行を押すと、レポートが表示されます..しかし、あるはずの画像がありません。

以下は私の完全な構文です

    Dim x As New Reporter
    x.MdiParent = Magulang

    Dim dt As New DataTable
    dt.Columns.Add("EmpNo")
    dt.Columns.Add("FullName")
    dt.Columns.Add("Project")
    dt.Columns.Add("SSS")
    dt.Columns.Add("TIN")
    dt.Columns.Add("EmergencyPerson")
    dt.Columns.Add("EmergencyAddress")
    dt.Columns.Add("EmergencyContact")
    dt.Columns.Add("PicNya", System.Type.[GetType]("System.Byte[]"))

    Dim middleinitial As String = MiddleName.Text.Substring(0, 1)


   Dim fs As FileStream
    Dim br As BinaryReader


    If File.Exists(PicPath.Text) Then

     'COMMENT1 : there is error here, saying that file is used by another process
    fs = New FileStream(PicPath.Text, FileMode.Open)

    Else

        fs = New FileStream(AppDomain.CurrentDomain.BaseDirectory + "NoPhoto.jpg", FileMode.Open)
    End If
    br = New BinaryReader(fs)
    Dim imgbyte As Byte() = New Byte(fs.Length) {}
    imgbyte = br.ReadBytes(Convert.ToInt32((fs.Length)))

    MsgBox(imgbyte.ToString)
    dt.Rows.Add(EmpID.Text, FirstName.Text & " " & middleinitial & ". " & LastName.Text, Project.Text, SSS.Text, TIN.Text, EmergencyContact.Text, "", EmergencyContactNo.Text, imgbyte)

    br.Close()
    fs.Close()


    Dim rptdoc As CrystalDecisions.CrystalReports.Engine.ReportDocument
    rptdoc = New HRISID1

    rptdoc.SetDataSource(dt)
    x.CrystalReportViewer1.ReportSource = rptdoc
    ProgressForm.Hide()

    x.Show()

COMMENT1 を解決するにはどうすればよいですか? 解決された場合、画像は最終的に Crystal レポートに出力されますか? 自分のコンピューターに画像を出力したい場合、私は正しい方向に進んでいますか?

4

1 に答える 1

0

今のところ、代わりに各データを個別のフォームに渡し、VB Powerpacks に含まれている PRINTFORM オブジェクトを使用することにしました。これは、画像も確実に印刷されるようにするためです。

しかし、これは適切な解決策ではないと感じざるを得ないので、それでも貢献できる人がいれば大歓迎です。

于 2013-09-04T01:18:01.340 に答える