Hallo ich habe eine Access Datenbank aus welcher die Daten kommen das speichern in diese funktioniert ohne Fehler.
Beim Klick in eine Zelle des Datagrid sollen die entsprechenden Felder gefüllt werden, jedoch hängt sich hier das Programm dann bei dem Image auf, der clou dabei ist ich hatte vorher weniger Datenfelder und das Image war auf 7 da funktionierte es einwandfrei jetzt habe ich es auf 15 verschoben.
Irgendetwas habe ich übersehen und jetzt sehe ich anscheinend den Wald vor lauter Bäumen nicht mehr.
er stoppt bei Zeile 37
arrimage = DataGridView1.CurrentRow.Cells(15).Value
Vieleicht fällt euch der Fehler auf
Danke
Beim Klick in eine Zelle des Datagrid sollen die entsprechenden Felder gefüllt werden, jedoch hängt sich hier das Programm dann bei dem Image auf, der clou dabei ist ich hatte vorher weniger Datenfelder und das Image war auf 7 da funktionierte es einwandfrei jetzt habe ich es auf 15 verschoben.
Irgendetwas habe ich übersehen und jetzt sehe ich anscheinend den Wald vor lauter Bäumen nicht mehr.
C#:
Imports System.Data.OleDb
Imports System.IO
Public Class customers
Dim conn As New OleDb.OleDbConnection
Dim Myconnection As String = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\Carrental.accdb")
Dim cmd As New OleDb.OleDbCommand
Dim da As New OleDb.OleDbDataAdapter
Dim result As Integer
Dim imgpath As String
Dim arrImage() As Byte
Dim sql As String
Private Sub customers_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call Btnload_Click(sender, e)
End Sub
Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
Dim arrimage() As Byte = Nothing
Me.Text = DataGridView1.CurrentRow.Cells(0).Value.ToString
TxtKundenname.Text = DataGridView1.CurrentRow.Cells(1).Value.ToString
TxtKundenvorname.Text = DataGridView1.CurrentRow.Cells(2).Value.ToString
TxtKundendatum.Text = DataGridView1.CurrentRow.Cells(3).Value.ToString
Txtnational.Text = DataGridView1.CurrentRow.Cells(4).Value.ToString
Txtwohnsitz.Text = DataGridView1.CurrentRow.Cells(5).Value.ToString
txtstreet.Text = DataGridView1.CurrentRow.Cells(6).Value.ToString
Txttelefon.Text = DataGridView1.CurrentRow.Cells(7).Value.ToString
txtemail.Text = DataGridView1.CurrentRow.Cells(8).Value.ToString
Txtdriverlicense.Text = DataGridView1.CurrentRow.Cells(9).Value.ToString
Txtdriverlicenseort.Text = DataGridView1.CurrentRow.Cells(10).Value.ToString
txtlicenseclass.Text = DataGridView1.CurrentRow.Cells(11).Value.ToString
txtFS_Datum.Text = DataGridView1.CurrentRow.Cells(12).Value.ToString
txtortspanien.Text = DataGridView1.CurrentRow.Cells(13).Value.ToString
txtstreetspanien.Text = DataGridView1.CurrentRow.Cells(14).Value.ToString
If Not IsDBNull(arrimage) Then
arrimage = DataGridView1.CurrentRow.Cells(15).Value
End If
Dim mstream As New System.IO.MemoryStream(arrimage)
PictureBox1.Image = Image.FromStream(mstream)
End Sub
Public Sub cleartextfields()
For Each crt As Control In GroupBox1.Controls
If crt.GetType Is GetType(TextBox) Then
crt.Text = Nothing
End If
Next
End Sub
Private Sub Btnadd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnadd.Click
cleartextfields()
PictureBox1.Image = Nothing
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnupload.Click
Try
Dim OFD As FileDialog = New OpenFileDialog()
OFD.Filter = "Image File (*.jpg;*.bmp;*.gif;*.png)| *.jpg;*.bmp;*.gif"
If OFD.ShowDialog() = DialogResult.OK Then
imgpath = OFD.FileName
PictureBox1.ImageLocation = imgpath
End If
OFD = Nothing
Catch ex As Exception
MsgBox(ex.Message.ToString())
End Try
End Sub
Private Sub Btndelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btndelete.Click
Try
sql = "DELETE * FROM tblcustomer WHERE ID=" & Me.Text
conn.Open()
With dbcmd
.CommandText = sql
.Connection = conn
End With
result = dbcmd.ExecuteNonQuery
If result > 0 Then
MsgBox("Kunde wurde gelöscht!")
conn.Close()
Call Btnload_Click(sender, e)
cleartextfields()
Else
MsgBox("Kunde wurde nicht gelöscht!")
End If
Catch ex As Exception
MsgBox(ex.Message)
Finally
conn.Close()
End Try
End Sub
Private Sub btnsave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsave.Click
If TxtKundenname.Text.Equals(String.Empty) And
Txtwohnsitz.Text.Equals(String.Empty) And
Txttelefon.Text.Equals(String.Empty) And
txtstreet.Text.Equals(String.Empty) Then
MessageBox.Show("Bitte füllen Sie alle Felder mit * aus", "TIS Car Rental System", 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()
conn.ConnectionString = Myconnection
conn.Open()
sql = "INSERT INTO tblcustomer(Kunden_Name,Kunden_Vorname,Geburtsdatum,Nationaltaet,Hauptwohnsitz,Strasse,Kontakt_Nr,Email_Adresse,Fuehrerschein_Nr,Austeller,FS_Klassen,FS_Datum,Wohnsitz_ES,Strasse_ES,FS_Foto) " &
" VALUES (@NAME, @VORNAME, @Geburtsdatum, @Nationaltaet, @Hauptwohnsitz, @Strasse, @Kontakt_Nr, @Email_Adresse, @Fuehrerschein_Nr, @Austeller, @FS_Klassen, @FS_Datum, @Wohnsitz_ES, @Strasse_ES, @FS_Foto)"
cmd.Connection = conn
cmd.CommandText = sql
cmd.Parameters.AddWithValue("@NAME", TxtKundenname.Text)
cmd.Parameters.AddWithValue("@VORNAME", TxtKundenvorname.Text)
cmd.Parameters.AddWithValue("@Geburtsdatum", TxtKundendatum.Text)
cmd.Parameters.AddWithValue("@Nationaltaet", Txtnational.Text)
cmd.Parameters.AddWithValue("@Hauptwohnsitz", Txtwohnsitz.Text)
cmd.Parameters.AddWithValue("@Strasse", txtstreet.Text)
cmd.Parameters.AddWithValue("@Kontakt_Nr", Txttelefon.Text)
cmd.Parameters.AddWithValue("@Email_Adresse", txtemail.Text)
cmd.Parameters.AddWithValue("@Fuehrerschein_Nr", Txtdriverlicense.Text)
cmd.Parameters.AddWithValue("@Austellerr", Txtdriverlicenseort.Text)
cmd.Parameters.AddWithValue("@FS_Klassen", txtlicenseclass.Text)
cmd.Parameters.AddWithValue("@FS_Datum", txtFS_Datum.Text)
cmd.Parameters.AddWithValue("@Wohnsitz_ES", txtortspanien.Text)
cmd.Parameters.AddWithValue("@Strasse_ES", txtstreetspanien.Text)
cmd.Parameters.AddWithValue("@FS_Foto", arrImage)
Dim r As Integer
r = cmd.ExecuteNonQuery()
If r > 0 Then
MsgBox("Neuer Kunde wurde gespeichert!")
conn.Close()
Call Btnload_Click(sender, e)
cleartextfields()
PictureBox1.Image = Nothing
Else
MsgBox("Neuer Kunde wurde nicht gespeichert!")
End If
conn.Close()
Catch ex As Exception
If ex.Message = "Der Objektverweis wurde nicht auf eine Instanz eines Objekts festgelegt." Or
ex.Message = "Nicht übereinstimmende Datentypen im Kriterienausdruck." Then
MessageBox.Show("Bitte füllen Sie alle Felder mit * aus", "TIS Car Rental System", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Else
InputBox("", "", ex.Message)
End If
End Try
End If
End Sub
Private Sub Btnupdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnupdate.Click
If TxtKundenname.Text.Equals(String.Empty) And
Txtwohnsitz.Text.Equals(String.Empty) And
Txttelefon.Text.Equals(String.Empty) And
txtstreet.Text.Equals(String.Empty) Then
MessageBox.Show("Bitte füllen Sie alle Felder mit * aus", "TIS Car Rental System", 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()
conn.ConnectionString = Myconnection
conn.Open()
sql = "UPDATE tblcustomer SET Kunden_Name=@NAME, Kunden_Vorname=@VORNAME, Geburtsdatum=@Geburtsdatum, Nationaltaet=@Nationaltaet, Hauptwohnsitz=@Hauptwohnsitz, Strasse=@Strasse, Kontakt_Nr=@Kontakt_Nr, Email_Adresse=@Email_Adresse, Fuehrerschein_Nr=@Fuehrerschein_Nr, Austeller=@Austellerr, FS_Klassen=@FS_Klassen, FS_Datum=@FS_Datum, Wohnsitz_ES=@Wohnsitz_ES, Strasse_ES=@Strasse_ES, FS_Foto=@FS_Foto WHERE ID=" & Me.Text
cmd.Connection = conn
cmd.CommandText = sql
cmd.Parameters.AddWithValue("@NAME", TxtKundenname.Text)
cmd.Parameters.AddWithValue("@VORNAME", TxtKundenvorname.Text)
cmd.Parameters.AddWithValue("@Geburtsdatum", TxtKundendatum.Text)
cmd.Parameters.AddWithValue("@Nationaltaet", Txtnational.Text)
cmd.Parameters.AddWithValue("@Hauptwohnsitz", Txtwohnsitz.Text)
cmd.Parameters.AddWithValue("@Strasse", txtstreet.Text)
cmd.Parameters.AddWithValue("@Kontakt_Nr", Txttelefon.Text)
cmd.Parameters.AddWithValue("@Email_Adresse", txtemail.Text)
cmd.Parameters.AddWithValue("@Fuehrerschein_Nr", Txtdriverlicense.Text)
cmd.Parameters.AddWithValue("@Austellerr", Txtdriverlicenseort.Text)
cmd.Parameters.AddWithValue("@FS_Klassen", txtlicenseclass.Text)
cmd.Parameters.AddWithValue("@FS_Datum", txtFS_Datum.Text)
cmd.Parameters.AddWithValue("@Wohnsitz_ES", txtortspanien.Text)
cmd.Parameters.AddWithValue("@Strasse_ES", txtstreetspanien.Text)
cmd.Parameters.AddWithValue("@FS_Foto", arrImage)
Dim r As Integer
r = cmd.ExecuteNonQuery()
If r > 0 Then
MsgBox("Kunde wurde aktualisiert!")
conn.Close()
Call Btnload_Click(sender, e)
cleartextfields()
PictureBox1.Image = Nothing
Else
MsgBox("Kunde wurde nicht aktualisiert!")
End If
conn.Close()
Catch ex As Exception
If ex.Message = "Der Objektverweis wurde nicht auf eine Instanz eines Objekts festgelegt." Or
ex.Message = "Nicht übereinstimmende Datentypen im Kriterienausdruck." Then
MessageBox.Show("Bitte füllen Sie alle Felder mit * aus", "TIS Car Rental System", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Else
InputBox("", "", ex.Message)
End If
End Try
End If
End Sub
Private Sub Txtsearch_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Txtsearch.TextChanged
Try
conn.Open()
dbdt = New DataTable
With dbcmd
.Connection = conn
.CommandText = "Select * from tblcustomer where Kunden_Name like '" & Txtsearch.Text & "%'"
End With
dbda.SelectCommand = dbcmd
dbda.Fill(dbdt)
DataGridView1.DataSource = dbdt
Catch ex As Exception
MsgBox(ex.Message)
End Try
dbda.Dispose()
conn.Close()
End Sub
Private Sub Txttelefon_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Private Sub Btnload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnload.Click
dbdt = New DataTable
Try
sql = "SELECT * FROM tblcustomer"
conn.ConnectionString = Myconnection
conn.Open()
With dbcmd
.CommandText = sql
.Connection = conn
End With
dbda.SelectCommand = dbcmd
dbda.Fill(dbdt)
DataGridView1.DataSource = dbdt
Catch ex As Exception
MsgBox(ex.Message)
Finally
conn.Close()
End Try
End Sub
Private Sub TxtKundenname_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxtKundenname.TextChanged
DisallowNumber(TxtKundenname)
End Sub
Private Sub Txtdriverlicense_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Txtdriverlicense.TextChanged
End Sub
End Class
er stoppt bei Zeile 37
arrimage = DataGridView1.CurrentRow.Cells(15).Value
Vieleicht fällt euch der Fehler auf
Danke