Fehler wenn Daten geändert werden
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von menorca.
-
-
Hallo,
da steht doch, dass da eine Datasource-Eigenschaft festgelegt ist, darum darfst du nicht das in derListbox.Items
-Klasse ändern, sondern nutze das Objekt, was in derListBox.DataSource
festgelegt ist.
Beispiel:
Ich will den ersten Listbox-Eintrag in "Test" ändern.
Dort ist dann das Array datasource deine Festlegung in der DataSource.
d.h. Nicht per Listbox ändern, sondern über die Festlegung der DataSource.
MFG
Alex-Digital -
so über Button ändere ich den Datensatz
Quellcode
- Dim ConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
- "Data Source=D:\BemusterungsDB\EMPB_BE.mdb"
- Dim myConnection As OleDbConnection = New OleDbConnection
- myConnection.ConnectionString = ConnString
- If Me.tbAntrID.Text = "" Or Me.tbAntrID.Text = 0 Then
- MsgBox("Bitte einen Antrieb auswählen!" & vbCrLf & _
- "Vorgang wird abgebrochen!", MsgBoxStyle.Exclamation, "Datensatz ändern")
- Exit Sub
- End If
- Try
- Dim sql As String = " UPDATE tblAntrieb SET tblAntrieb.AntrText = '" & tbAntrieb.Text & "'" & _
- " WHERE tblAntrieb.AntrID=" & Me.tbAntrID.Text & ""
- 'Befehl ausführen
- myConnection.Open()
- MsgBox("Änderung, wurde gespeichert", MsgBoxStyle.Information, "Vorgang Daten ändern")
- Dim com As New OleDbCommand
- Dim dbread
- com = New OleDbCommand(sql, myConnection)
- dbread = com.ExecuteReader()
- Me.ListBox6.Items.Clear()
- Call Antriebliste()
- Me.ListBox6.Refresh()
- Catch ex As Exception
- MsgBox("Fehler aufgetreten: " & vbCrLf & _
- ex.Message)
- End Try
anschließend soll die ListBox mit geänderten daten neu gezeichnet (geladen werden)
Quellcode
- Public Sub Antriebliste()
- Try
- Dim ConnectionString As String = ("Provider=Microsoft.Jet.OLEDB.4.0;" & _
- "Data Source=D:\BemusterungsDB\EMPB_BE.mdb")
- Dim SelectString As String = "SELECT 0 AS AntrID,'<< Antrieb vorhanden >>' AS AntrText " & _
- "FROM(tblAntrieb) " & _
- "UNION SELECT AntrID,AntrText " & _
- "FROM tblAntrieb;"
- Dim da As New OleDb.OleDbDataAdapter(SelectString, ConnectionString)
- da.SelectCommand.Parameters.AddWithValue("AntrID,AntrText", Me.ListBox6.Text)
- Dim Data As New DataSet
- da.Fill(Data, "tblAntrieb")
- ListBox6.DataSource = Data.Tables.Item("tblAntrieb")
- ListBox6.ValueMember = "AntrID"
- ListBox6.DisplayMember = "AntrText"
- Catch ex As Exception
- MessageBox.Show(ex.Message, "Beim Öffnen der Datenbank ist ein Fehler" & _
- "aufgetreten.")
- End Try
- End Sub
wie meinst du es jetzt mit deiner Lösung -
na hier ist das doch mitte DataSource:
menorca schrieb:
-
-
Mach da mal das Try-Catch raus, da knallt es an der Stelle, wo der Fehler auftritt, nicht da, wo Du eine MessageBox hingeschrieben hast.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! -
-
Dann setz mal einen Haltepunkt rein und steppe das Programm zeilenweise durch und überprüfe, ob es sich so verhält, wie Du es gedacht hast.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! -
Sorry, konnte deinen Tip erst jetzt prüfen
Quellcode
- Dim sql As String = " UPDATE tblKunde SET tblKunde.KuWerk = '" & tbwerknr.Text & "'," & _
- " tblKunde.KuText = '" & tbKunde.Text & "'" & _
- " WHERE tblKunde.KuID=" & Me.tbkuid.Text & ""
- 'Befehl ausführen
- myConnection.Open()
- MsgBox("Änderung, wurde gespeichert", MsgBoxStyle.Information, "Vorgang Daten ändern")
- Dim com As New OleDbCommand
- Dim dbread
- com = New OleDbCommand(sql, myConnection)
- dbread = com.ExecuteReader()
- '*
- Call Kundenliste()
- Me.ListBox1.Refresh()
- '*
- Catch
- ' ''MsgBox("Fehler aufgetreten: " & vbCrLf & _
- ' '' ex.Message)
- End Try
diese Stelle musste raus
doch der geänderte Wert (String) wird nicht sofort in der ListBox aktualisiert
beim neuladen der Form ist der Wert dann der geänderte. Der Anwender möchte aber doch sofort seine Änderung erkennen
nach dem er die Meldung erhält Wert geändert -
Du verwendest eien DataSource, also musst Du die Änderung Deiner Daten in dieser DataSource vornehmen, nicht im ListView.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! -
-
wieso? Ist etwas nicht in Ordnung, wie du die DataSource setzst?
Wennja, was?, und wer hat das gesagt? -
Hi
ErfinderDesRades,
mit deinem Beitrag #4 komme ich nicht zurecht.
nach entfernen der clear Methode, bekomme ich den Datensatz geändert, doch die ListBox wird nicht gleich mit geänderten Eintrag
aktualisiert, erst wenn ich die Form neu lade. Das soll ja gleich nach "Update" geschehen das der Anwender die Änderung sieht -
also kleine Erweiterung von post#4:
Wenn du also etwas ändern willst, ändere es nicht in den ListboxItems, sondern ändere es in Data.Tables.Item("tblAntrieb").
Und ändere es auch nicht in der Datenbank, sondern ändere es in Data.Tables.Item("tblAntrieb"). -
Sorry, sorry
ich kann immer noch nicht folgen, wie ich es machen soll.
ich habe einen Button "Update", wenn ein 'Kunde' ausgewählt wird und geändert werden muss dann schreibe ich es so in die Datenbank
Quellcode
- '//
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Dim ConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
- "Data Source=D:\BemusterungsDB\EMPB_BE.mdb"
- Dim myConnection As OleDbConnection = New OleDbConnection
- myConnection.ConnectionString = ConnString
- If Me.tbkuid.Text = "" Or Me.tbkuid.Text = 0 Then
- MsgBox("Bitte einen Kunden auswählen!" & vbCrLf & _
- "Vorgang wird abgebrochen!", MsgBoxStyle.Exclamation, "Datensatz ändern")
- Exit Sub
- End If
- Try
- Dim sql As String = " UPDATE tblKunde SET tblKunde.KuWerk = '" & tbwerknr.Text & "'," & _
- " tblKunde.KuText = '" & tbKunde.Text & "'" & _
- " WHERE tblKunde.KuID=" & Me.tbkuid.Text & ""
- 'Befehl ausführen
- myConnection.Open()
- MsgBox("Änderung, wurde gespeichert", MsgBoxStyle.Information, "Vorgang Daten ändern")
- Dim com As New OleDbCommand
- Dim dbread
- com = New OleDbCommand(sql, myConnection)
- dbread = com.ExecuteReader()
- '*
- Call Kundenliste()
- Me.ListBox1.Refresh()
- '*
- Catch
- ' ''MsgBox("Fehler aufgetreten: " & vbCrLf & _
- ' '' ex.Message)
- End Try
- End Sub
und über neu einlesen
muss doch nun eigentlich, die ListBox aktuell sein, also wie soll ich die Änderung nun abfahren das versteh ich noch nicht
auch deine "Fette" Anmerkung bringt mir kein Verständnis was du eigentlich meinst -
hmm.
den Code-Ausdruck als Einheit aufgefasst, sinds 4 Worte:ändere es inData.Tables.Item("tblAntrieb")
Einfacher kann ich mich nicht ausdrücken. -
Habe ich doch probiert,
Quellcode
- MsgBox("Änderung, wurde gespeichert", MsgBoxStyle.Information, "Vorgang Daten ändern")
- Dim com As New OleDbCommand
- Dim dbread
- com = New OleDbCommand(sql, myConnection)
- dbread = com.ExecuteReader()
- '*
- Data.Tables.Item("tblAntrieb")
- Me.ListBox1.Refresh()
- '*
- Catch
- ' ''MsgBox("Fehler aufgetreten: " & vbCrLf & _
- ' '' ex.Message)
- End Try
jetzt kommt tables ist kein Member von Data, das war doch auch meine Frage wie und wohin sind wohl mehr als 4 Worte -
-
-
ups - ich meinte natürlich post#3, also deinen eigenen Code.
Und du fragst schon wieder, wie man einen Listbox-Eintrag ändern soll. Ja, und dass mans garnet ändern soll, das kannst du halt nicht fassen.
Man muß die DataRow ändern, an der das ListboxItem gebunden ist.
Und diese DataRow ist in der DataTable, an die die Listbox gebunden ist.
-
Ähnliche Themen
-
Wilson - - Sonstige Problemstellungen
-
4 Benutzer haben hier geschrieben
- Gast (12)
- ErfinderDesRades (7)
- RodFromGermany (3)
- Alexander M. (1)