我正在使用VS2010(winform)和Access数据库,在我的水晶报告中,我通过创建DataSetPatient.xsd
文件并使用下面的代码成功显示数据库中的表格,现在我想显示特定文件夹中的图像/文件夹路径进入相同的报告,因为我是水晶报道的新手,请任何人一步一步地向我展示我该如何做到这一点
public partial class ViewR : Form
{
DBHandling db=new DBHandling();
public ViewR()
{
InitializeComponent();
}
private void ViewR_Load(object sender, EventArgs e)
{
CrystalReportP objRpt;
// Creating object of our report.
objRpt = new CrystalReportP();
DataSetPatient ds = new DataSetPatient(); // .xsd file name
DataTable dt = DBHandling.GetPatient();
ds.Tables[0].Merge(dt);
objRpt.SetDataSource(ds);
crystalReportViewer1.ReportSource = objRpt;
}
}
答案 0 :(得分:0)
试试这种方式
首先:在数据集的数据表中创建一个新列名(" Image"),并将DataType更改为System.Byte()
第二:读取图像文件转换为二进制数组并将其存储到数据表中,
第三:现在您的数据表包含来自数据库的数据和来自Path映像的Image数据,将此数据表分配给数据库,以及Report Source:
代码:
private void ViewR_Load(object sender, EventArgs e)
{
CrystalReportP objRpt;
// Creating object of our report.
objRpt = new CrystalReportP();
DataSetPatient ds = new DataSetPatient(); // .xsd file name
DataTable dt = DBHandling.GetPatient();
dt = GetImageRow(dt, "YourImageName.Jpg");
ds.Tables[0].Merge(dt);
objRpt.SetDataSource(ds);
crystalReportViewer1.ReportSource = objRpt;
}
//通过此功能,您可以将图像附加到数据表
private DataTable GetImageRow(DataTable dt, string ImageName)
{
try
{
FileStream fs;
BinaryReader br;
if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + ImageName))
{
fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + ImageName, FileMode.Open);
}
else
{
// if phot does not exist show the nophoto.jpg file
fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "nophoto.jpg", FileMode.Open);
}
// initialise the binary reader from file streamobject
br = new BinaryReader(fs);
// define the byte array of filelength
byte[] imgbyte = new byte[fs.Length + 1];
// read the bytes from the binary reader
imgbyte = br.ReadBytes(Convert.ToInt32((fs.Length)));
dt.Rows[0]["Image"] = imgbyte;
br.Close();
// close the binary reader
fs.Close();
// close the file stream
}
catch (Exception ex)
{
// error handling
MessageBox.Show("Missing " + ImageName + "or nophoto.jpg in application folder");
}
return dt;
// Return Datatable After Image Row Insertion
}
注意:首先:在这里我将路径作为Application Statrup路径,您可以采取任何您想要的路径。 第二:这是runTime图像加载, 第三:这里我还解释了如何将图像转换为字节数组,这样当你想将图像存储在数据库中时它会很有用