# Picture Update Access und vb.net



## werner_sg (20. Juli 2021)

Hi hab etwas was ich absolut nicht verstehe.

Habe eine Access Datenbank mit einer tabelle für Kunden und eine weitere für die Fahrzeuge.
In beiden gibt es Spalten für Bilder als Ole Objekt alle identisch formatiert

In der Kunden Datei gibt es zei Spalten für Fotos welche mit folgendem Code  aktualisiert werden können.


```
Private Sub btnupdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnupdate.Click
        If Txtkundenname.Text.Equals(String.Empty) And
            Txtwohnort.Text.Equals(String.Empty) And
            TxtKontaktnr.Text.Equals(String.Empty) And
            Txtfahrerlaubnis.Text.Equals(String.Empty) And
            txtemail.Text.Equals(String.Empty) Then

            MessageBox.Show("Es sind nicht alle Felder ausgefüllt", "Bitte füllen Sie alle Felder aus", MessageBoxButtons.OK, MessageBoxIcon.Warning)

        Else

            Try

                Dim mstream As New System.IO.MemoryStream
                PictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg)
                arrImage = mstream.GetBuffer
                Dim filesize As UInt32
                filesize = mstream.Length

                mstream.Close()

                Dim mstream2 As New System.IO.MemoryStream
                PictureBox2.Image.Save(mstream2, System.Drawing.Imaging.ImageFormat.Jpeg)
                arrImage1 = mstream2.GetBuffer

                Dim filesize2 As UInt32
                filesize2 = mstream2.Length

                mstream2.Close()

                conn.ConnectionString = Myconnection

                conn.Open()

                sql = "UPDATE tblmieter SET Anrede=@Anrede, Titel=@Titel, Kunde=@Kunde, Vorname=@Vorname, Geburtsdatum=@Geburtsdatum, Geburtsort=@Geburtsort, WOHNORT=@WOHNORT, STRASSE=@STRASSE, WOHNORT2=@WOHNORT2, STRASSE2=@STRASSE2, FahrerlaubnisNr=@FahrerlaubnisNr, KLASSEN=@KLASSEN, AUSTELLUNGSORT=@AUSTELLUNGSORT, ABLAUFDATUM=@ABLAUFDATUM, Telefon=@KONTAKT_NR,  Mobil=@Telefon_NR, EMAIL_ADD=@EMAIL_ADD, FOTO=@FOTO, FOTO1=@FOTO1, LAND=@LAND, AusweisNr=@AusweisNr, AUSWEIS_STADT=@AUSWEIS_STADT, AUSWEIS_ABLAUF=@AUSWEIS_ABLAUF, Vermerk=@Vermerk WHERE ID=" & TxtKundennr.Text

                cmd.Connection = conn
                cmd.CommandText = sql
                cmd.Parameters.AddWithValue("@Anrede", CbxAnrede.Text)
                cmd.Parameters.AddWithValue("@Titel", CBoxTitel.Text)
                cmd.Parameters.AddWithValue("@Kunde", Txtkundenname.Text)
                cmd.Parameters.AddWithValue("@Vorname", TxtVorname.Text)
                cmd.Parameters.AddWithValue("@Geburtsdatum", DTPGeburt.Text)
                cmd.Parameters.AddWithValue("@Geburtsort", TxtGeburtsort.Text)
                cmd.Parameters.AddWithValue("@WOHNORT", Txtwohnort.Text)
                cmd.Parameters.AddWithValue("@STRASSE", Txtstrasse.Text)
                cmd.Parameters.AddWithValue("@WOHNORT2", Txtwohnort2.Text)
                cmd.Parameters.AddWithValue("@STRASSE2", Txtstrasse2.Text)
                cmd.Parameters.AddWithValue("@FahrerlaubnisNr", Txtfahrerlaubnis.Text)
                cmd.Parameters.AddWithValue("@KLASSEN", Txtfahrerlaubnisklassen.Text)
                cmd.Parameters.AddWithValue("@AUSTELLUNGSORT", TxtAustellungsort.Text)
                cmd.Parameters.AddWithValue("@ABLAUFDATUM", DateTimePicker1.Text)
                cmd.Parameters.AddWithValue("@KONTAKT_NR", TxtKontaktnr.Text)
                cmd.Parameters.AddWithValue("@Telefon_NR", TextBox1.Text)
                cmd.Parameters.AddWithValue("@EMAIL_ADD", txtemail.Text)
                cmd.Parameters.AddWithValue("@FOTO", arrImage)
                cmd.Parameters.AddWithValue("@FOTO1", arrImage1)
                cmd.Parameters.AddWithValue("@LAND", TxtLand.Text)
                cmd.Parameters.AddWithValue("@AusweisNr", TxtAusweisNr.Text)
                cmd.Parameters.AddWithValue("@AUSWEIS_STADT", TxtAusweisStadt.Text)
                cmd.Parameters.AddWithValue("@AUSWEIS_ABLAUF", DTPAusweis.Text)
                cmd.Parameters.AddWithValue("@Vermerk", TextBox2.Text)


                Dim r As Integer
                r = cmd.ExecuteNonQuery()
                If r > 0 Then
                    MsgBox("Kunde wurde aktualisiert!")
                    conn.Close()
                    Call Btnload_Click(sender, e)
                Else
                    MsgBox("Kunde wurde nicht aktualisiert!")


                End If
                conn.Close()


            Catch ex As Exception
                If ex.Message = "Object reference not set to an instance of an object." Or
                    ex.Message = "Bitte prüfen Sie die eingegebenen Daten." Then
                    MessageBox.Show("Es sind nicht alle Felder ausgefüllt", "Bitte füllen Sie alle Felder aus", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                    conn.Close()
                Else
                    InputBox("", "", ex.Message)
                    conn.Close()
                End If
            End Try
        End If

    End Sub
```

