Adding OLE objects to a dataset
Posted on 2003-11-17
I am trying to pass two BLOB objects to a Crystal Report (1 bitmap, 1 Excel file).
I have created a test table in my SQL Server database that contains 2 'image' type fields. If I manually insert my OLE objects into these fields (through an Access 2000 project), then I can retrieve the dataset in code and pass it to the report. Using this approach works perfectly.
But, I need to be able to insert the OLE objects into the dataset at runtime...just before I pass the dataset to the crystal report. The bitmap and excel files are stored localy on the client computer.
I have tried using FileStream to write the data into the image fields, but I can't get it to work. Here is my code...thanks for the help.
// create dataset object with 'image' field
DataSet ds = daDataAccess.GetTable("Test");
FileStream fs = new FileStream (@"C:\LocalPic.bmp", FileMode.OpenOrCreate, FileAccess.Read);
// Read the Data into the Byte Array
byte MyData = new byte[fs.Length];
fs.Read(MyData, 0, (int)fs.Length);
// Insert Byte Array data into 'image' field
ds.Tables.Rows["Picture"] = MyData;
This approach appears to be writing some binary data to the field, but it is not a valid picture file. My crystal report will not display the contents of the field. If I write it back to the database, my Access 2000 Project shows the data as 'Long Binary Data' instead of 'Bitmap Image'. Does anyone know how to write this data, correctly, to a dataset? Thanks.