PDA

Vollständige Version anzeigen : Datensatz ändern


janeWolf
29.09.2003, 14:03
Hallo Leute, wie ich sehe habt ihr hier ja ganz gute antworten!

Zur Erklärung, ich lese meinen Datensatz 1 aus der ersten Tabelle (EDVProbleme) in ein DataGrid per DataSet dann speichere ich den Datensatz in die nächste Tabelle (EDVBearbeiteteAufträge) gleichzeitig soll in der ersten Tabelle die Spalte Bearbeitet von dem Datensatz1 geändert werden.Ich habe mir da selber was zusammengebastelt.
Weiß allerdings nicht ob es ganz richtig ist
Im Moment bekomme ich auch in der der Messagebox einen Fehler zurückgegeben mit dem ich nicht soviel anfangen kann:
DATENTYPEN IN KRIETERIENAUSDRUCK UNVERTRÄGLICH
Es wäre super nett wenn ihr mal einen Blick auf meinen Code werfen könntet.
Vieleicht könnt ihr mir ja sagen was da falsch läuft!
Hier der Code:

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=EDV-Projekt.mdb") cmdd = New OleDbCommand("SELECT * FROM EDVBearbeiteteAufträge", conn)


Dim insSQL As String = "INSERT INTO EDVBearbeiteteAufträge" _ & "( Auftragsnummer, Datum, Name_Mitarbeiter_DOS, Name_Auftraggeber," _ & " Abteilung_Auftraggeber, Auftrag, Dringlichkeit, Bemerkung," _ & "Zeitaufwand) VALUES (@1, @2, @3, @4, @5, @6, @7, @8, @9)"


Dim cmd As New OleDbCommand(insSQL, conn)
da = New OleDbDataAdapter(cmdd)
ds = New DataSet()
conn.Open()
da.Fill(ds, "Artliste")
conn.Close()
dt = ds.Tables.Item("Artliste")


cmd.Parameters.Add("@1", OleDbType.Integer, 10, "Auftragsnummer")
cmd.Parameters.Add("@2", OleDbType.Date, 10, "Datum")
cmd.Parameters.Add("@3", OleDbType.VarChar, 80, "Name_Mitarbeiter_DOS")
cmd.Parameters.Add("@4", OleDbType.VarChar, 80, "Name_Auftraggeber")
cmd.Parameters.Add("@5", OleDbType.VarChar, 100, "Abteilung_Auftraggeber")
cmd.Parameters.Add("@6", OleDbType.VarChar, 500, "Auftrag")
cmd.Parameters.Add("@7", OleDbType.Integer, 3, "Dringlichkeit")
cmd.Parameters.Add("@8", OleDbType.VarChar, 100, "Bemerkung")
cmd.Parameters.Add("@9", OleDbType.Integer, 5, "Zeitaufwand")
da.InsertCommand = cmd


Dim rw As DataRow = dt.NewRow()
rw("Auftragsnummer") = TextBox1.Text
rw("Datum") = TextBox2.Text rw("Name_Mitarbeiter_DOS") = ComboBox1.Text
rw("Name_Auftraggeber") = TextBox3.Text
rw("Abteilung_Auftraggeber") = TextBox6.Text
rw("Auftrag") = TextBox5.Text
rw("Dringlichkeit") = TextBox8.Text
rw("Bemerkung") = ComboBox2.Text
rw("Zeitaufwand") = TextBox9.Text
dt.Rows.Add(rw)


conn.Open()
Try
da.Update(dt)
Beep()
Catch ex As Exception
MsgBox(ex.Message)
End Try
conn.Close()


Dim connae As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=EDV-Projekt.mdb;")
Dim daae As New OleDbDataAdapter("SELECT * FROM EDVProbleme", connae)


Dim dsae As New DataSet()
Dim cmdae As New OleDbCommand()
ds.Clear()
cmdae.Connection = connae
cmdae.CommandText = "UPDATE EDVProbleme SET Bearbeitet = '" & TextBox10.Text & _ "'WHERE Auftragsnummer = '" & TextBox1.Text & "'"


Try
connae.Open()
Label13.Text() = cmdae.ExecuteNonQuery().ToString
Catch ex As Exception
MsgBox(ex.Message)
End Try
daae.Fill(dsae, "Aendern")
connae.Close()
DataGrid1.SetDataBinding(dsae, "Aendern")

Serge
29.09.2003, 14:21
Es wäre sinnvoll uns die Zeile mitzuteilen inder diese Fehlermeldung verursacht wird

janeWolf
29.09.2003, 14:53
Oh ja du hast recht!
Also der Fehler wird in der der Try Catch Anweisung ausgegeben.

nutzo
02.10.2003, 11:22
Hooridoo!

Also, wie ich das sehe liegt das Problem an der WHERE-Bedingung cmdae.CommandText = "UPDATE EDVProbleme SET Bearbeitet = '" & TextBox10.Text & _ "'WHERE Auftragsnummer = '" & TextBox1.Text & "'"

Im Command-Block hast du nämlich die Auftragsnummer als Integer angegeben, aber in der WHERE-Bedingung übergibst du die Auftragsnummer als String und jetzt versucht die DB verzweifelt einen String zu vergleichen.

Konvertiere deinen TextBox1.Text lieber zu einem Int.

Gruss
nutzo