Alles funktioniert Fehlerfrei

mit dem gleichen Code spreche ich die 4 Fotofelder in der Fahrzeuge Tabelle an, bis auf den Foto Update funktioniert auch hier alles nur die Fotos geben anschließend einen Fehler aus.

    Private Sub Btnupdate_Click_1(sender As Object, e As EventArgs) Handles Btnupdate.Click
        If Txtfahrzeugname.Text.Equals(String.Empty) And
            Txtfahrzeugmarke.Text.Equals(String.Empty) And
            CboxTyp.Text.Equals(String.Empty) And
           Txtfahrzeuggetriebe.Text.Equals(String.Empty) And
            Txtfahrzeugkennzeichen.Text.Equals(String.Empty) Then

            MessageBox.Show("Es sind nicht alle Felder ausgefüllt", "Bitte füllen Sie alle Felder aus", MessageBoxButtons.OK, MessageBoxIcon.Warning)

        Else

            Try



                Dim mstream As New System.IO.MemoryStream
                PictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg)
                arrimage1 = mstream.GetBuffer
                Dim filesize As UInt32
                filesize = mstream.Length

                mstream.Close()

                Dim mstream2 As New System.IO.MemoryStream
                PictureBox2.Image.Save(mstream2, System.Drawing.Imaging.ImageFormat.Jpeg)
                arrimage2 = mstream2.GetBuffer

                Dim filesize2 As UInt32
                filesize2 = mstream2.Length

                mstream2.Close()

                Dim mstream3 As New System.IO.MemoryStream
                PictureBox3.Image.Save(mstream3, System.Drawing.Imaging.ImageFormat.Jpeg)
                arrimage3 = mstream3.GetBuffer
                Dim filesize3 As UInt32
                filesize3 = mstream3.Length

                mstream3.Close()

                Dim mstream4 As New System.IO.MemoryStream
                PictureBox4.Image.Save(mstream4, System.Drawing.Imaging.ImageFormat.Jpeg)
                arrimage4 = mstream4.GetBuffer

                Dim filesize4 As UInt32
                filesize4 = mstream4.Length

                mstream4.Close()

                conn.ConnectionString = Myconnection

                conn.Open()

                sql = "UPDATE tblfahrzeuge SET Modell=@Modell, Marke=@Marke, Art=@Art, Baujahr=@KFZ_JAHR, Kennzeichen=@Kennzeichen, HU=@HU, Sitze=@KFZ_SITZE, Extras=@Extras, Zustand=@Zustand, Tagesmiete=@KFZ_MIETE, Standort=@Standort, Kilometerstand=@Kilometerstand, Tankstand=@Tankstand, Inspektion=Inspektion, FOTO1=@FOTO1, FOTO2=@FOTO2, FOTO3=@FOTO3, FOTO4=@FOTO4, Farbe=@Farbe, MANGEL_FRONT=@MANGEL_FRONT, MANGEL_LINKS=@MANGEL_LINKS, MANGEL_RECHTS=@MANGEL_RECHTS, MANGEL_HECK=@MANGEL_HECK, Fahrzeugnummer=@Fahrzeugnummer, Kraftstoff=@Kraftstoff, Getriebe=@Getriebe, Versicherung=@Versicherung, VersicherungsNummer=@VersicherungsNummer, Vermerk=@Vermerk, Praemie=@Praemie, FahrgestellNummer=@FahrgestellNummer , RadioCode=@RadioCode  WHERE KFZ_ID=" & Me.Text



                cmd.Connection = conn
                cmd.CommandText = sql
                cmd.Parameters.AddWithValue("@Modell", Txtfahrzeugname.Text)
                cmd.Parameters.AddWithValue("@Marke", Txtfahrzeugmarke.Text)
                cmd.Parameters.AddWithValue("@Art", CboxTyp.Text)
                cmd.Parameters.AddWithValue("@KFZ_JAHR", DateTimePicker1.Text)
                cmd.Parameters.AddWithValue("@Kennzeichen", Txtfahrzeugkennzeichen.Text)
                cmd.Parameters.AddWithValue("@HU", DateTimePicker2.Text)
                cmd.Parameters.AddWithValue("@KFZ_SITZE", Txtfahrzeugsitze.Text)
                cmd.Parameters.AddWithValue("@Extras", Txtfahrzeugextras.Text)
                cmd.Parameters.AddWithValue("@Zustand", Txtfahrzeugzustand.Text)
                cmd.Parameters.AddWithValue("@KFZ_MIETE", TxtTagesmiete.Text)
                cmd.Parameters.AddWithValue("@Standort", TxtStandort.Text)
                cmd.Parameters.AddWithValue("@Kilometerstand", TxtKilometer.Text)
                cmd.Parameters.AddWithValue("@Tankstand", TxtTank.Text)
                cmd.Parameters.AddWithValue("@Inspektion", TextBox5.Text)
                cmd.Parameters.AddWithValue("@FOTO1", arrimage1)
                cmd.Parameters.AddWithValue("@FOTO2", arrimage2)
                cmd.Parameters.AddWithValue("@FOTO3", arrimage3)
                cmd.Parameters.AddWithValue("@FOTO4", arrimage4)
                cmd.Parameters.AddWithValue("@Farbe", TxtFarbe.Text)
                cmd.Parameters.AddWithValue("@MANGEL_FRONT", TxtMangel1.Text)
                cmd.Parameters.AddWithValue("@MANGEL_LINKS", TxtMangel2.Text)
                cmd.Parameters.AddWithValue("@MANGEL_RECHTS", TxtMangel3.Text)
                cmd.Parameters.AddWithValue("@MANGEL_HECK", TxtMangel4.Text)
                cmd.Parameters.AddWithValue("@Fahrzeugnummer", TxtNummerIntern.Text)
                cmd.Parameters.AddWithValue("@Kraftstoff", CboxSorte.Text)
                cmd.Parameters.AddWithValue("@Getriebe", Txtfahrzeuggetriebe.Text)
                cmd.Parameters.AddWithValue("@Versicherung", TextBox2.Text)
                cmd.Parameters.AddWithValue("@VersicherungsNummer", TextBox3.Text)
                cmd.Parameters.AddWithValue("@Vermerk", TextBox1.Text)
                cmd.Parameters.AddWithValue("@Praemie", TextBox4.Text)
                cmd.Parameters.AddWithValue("@FahrgestellNummer", TextBox7.Text)
                cmd.Parameters.AddWithValue("@RadioCode", TextBox6.Text)

                Dim r As Integer
                r = cmd.ExecuteNonQuery()
                If r > 0 Then
                    MsgBox("Fahrzeug wurde aktualisiert!")
                    conn.Close()
                    Application.DoEvents()
                    Call Button1_Click(sender, e)
                Else
                    MsgBox("Fahrzeug wurde nicht aktualisiert!")


                End If
                conn.Close()


            Catch ex As Exception
                If ex.Message = "Object reference Not Set To an instance Of an Object." Or
                    ex.Message = "Bitte prüfen Sie die eingegebenen Daten." Then
                    MessageBox.Show("Es sind nicht alle Felder ausgefüllt", "Bitte füllen Sie alle Felder aus", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                    conn.Close()
                Else
                    InputBox("", "", ex.Message)
                    conn.Close()
                End If
            End Try
        End If


    End Sub

Woran kann es liegen es sind ja beide Code identisch habe es mehrfach kontrolliert


----------



## werner_sg (20. Juli 2021)

Und wem ist der Fehler aufgefallen?
habe ihn jetzt ganze 2 Tage übersehen , im SQL Code fehlte ein @ Zeichen bei Inspektion=Inspektion,

OK habs dann doch selbst gefunden  Denke mal wird Zeit für eine neue Brille die alte scheint nichts mehr zu taugen


----------



## Spyke (21. Juli 2021)

Kleine Randinfo, bitte Exception immer vollständig angeben, einfach nur die Info das ein Fehler auftritt reicht nicht ;-)


----------



## werner_sg (21. Juli 2021)

Spyke hat gesagt.:


> Kleine Randinfo, bitte Exception immer vollständig angeben, einfach nur die Info das ein Fehler auftritt reicht nicht ;-)


Ja aber er hat ja keinen Fehler beim Update angezeigt, nur beim einlesen ins datagrid das er Null nicht verarbeiten kann.

Also im Prinzip was ich geschrieben hatte.

Nachdem ich dann das fehlende @ gefunden habe war mir das schon klar, er hat halt da keine bzw falsche Daten eingeschrieben, und an anderer Stelle gabs dann den Fehler.

Ein absolut dummer Flüchtigkeitsfehler


----------

