I created a clone to this logic in C# but when I attempt to Load the Image from a File I get an Out of Memory exception. And when I try to load the image from a Memory stream created using the byte[] from the DB I get Invalid Parameter Error. I don't have any problem reading from a SQL Server Image field using the memory stream; I just can't read a valid image from access of an Image field in MSSQL that was pulled directly from Access. Can anyone help me with this issue. Sorry it is not VB but my project is in C# (I am a converted Java coder).
const int cChunckSize = 100;
int ISize = 0, IOffset = 0;
string sTempFile, ConnectionString;
Byte[] bytChunkData;
sTempFile = Application.StartupPath + "\\..\\..\\img\\TmpPict.bmp";
if (File.Exists(sTempFile))
File.Delete(sTempFile);
ADODB.Connection conn = new ADODB.ConnectionClass();
conn.CursorLocation = ADODB.CursorLocationEnum.adUseClient;
ConnectionString = "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB

atabase Locking Mode=1;Data Source=\"" +
"C:\\Documents and Settings\\rufassa\\My Documents\\util\\Product Database_Lite.mdb\";Mode=Share Deny None;Jet " +
"OLEDB:Engine Type=5;Provider=\"Microsoft.Jet.OLEDB.4.0\";Jet OLEDB:System database=;Jet OLEDB:SFP=False;persist " +
"security info=False;Extended Properties=;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:Encrypt " +
"Database=False;Jet OLEDB:Create System Database=False;Jet OLEDB

on't Copy Locale on Compact=False;User " +
"ID=Admin;Jet OLEDB:Global Bulk Transactions=1";
ADODB.Recordset rsADO = new ADODB.RecordsetClass();
rsADO.CursorLocation = ADODB.CursorLocationEnum.adUseClient;
conn.Open(ConnectionString,"","",ADODB.ConnectOptionEnum.adConnectUnspecified.GetHashCode());
rsADO.Open("Select ID, Picture FROM [Merch Photos] WHERE ID = " + this.objdsAccess.Tables["Merch Photos"].Rows[this.BindingContext[objdsAccess,"Merch Photos"].Position]["ID"],conn,ADODB.CursorTypeEnum.adOpenForwardOnly,ADODB.LockTypeEnum.adLockOptimistic,ADODB.RecordOpenOptionsEnum.adOpenRecordUnspecified.GetHashCode());
if(!rsADO.EOF)
{
FileStream iFileNum = new FileStream(sTempFile,FileMode.OpenOrCreate,FileAccess.Write);
ISize = rsADO.Fields["Picture"].ActualSize;
while (IOffset < ISize)
{
bytChunkData = (byte[])rsADO.Fields["Picture"].GetChunk(cChunckSize);
iFileNum.Write(bytChunkData,0,bytChunkData.Length);
IOffset += bytChunkData.Length;
}
iFileNum.Close();
}
if (File.Exists(sTempFile))
this.pctAccess.Image = Bitmap.FromFile(sTempFile,true);
----------Alternate--------------------------
if(!rsADO.EOF)
{
MemoryStream imgStream = new MemoryStream();
ISize = rsADO.Fields["Picture"].ActualSize;
while (IOffset < ISize)
{
bytChunkData = (byte[])rsADO.Fields["Picture"].GetChunk(cChunckSize);
imgStream.Write(bytChunkData,0,bytChunkData.Length);
IOffset += bytChunkData.Length;
}
imgStream.Close();
}
this.pctAccess.Image = Bitmap.FromStream(imgStream);