Hallo liebe VB Gemeinde,
ich habe ein Problem bei meinem ersten Datenbankprojekt mit Visual Basic 2010 Express und MS SQL Express. Ich greife mit einem winForm und darauf angeordneten Textboxen auf den Inhalt einer Tabelle in einer Datenbak zu. Das klappt soweit auch gut. Auch das Anfügen von Daten über INSERT klappt super, was aber nicht klappt ist das UPDATE von vorhandenen Datensätzen. Eine Fehlermeldung wird aber nicht generiert.
Private Sub cmdSave_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles cmdSave.Click
'über die IF-Abfrage wird geprüft, ob es sich um einen neuen, oder
' einen geänderten Datensatz handelt
Dim anzahl As Integer
If lblNeu.Text = "neu" Then
'es handelt sich um einen neuen Datensatz, der eingefügt werden muss
MessageBox.Show("Neuer Datebsatz")
Try
con.Open()
cmd.CommandText =
"insert into tblUser(anmeldename, kennwort, Nachname," & _
"Vorname, StrasseNr, PLZ, Ort, Telefon, eMail," & _
"RechtBenutzerverwaltung, RechtEinsatzAnlegen," & _
"RechtEinsatzAendern) values ('" &
txtAnmeldename.Text & "', '" &
txtPasswort.Text & "', '" &
txtNachname.Text & "', '" &
txtVorname.Text & "', '" &
txtStrasseNr.Text & "', '" &
txtPLZ.Text & "', '" &
txtOrt.Text & "', '" &
txtTelefon.Text & "', '" &
txtMailadresse.Text & "', '" &
cbxRechtBenutzerverwaltung.CheckState & "', '" &
cbxEinsatzAnlegen.CheckState & "', '" &
cbxEinsatzAendern.CheckState & "')"
anzahl = cmd.ExecuteNonQuery()
If anzahl > 0 Then
MessageBox.Show("Es wurde ein neuer Benutzer hinzugefügt!")
End If
Catch ex As Exception
MessageBox.Show("Bitte mindestens einen Anmeldenamen und ein" & _
"Kennwort eingeben!")
End Try
con.Close()
Else
'es handelt sich um einen vorhandenen Datensatz, der geändert
' gespeichert wird
MessageBox.Show("Änderung")
Try
con.Open()
cmd.CommandText =
"update tblUser set " &
"anmeldename = '" & txtAnmeldename.Text & "', " &
"kennwort = '" & txtPasswort.Text & "', " &
"Nachname = '" & txtNachname.Text & "', " &
"Vorname = '" & txtVorname.Text & "', " &
"StrasseNr = '" & txtStrasseNr.Text & "', " &
"PLZ = '" & txtPLZ.Text & "', " &
"Ort = '" & txtOrt.Text & "', " &
"Telefon = '" & txtTelefon.Text & "', " &
"eMail = '" & txtMailadresse.Text & "', " &
"RechtBenutzerverwaltung = '" & _
cbxRechtBenutzerverwaltung.CheckState & "', " &
"RechtEinsatzAnlegen = '" & cbxEinsatzAnlegen.CheckState & "'," & _
"" &
"RechtEinsatzAendern = '" & cbxEinsatzAendern.CheckState & "'," & _
"" &
"where PKID = " &
UserID(cboUserSuchen.SelectedIndex)
anzahl = cmd.ExecuteNonQuery()
If anzahl > 0 Then
MessageBox.Show("Der Datensatz wurde geändert!")
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
con.Close()
End If
End Sub Der erste, der INSERT Teil, funktioniert einwandfrei. Es wird ein neuer Datensatz hinzugefügt. Beim UPDATE eines vorhandenen Datensatzesn werden die Änderungen nicht in die Datenbank geschrieben.
Ich habe dann mal zu Testzwecken folgenden Code als SQL-Command eingegeben:
"UPDATE tblUser SET Nachname = 'noch ein Test' WHERE PKID = 10" Das funktioniert auch nicht!
Wenn ich diesen Befehl aber direkt im SQL-Management-Studio eintrage, wird er korrekt abgearbeitet.
Mit dem DELETE Command habe ich das gleiche Problem, aber erst ma eins nach dem anderen.
Ich bin leider ein wenig ratlos. Ich habe den gleichen Code schon in einem Testprogramm verwendet und das lief ohne Probleme.
Ich bin mir auch nicht sicher ob das hier die richtige Rubrik ist oder ob das unter den Bereich ADO.NET/Datenbanken gehört. Da ich mich als "Einsteiger" bezeichne und das auch sicherlich ein Einsteigerfehler ist, denke ich ist das hier richtig. Wenn nicht, bitte verschieben - Danke!
Ich hoffe auf Eure kontruktive Hilfe.
Ich bin mir auch nicht sicher, ob |