DB-Operation hängt nach ... in Access
-
Sonntag, 17. März 2013 13:03
Hallo Experten,
ich erstelle ein komplexes Bild per Code auf der Festplatte. Dieses wird dann von der Festplatte mit folgenden Code in eine Access-DB geschrieben.
Dim oConn As OleDb.OleDbConnection Dim oComm As OleDb.OleDbCommand Dim Err As String Dim sInsertQuery As String Dim FSO As New System.IO.FileStream(tempPfad & "\msttemp.bmp", IO.FileMode.Open, IO.FileAccess.Read) Try sInsertQuery = "insert into images([image]) VALUES(?)" sInsertQuery = "update prgopt set WertOLE= ? WHERE Bereich1='Programm' AND Bereich2='CCF-MST-Bild' AND Bereich3='Bild'" oConn = New OleDb.OleDbConnection(My.Settings.DefaultConnectionString) oConn.Open() oComm = New OleDb.OleDbCommand(sInsertQuery, oConn) Dim imgArrayByte(CType(FSO.Length() - 1, Integer)) As Byte FSO.Read(imgArrayByte, 0, imgArrayByte.Length) FSO.Close() Dim QueryParameter As New OleDb.OleDbParameter("@Picture", _ OleDb.OleDbType.LongVarBinary, _ imgArrayByte.Length, ParameterDirection.Input, _ False, 0, 0, Nothing, DataRowVersion.Current, _ imgArrayByte) oComm.Parameters.Add(QueryParameter) oComm.ExecuteNonQuery() ' MsgBox("Bild wurde in der Datenbank erfolgreich gespeichert", MsgBoxStyle.OkOnly, "Erfolgreich gespeichert") Catch Ex As Exception Err = Ex.Message MsgBox("Fehler : " & Err, MsgBoxStyle.OkOnly, "Fehler aufgetreten") Finally oConn = Nothing oComm = Nothing End TryDas funzt soweit einwandfrei ... nur jetzt kommt es ... unmittelbar nach dem Code wird das Bild aus der DB ausgelesen und in einen Seriendruck eingebunden. Nur leider ist da dann kein Bild zu sehen! Schau ich nun in die DB ist das Bild(OLE) aber vorhanden. Bau ich nun im Code eine Pause (z.B. Msgbox -> siehe Code) von ca 3-5 sec ein, ist das Bild da. Eine andere Möglichkeit ist den Befehl oComm.ExecuteNonQuery() 2x direkt hintereinander auszuführen, auch dann ist das Bild dann da. Aber, das kann es ja nicht sein oder ? Wie kann ich sicherstellen, das die DB-Oberation ausgeführt wurde und die Daten auch in der DB zur Verfügung stehen ????
mfg eem monarch
Alle Antworten
-
Sonntag, 17. März 2013 13:56Beantworter
Hallo Monarch,
du solltest die Verbindung schließen... nur tut das ein (überflüssiges) oConn = Nothing nicht.
Dein Code etwas eingedampft:
Dim imageData = System.IO.File.ReadAllBytes(Path.Combine(temppfad, "mstemp.bmp")) Try Using connection As New OleDbConnection(My.Settings.DefaultConnectionString) connection.Open() Dim sInsertQuery = "insert into images([image]) VALUES(?)" 'sInsertQuery = "update prgopt set WertOLE= ? WHERE Bereich1='Programm' AND Bereich2='CCF-MST-Bild' AND Bereich3='Bild'" Using command As New OleDbCommand(sInsertQuery, connection) command.Parameters.Add("@Picture", OleDbType.LongVarBinary, imageData.Length).Value = imageData command.ExecuteNonQuery() End Using End Using ' MsgBox("Bild wurde in der Datenbank erfolgreich gespeichert", MsgBoxStyle.OkOnly, "Erfolgreich gespeichert") Catch Ex As Exception MessageBox.Show("Fehler : " & Ex.Message, "Fehler aufgetreten") End TryGruß Elmar- Als Antwort vorgeschlagen Ionut DumaMicrosoft Contingent Staff, Moderator Dienstag, 26. März 2013 13:21
- Als Antwort markiert Ionut DumaMicrosoft Contingent Staff, Moderator Donnerstag, 28. März 2013 14:00
-
Dienstag, 26. März 2013 13:44Moderator
Hallo monarch,
Wenn Dir die Antwort von Elmar geholfen hat, dann bitte markiere diese als Antwort.
Gruss,
Ionut
-
Donnerstag, 28. März 2013 14:00Moderator
Hallo Monarch,
Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
Wenn nicht, neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.Danke und viele Grüße,
Ionut

