Hi Cor,
Yes, thank you, it really did!
I´ve been brooding on this problem for some time now.
Thanks to your hints I came up with the following code in C#,
which works OK for me. But I´m actually not using Binding ...
I have a small MS Access DB called BMprov.mdb for trial.
It contains only one table called PicTest, and this table
contains only three columns:
PicNo (numeric runing number)
Name (character string)
PicDraw (bitmap picture, an ActiveX-object derived from a jpg-file in the MS
Access environment).
Here is the essential code:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;
using System.IO;
.....
public void runPicture(string picNo)
{
// ICa 2005-06-03 20:38
Cursor tmp = this.Cursor;
this.Cursor = Cursors.WaitCursor;
try
{
OleDbConnection picC = new OleDbConnection();
picC.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;" + @"data
source = C:\Waterials\Databas\BMprov.mdb";
picC.Open();
string sqlString = "SELECT * FROM PicTest WHERE PicNo = " + picNo;
OleDbDataAdapter picA = new OleDbDataAdapter (sqlString, picC);
OleDbCommandBuilder picB = new OleDbCommandBuilder(picA);
DataSet picD = new DataSet();
picA.Fill(picD, "PicTest");
DataTable picT = picD.Tables["PicTest"];
txPicNo.Text = picT.Rows[0]["PicNo"].ToString();
txName.Text = picT.Rows[0]["Name"].ToString();
Byte[] draw = (Byte[]) picT.Rows[0]["PicDraw"];
MemoryStream ms = new MemoryStream(draw, 78, draw.Length -78);
pbDrawing.Image = Image.FromStream(ms);
ms.Close();
}
catch (Exception ex)
{
MessageBox.Show("Fel vid framtagning av bild: " + ex.Message,
"Bild-fel", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
this.Cursor = tmp;
}
It sure took me some good time to figure all this out ...
Best regards
/Jingo
"Cor Ligthert" wrote:
Paul,
First of all do I when I have this kind of problems create some extra steps
in my code.
Now it is nice connected however hard to debug and even more difficult to
show to somebody else.
Secondly, I don't see the reason for the binding in this. You use a "next
button".
Here a piece from a program from me, not a sample, so I cannot show it
complete because that will be to much.
\\\
Private Sub btnNext_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnNext.Click
If number < dsFototabel.Tables(0).Rows.Count - 1 Then
number += 1
setPicture()
End If
End Sub
///
And then there is in fact nothing more than
\\\
arrPicture = CType(dsFototabel.Tables(0).Rows(number)("thumb"), Byte())
ms = New MemoryStream(arrPicture)
picCurrent.Image = Image.FromStream(ms)
///
However it can as well be that you are using OLE pictures, than you have to
set (hopefully because there are more formats in that)
\\\
Dim ms1 As New System.IO.MemoryStream(arrPicture, 78, arrPicture.Length -
78)
///
I hope this helps a little bit?
Cor