Datagridview Bild aus DB in GridView anzeigen

  • VB.NET
  • .NET (FX) 1.0–2.0

Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von steel75.

    Datagridview Bild aus DB in GridView anzeigen

    Morgen zusammen,
    ich komme bei einer Sache nicht so recht weiter, vielleicht könnt ihr mir da etwas Input geben oder sehen woran es liegt.

    Für ein TreeView mit Bilder (*.png)



    bei jedem Knoten welches bis jetzt statisch über eine ImageList läuft, soll mehr Dynamik rein, in Form von selber anlegbaren Geräteklassen.
    Dies ist der Grund warum die Bilder in die DB sollen und kein Link zur Datei, wie ich es normalerweise machen würde genutzt werden soll.

    Meine erste Idee war nur mit SELECT * abfragen und ans Datagridview übergeben, sobald dieses feststellt das es sich um eine Grafik handelt
    nimmt er automatisch DataGridViewImageColumn, wie bei Checkboxen und der gleichen auch aber Pustekuchen, dass funktioniert so nicht.

    Die Datenbasis ist Access 2010 (*.accdb) die Tabelle dbo_deviceclasses sieht wie folgt aus. IDE ist Visual Studio 2005 professional inkl. SP1
    noch bis Ende Januar dann kommt Visual Studio 2013 professional und das Projekt wird migriert



    Das einlesen und speichern von Bildern geht, aber das anzeigen von Bildern in einer Spalte des Datagridview will absolut nicht gehen,
    ich habe gefüllt jetzt alle mir bekannten Kombinationen OLEDBParameter, DataGridViewImageCell durchprobiert bis jetzt ohne Erfolg,
    mehr als dieses kommt nicht raus.



    das aktuelle Dataset sieht beim debuggen so aus



    Hier einmal die Methode die bei Start der Form aufgerufen wird und das Datagridview mit zwei Spalten befüllen soll.

    VB.NET-Quellcode

    1. ' Geräteklassen laden
    2. Private Sub fillDeviceClasses(ByRef bStatus As Boolean)
    3. Dim DMDB As New OleDbConnection(frmMain.getProviderString)
    4. Dim DBSQLStr As String = "SELECT deviceclass_ID, Geräteklasse, Gerätebild, Status, Bemerkung FROM dbo_DeviceClasses WHERE Status =" & bStatus & ";"
    5. Dim DBDataAdapter As New OleDbDataAdapter(DBSQLStr, DMDB)
    6. Dim DBDataset As New DataSet
    7. Dim imgDGVColumn As New DataGridViewImageColumn
    8. 'DataGridView1 definieren
    9. With DataGridView1
    10. .AutoGenerateColumns = True
    11. .AllowUserToOrderColumns = False
    12. .RowHeadersVisible = False
    13. .AllowUserToAddRows = False
    14. .AllowUserToDeleteRows = False
    15. .ReadOnly = True
    16. End With
    17. 'DB Operationen durchführen
    18. Try
    19. DMDB.Open()
    20. DBDataAdapter.Fill(DBDataset, "dbo_DeviceClasses")
    21. DBDataAdapter.Dispose()
    22. DMDB.Close()
    23. DataGridView1.DataSource = DBDataset.Tables("dbo_DeviceClasses")
    24. 'ausblenden von Spalten
    25. Me.DataGridView1.Columns("deviceclass_ID").Visible = False
    26. Me.DataGridView1.Columns("Gerätebild").Visible = False 'Original Spalte ausblenden
    27. Me.DataGridView1.Columns("Status").Visible = False
    28. Me.DataGridView1.Columns("Bemerkung").Visible = False
    29. With imgDGVColumn
    30. .HeaderCell.Value = "Gerätebild"
    31. .DataPropertyName = "dbo_DeviceClasses"
    32. .HeaderText = "Gerätebild"Gerätebild
    33. .Name = "Gerätebild"
    34. .ValuesAreIcons = True
    35. End With
    36. DataGridView1.Columns.Add(imgDGVColumn)
    37. Catch ex As OLEDBException
    38. MessageBox.Show("Während der Verarbeitung, trat der folgenden Fehler auf : " & ex.Message, frmMain.sAppName, MessageBoxButtons.OK, MessageBoxIcon.Stop)
    39. End Try
    40. End Sub


    Hat einer von euch eine Idee, ein plastisches Beispiel wie das laden eines Bildes aus einer Access Datenbank mit Feldtyp "Anlage" vllt. auch OLE-Objekt, es muss pro Datensatz eh nur ein Bild gespeichert und geladen werden.
    VG steel

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „steel75“ ()

    Hallo ihr beiden,
    danke für eure Hilfe, aber wie du VB1963 schon geschrieben hast, geht bei dir
    um speichern in eine DB mittels ImageToBLOB. Bei mir geht es aber um

    das Anzeigen eines bereits gespeicherten Bildes in einer accdb Datei in einem
    Datagridview

    Die Speicherung hab ich mittels MemoryStream() schon hinbekommen, dass
    Bild ist drin, jetzt geht es darum alle Geräteklasse. beim laden der Form
    in einem Datagridview darzustellen und dann per Cellclick wieder in eine
    Picturebpxwoeder darzustellen, aber das kommt später.

    Ich glaube das es irgendwie mit OLEDBParameter gehen muss, aber da fehlt mir ein bisschen der
    Überblick. Wenn da einer ein Tutorial zu jat, wäre sehr gut.
    VG steel
    HI VB1963,
    hab mir das Thema mal angesehen und das Bsp Projekt von Menorca vom Ende runtergeladen. Aber leider behandelt das nicht...

    das laden von in Datenbank gespeicherten Bildern, in ein DataGridView und die Darstellung als Bild.

    Den er hat gar keine Bilder in der Datenbank, sondern wahrscheinlich in den Ressourcen, die er dann aufgrund der Spalte Prio 1,2,3 zeigt.
    Er ruft nirgendwo ein Bild aus der Datenbank ab, sondern stellt lediglich ein eingebettetes Ressourcen Image in einem DGV dar.

    Ich glaube weiterhin, dass ich einigermaßen nah dran bin, den ich sehe die Spaltenköpfe richtig beschriftet, ich blende die Original generierte
    Spalte des DGV aus und es wird die imgDGVColumn Spalte angezeigt, nur ohne Bild, sondern mit einem Platzhalter.

    Heißt entweder, die Spalte hat keine Werte ist DBNull, oder die Werte müssen noch konvertiert werden und können deshalb nicht angezeigt werden.
    Da ich aber innerhalb von Access das Bild abrufen kann, muss dieses grundsätzlich vorliegen.

    VB.NET-Quellcode

    1. With imgDGVColumn
    2. .ImageLayout = DataGridViewImageCellLayout.Zoom
    3. .HeaderCell.Value = "Gerätebild"
    4. .DataPropertyName = "dbo_DeviceClasses"
    5. .HeaderText = "Gerätebild"
    6. .Name = "Gerätebild"
    7. ' .Image = ???
    8. End With


    wenn jemand noch ne Idee hat poste sie gerne.
    VG steel
    Moin VS1963,
    ja das mag sein, dass das ist definitiv zu viel Aufwand. Da muss min. 80% des Codes ersetzt werden, es muss die entsprechende Äquivalenz zu Access bestimmt werden.
    Auch wird überhaupt kein DGV verwendet, was die Ableitung zusätzlich erschwert, den das ist ja hier genau das Problem. Sich jetzt auch noch mit der XML Thematik
    zu beschäftigen, verwirrt mehr als das es nützt, auch glaube das es so schwer nicht ist, da fehlt wahrscheinlich nur irgendwo ne Kleinigkeit die ich nicht sehe oder kenne.

    Den da ich zuvor, auch noch nie Bilder in eine DB gespeichert habe und wieder ausgelesen habe, geschweige den in einem DGV als Bild angezeigt habe, ist es durchaus
    möglich, das ich hier ja was grundlegendes falsch mache. Aber bei diesem Thema findet sich einfach nichts gescheites, entweder es geht nur darum einen Pfad zum
    Image in der DB zu speichern, was man ja auch eigentlich machen sollte ;) oder Essig. Es ist halt die Thematik und Verknüpfung, die das Ergebnis sehr einschränken
    Access und Attachment und / oder OLE-Object und laden / anzeigen in DGV.

    Da dies zwar grundsätzlich eine interessante Fragestellung und Aufgabe ist, sollte sich nichts desto trotz, aber Aufwand und Nutzen sich die Waage halten sollten,
    würde ich davon erst mal absehen. Klar ist das man sich mit Thematiken beschäftigen muss um sie vollkommen zu verstehen, auch klar ist, dass man immer mal wieder
    von Höcksken auf Stöcksken zu anderen Bereichen kommt bei so was, aber man sollte immer überprüfen ob dies wirklich notwendig ist, oder man sich nicht verrennt.

    Ich danke dir trotzdem für deinen Einsatz und Zeit und Mühe. :) :thumbsup:

    Aber ich war natürlich nicht untätig ;) hab die Büchersammlung mal befragt und siehe da, ich habe einem Buch etwas Interessantes dazu gefunden. Seit Access 2007,
    gibt es die Anlagen und damit sind auch diese Datentypen zu den Anlagen eingeführt worden. Sie werden wohl mit dem Datensatz gespeichert und sind abrufbar.

    VB.NET-Quellcode

    1. .FileData = (Byte-Array) scheint das wichtigste zur Anzeige sein, hier ist das eigentliche Bild drin, Bsp. Feldname.FileData
    2. .FileName (Text)
    3. .FileFlags (Long)
    4. .FileType (Text)
    5. .FileURL (Memo)
    6. .FileTimeStamp (Date/Time)


    wenn ich Abfrage dahingehend ändere,

    SQL-Abfrage

    1. "SELECT deviceclass_ID, Geräteklasse, Gerätebild.FileData, Gerätebild.FileName, Status, Bemerkung FROM dbo_DeviceClasses WHERE Status =" & bStatus & ";"


    bekomme ich im Dataset nun auch



    nicht mehr den Dateinamen angezeigt, sondern System.Byte[], es ist aber nicht festzustellen ob da nun echte Byte Daten drin stehen oder einfach nur der Typename angezeigt wird.
    Aber ich bekomme eine ganz neue Argument Exception geliefert, dass lässt hoffen, dass hier tatsächlich jetzt die richtigen Bilddaten am wandern sind.

    VG steel

    steel75 schrieb:

    Auch wird überhaupt kein DGV verwendet
    ...ist doch ein DGV mit einer extra ImageColumn - oder nicht?

    Ich habe dir jetzt eine ganz triviale Solution angehängt, wie ich die Bilddaten in einer Access-DB halte und sie in ein DGV zur Anzeige bringe...
    Die Bilddaten sind in einer OLE-Objekt-Datentypspalte einer Access-DB binär als BLOB-Daten abgelgt... (wie die dort hineinkommen, wurde im vorigen Beispiel schon gezeigt)
    Die Daten werden über einen TableAdapter in ein typ. Dataset geladen und über eine Bindingsource zum DGV umgeleitet und dort in einer ImageColumn zur Anzeige gebracht...
    Dein Problem ist auch, dass du alles zu Fuss ohne ein typ. Dataset machen möchtest.
    Versuche einmal eines mit dem Designer von deiner AccessDB zu generieren. Du wirst sehen, wieviel Arbeit und Code du dir da ersparst...
    Dateien

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VB1963“ ()

    Hi VS1963,
    soorrry ich komme so einfach nicht weiter, ich sitze seit Stunden davor und ich muss sagen, ich hab mir mittlerweile so viel angesehen,
    dass ich da echt nicht mehr durchblicke, auch hat mich dieses Bsp. echt abgehangen. Es führen einfach zu viele Wege nach Rom.

    Auch mit deinem Code funktioniert es leider nicht. Ich kann das Projekt nicht öffnen, falsche VS Version. Mit Notepad++ durchgehen hab ich versucht,
    kann man vergessen. BilderDataSet.Designer.vb ist voll mit generierten Code, ich hab keine Ahnung was ich davon brauch oder nicht, was ist von
    dir ist und was ist generiert, wahrscheinlich sehe ich jetzt Sachen, die normalerweise in der IDE unterdrückt werden. Das ist ne Sache von Wochen
    1430 Zeilen Code durchzugehen.

    Auch bekomme ich eine Fehlermeldung bei Zugriff auf die Bilder in deiner *.mdb. Wenn ich sie als accdb speichere bleibt der Fehler, bei meiner accdb
    kommt dieser Fehler nicht wenn ich versuche dort das Bild in der Access Datei zu öffnen, es wird angezeigt.



    Kannst du mir bitte einfach einen genauen Ablaufplan von A nach Z aufstellen ohne etwas auszulassen, auch von wenn es für dich klar ist,
    am besten, mit kommentiertem Bsp Code Fragment, so dass man das nachvollziehen kann, was brauch ich, wie gehe ich vor, in welcher Reihenfolge
    und auf direktem Weg ohne Umwege über XML oder der gleichen, es sei den es ist unumgänglich. OLE-Objekt ist Datenbasis vollkommen ok.

    Ausgangs Basis ein gespeichertes PNG Bild in einer Access 2010 accdb, Feldtyp OLE-Objekt, welches in eine DataGridViewImageColumn dargestellt
    werden soll.
    VG steel
    Morgen VS1963,
    ich sitze wieder vor der Bildanzeige Problematik und habe jetzt mit einem Bsp. von hier plus einem Buch und dem von dir, noch mal komplett neu geschrieben. Da das Bsp. mit Anlagen
    arbeiten hab ich das jetzt erst mal so gelassen, auch wird ebenfalls mit FileData gearbeitet. Was ich auf ner anderen Site gelesen und das ist wohl der Grund warum hier zwei DataTables
    verwendet werden, dass man sich das Anlage Feld als Tabelle in einer Tabelle vorstellen muss und deshalb dafür ein eigenes DataTable Objekt braucht.

    Der Code lässt sich ohne Fehler kompilieren, es wird aber nichts angezeigt, aber was mich stutzig macht ist die Tatsache, das ich nicht debuggen kann, ein Haltepunkt in der Load() Methode,
    wird einfach übergangen. Aber die Reihenfolge müsste doch jetzt stimmen, habs mal kommentiert. Könntest du dir das einmal ansehen, ob das so vom Grunde her der richtige Aufbau ist.

    Nachträge
    - Ok, den Debuggfehler hab ich gefunden da fehlte "Handles MyBase.Load" bei der Load Methode
    - ein weiterer Fehler scheint in der FillAnlage Methode zu liegen, diese bricht ohne Fehlermeldung ab, hab auch schon mit und ohne try...catch versucht es wird nix ausgegeben. Hab die Zeile mal markiert
    - den Fehler in der FillAnlagen() habe ich gefunden, jetzt gibt es eine "Ungültiger Parameter" Meldung bei


    VB.NET-Quellcode

    1. Imports System
    2. Imports System.IO
    3. Imports System.Text
    4. Imports System.Data
    5. Imports System.Data.Sql
    6. Imports System.Data.OleDb
    7. Imports System.Drawing
    8. Imports System.ComponentModel
    9. Imports System.Collections.Generic
    10. Imports System.Runtime.InteropServices
    11. Imports System.Windows.Forms
    12. Imports System.Windows.Forms.SystemInformation
    13. Imports System.Resources
    14. Imports Microsoft.VisualBasic
    15. Public Class frmMain
    16. Private dbo_DeviceClasses As DataSet
    17. Private Sub frmMain_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
    18. '1. Zuerst die DataTables definieren
    19. Dim deviceTable As New DataTable("DeviceTable")
    20. deviceTable.Columns.Add("ID", GetType(Integer))
    21. deviceTable.Columns.Add("Geräteklasse", GetType(String))
    22. deviceTable.Columns.Add("Gerätebild", GetType(String))
    23. deviceTable.Columns.Add("Status", GetType(Boolean))
    24. deviceTable.Columns.Add("Bemerkung", GetType(String))
    25. Dim Anlage As New DataTable("DeviceTableAttachments")
    26. Anlage.Columns.Add("ID", GetType(Integer))
    27. Anlage.Columns.Add("FileData", GetType(Byte()))
    28. Anlage.Columns.Add("FileName", GetType(String))
    29. Anlage.Columns.Add("FileType", GetType(String))
    30. dbo_DeviceClasses = New DataSet("dbo_DeviceClasses") '2. dann ans neue Dataset zuweisen
    31. dbo_DeviceClasses.Tables.Add(deviceTable)
    32. dbo_DeviceClasses.Tables.Add(Anlage)
    33. '3. jetzt die erstellen DataTables aufrufen und befüllen
    34. FillAnlage()
    35. FillDeviceTable()
    36. '4. Das DGV manuell aufbauen, heißt Spalten erstellen und dem DGV zuweisen
    37. Dim idDGVColumn As New DataGridViewTextBoxColumn
    38. Dim txtDGVColumn As New DataGridViewTextBoxColumn
    39. Dim imgDGVColumn As New DataGridViewImageColumn 'die Image Spalte
    40. Dim chkDGVColumn As New DataGridViewCheckBoxColumn 'Spalte für Checkbox
    41. Dim comDGVColumn As New DataGridViewTextBoxColumn
    42. DataGridView1.Columns.Add(idDGVColumn) '5. zuweisen der Spalten ans DGV
    43. DataGridView1.Columns.Add(txtDGVColumn)
    44. DataGridView1.Columns.Add(imgDGVColumn)
    45. DataGridView1.Columns.Add(chkDGVColumn)
    46. DataGridView1.Columns.Add(comDGVColumn)
    47. DataGridView1.DataSource = dbo_DeviceClasses.Tables("dbo_DeviceClasses") '6. letzter Schritt zuweisen des Datasets an das DGV über DataSource zur Darstellung
    48. End Sub
    49. 'liefert lediglich den Connection String
    50. Public Function getProviderString() As String
    51. Dim DBProviderString As String
    52. Dim comPath As String
    53. comPath = "C:\Temp\Test-DB.accdb"
    54. DBProviderString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & comPath & ";"
    55. Return DBProviderString
    56. End Function
    57. 'DeviceTable ins DataTable
    58. Private Sub FillDeviceTable()
    59. Dim DMDB As New OleDbConnection(getProviderString())
    60. Dim cmdTxt As String = "SELECT [dbo_DeviceClasses].deviceclass_ID, [dbo_DeviceClasses].Geräteklasse, [dbo_DeviceClasses].Gerätebild, [dbo_DeviceClasses].Status, [dbo_DeviceClasses].Bemerkung FROM dbo_DeviceClasses"
    61. Dim DBCommand As New OleDbCommand(cmdTxt, DMDB)
    62. Try
    63. DMDB.Open()
    64. Dim DBDataReader As OleDbDataReader = DBCommand.ExecuteReader(CommandBehavior.Default)
    65. If DBDataReader.Read() Then
    66. Dim row As DataRow = dbo_DeviceClasses.Tables("DeviceTable").NewRow()
    67. row(0) = DBDataReader.GetInt32(0)
    68. row(1) = DBDataReader.GetString(1)
    69. row(2) = DBDataReader.GetString(2)
    70. row(3) = DBDataReader.GetBoolean(3)
    71. row(4) = DBDataReader.GetString(4)
    72. dbo_DeviceClasses.Tables("DeviceTable").Rows.Add(row)
    73. End If
    74. dbo_DeviceClasses.Tables("DeviceTable").AcceptChanges()
    75. DMDB.Close()
    76. Catch ex As Exception
    77. MessageBox.Show("Während der Verarbeitung, trat der folgenden Fehler auf : " & ex.Message, "Test DB", MessageBoxButtons.OK, MessageBoxIcon.Stop)
    78. End Try
    79. End Sub
    80. 'Anlagen, werden wohl wie eine Tabelle in der Tabelle behandelt, weswegen man ein eigens DataTable dafür braucht
    81. Private Sub FillAnlagen()
    82. Dim DMDB As New OleDbConnection(getProviderString())
    83. Dim cmdTxt As String = "SELECT [dbo_DeviceClasses].deviceclass_ID, [dbo_DeviceClasses].Gerätebild.FileData, [dbo_DeviceClasses].Gerätebild.FileName, [dbo_DeviceClasses].Gerätebild.FileType FROM dbo_DeviceClasses"
    84. Dim DBCommand As New OleDbCommand(cmdTxt, DMDB)
    85. Try
    86. DMDB.Open()
    87. Dim DBDataReader As OleDbDataReader = DBCommand.ExecuteReader(CommandBehavior.Default)
    88. Do While DBDataReader.Read()
    89. Dim row As DataRow = dbo_DeviceClasses.Tables("DeviceTableAttachments").NewRow()
    90. row(0) = DBDataReader.GetInt32(0)
    91. row(1) = byteArray2Image(DBDataReader(1)) 'die eigentliche Bildumwandlung hier knallt es aktuell "Ungültiger Parameter",
    92. row(2) = DBDataReader.GetString(2)
    93. row(3) = DBDataReader.GetString(3)
    94. dbo_DeviceClasses.Tables("DeviceTableAttachments").Rows.Add(row)
    95. Loop
    96. dbo_DeviceClasses.Tables("DeviceTableAttachments").AcceptChanges()
    97. DMDB.Close()
    98. Catch ex As Exception
    99. MessageBox.Show("Während der Verarbeitung, trat der folgenden Fehler auf : " & ex.Message, "Test DB", MessageBoxButtons.OK, MessageBoxIcon.Stop)
    100. End Try
    101. End Sub
    102. 'konvertiert byteArray zu Image
    103. Public Function byteArray2Image(ByVal bArray() As Byte) As Image
    104. Dim mStream As New MemoryStream(bArray)
    105. Return Image.FromStream(mStream)
    106. End Function
    107. 'zur Zeit ungenutzt, benötigt fürs speichern
    108. 'konvertiert Image zu byteArray
    109. Public Function Image2ByteArray(ByVal img As Image) As Byte()
    110. Dim mStream As New MemoryStream()
    111. img.Save(mStream, img.RawFormat)
    112. Return mStream.ToArray()
    113. End Function
    114. End Class
    VG steel

    Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von „steel75“ ()

    steel75 schrieb:

    dass man sich das Anlage Feld als Tabelle in einer Tabelle vorstellen muss und deshalb dafür ein eigenes DataTable Objekt braucht

    Wie gesagt, Grundlagen: Die relationale Grundidee
    so bin nen kleinen Schritt weiter gekommen

    VB.NET-Quellcode

    1. row(1) = byteArray2Image(DBDataReader.Item(1))


    DBDataReader.Item(1) liefert an byteArray2Image ein ByteArray() so weit so gut



    ich habe es nun mit zwei unterschiedlichen Methoden versucht zu konvertieren
    einmal

    VB.NET-Quellcode

    1. 'konvertiert byteArray zu Image
    2. 'Variante 1
    3. Public Function byteArray2Image(ByVal bArray() As Byte) As Image
    4. Dim mStream As New MemoryStream(bArray)
    5. Return Image.FromStream(mStream)
    6. End Function
    7. 'konvertiert byteArray zu Image
    8. 'Variante 2
    9. Public Function byteArray2Image(ByVal bArray() As Byte) As Image
    10. Dim IC As New ImageConverter
    11. byteArray2Image = CType(IC.ConvertFrom(bArray), Image)
    12. End Function


    beide schlagen mit "Ungültiger Parameter" fehl.
    VG steel
    @steel75 Vielleicht solltest Du mal Deine Probleme strikt trennen:
    1. Datenbank <=> Image / Bitmap,
    2. Image / Bitmap <=> DataGridView.
    Da Punkt 1 zu funktionieren scheint, baust Du vielleicht mal ein kleuines Testprojekt, das Deinen Effekt auch ohne Datenbank reproduziert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Morgen vb_fan & RodFromGermany,
    danke dir, super, dass ist das was ich suche. :)

    @RodFromGermany
    getrennt ist das grundsätzlich schon, alles in eigenen Methoden

    1. Start Form Start >> DGVFill (hat nicht funktioniert bis jetzt)
    2. bei anwählen einer Zeilen >> DGVCellClick (sitzt ich grad dran, es soll bei CellClick im DGV, das Bild, der Geräteklassenname, in einer danebenliegenden Picturebox und TextBox angezeigt werden)
    3. bei ändern eines geladenen Bildes >> UpdatePicToDB (noch nicht fertig)
    4. beim hinzufügen, eines neuen Bildes >> AddPicToDB (die funktioniert)

    Nach dem ich gestern gelesen hab, dass wenn man in Access selber eine Anlage geöffnet hat, diese durch Access verändert wird, es wird
    ein Datei Erkennungs Header vorrangestellt. Hab ich den ganzen Tag gestern damit zugebracht, diesen Header wieder zu elminieren, da
    er dafür sorgt das eben nix angezeigt wird.
    VG steel