Picture Update Access und vb.net

werner_sg

Erfahrenes Mitglied
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.

Code:
    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

Erfahrenes Mitglied
:ROFLMAO: o_O 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 o_O Denke mal wird Zeit für eine neue Brille die alte scheint nichts mehr zu taugen :unsure:
 

Spyke

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

werner_sg

Erfahrenes Mitglied
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