VB.net 2005类型与数据表到水晶报告不匹配

时间:2013-09-03 08:49:37

标签: vb.net crystal-reports

在我的.xsd文件中我创建了用于我的Crystal Report的数据表(在Visual Studio 2005中使用),我已经包含了一个列(即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?如果解决了,图像最终会在我的水晶报告中输出吗?如果我想在计算机上输出图像,我是否在正确的轨道上?

1 个答案:

答案 0 :(得分:0)

目前,我们决定将每个数据传递给一个单独的表单,然后使用VB Powerpacks中包含的PRINTFORM对象。这是为了确保图像也被打印。

我不禁觉得这不是一个合适的解决方案,所以如果有人仍然可以做出贡献,那就非常受欢迎。