Keine Datenspeicherung in der Datenbank

28/10/2008 - 09:45 von Sebastian Schicker | Report spam
Hallo,
ich habe ein eigenartigen Fehler den ich leider nicht raus bekomme.
Ich möchte Daten in einer Datenbank updaten. Die zu bearbeitenden Zellen
sind bzw. sollen leer sein. Ein Feld ist ein Bool- Feld, das andere wird mit
Text gefüllt.
Mein problem ist nun, das mein Syntax anscheinend stimmt, da ich keine
Fehlermeldung oder àhnliches erhalte. Ich sehe die Daten im Dataset über ein
DataGrid allerdings stehen die Daten nach dem Update vom Datenbankadapter
nicht in der Datenbank. Hier mal der Quelltext dazu. (Kann man eigentlich ein
Update auf eine leere Zelle durchführen oder wàre da Insert besser? Habe es
auch schon damit versucht und es funktionierte leider auch nicht.)

Private db As OleDbConnection = New OleDbConnection
Private comm As OleDbCommand = New OleDbCommand
Private adapt As OleDbDataAdapter = New OleDbDataAdapter
Private dsdaten As DataSet = New DataSet
Private dvdaten As DataView = New DataView

Private Sub MenuItemLaden_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MenuItemLaden.Click

GBLaden.Location = New Point(16, 16)
GBLaden.Visible = True

constring()

db.Open()
comm.Connection = db
comm.CommandText = "SELECT * FROM Projekte"

adapt.SelectCommand = comm
adapt.Fill(dsdaten, "Projekte")

db.Close()

Dim i As Integer = 0

For i = 0 To dsdaten.Tables.Count

CBProjektListe.Items.Add(dsdaten.Tables("Projekte").Rows(i).Item(1))
Next
End Sub

Private Sub btnLaden_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnLaden.Click

dvdaten.Table = dsdaten.Tables("Projekte")

dvdaten.RowFilter = "Name LIKE '" & CBProjektListe.SelectedItem & "'"

'überprüfung ob Projekt schon geöffnet wird
If dvdaten.Item(0).Item(4) = True Then
MsgBox("Das gewünschte Projekt ist derzeit durch " &
dvdaten.Item(0).Item(5) & " belegt.)
Exit Sub
Else

db.Open()

dvdaten.Item(0).Item(4) = True '<-- dieser werte müssen eingetragen werden
dvdaten.Item(0).Item(5) = "Mr.X" '<-- den Benutzernamen lese ich noch aus

DataGrid1.DataSource = dsdaten
dsdaten.AcceptChanges()
comm.Connection = db
comm.CommandText = "UPDATE Projekte SET Open = '" &
dvdaten.Item(0).Item(4) & "', CurrentUser = '" & dvdaten.Item(0).Item(5) & "'
WHERE ProjektID = '" & dvdaten.Item(0).Item(0) & "'"

'comm.CommandText = "INSERT INTO Projekte (Open, CurrentUser)
VALUES (" & dvdaten.Item(0).Item(4) & "," & dvdaten.Item(0).Item(5) & ")
WHERE ProjketID = " & dvdaten.Item(0).Item(0) & ""

MsgBox(comm.CommandText)
adapt.UpdateCommand = comm
Try
adapt.Update(dsdaten, "Projekte")
Catch ex As Exception
MsgBox(ex.Message)
Finally
db.Close()
End Try
End If
End Sub

Danke schon mal im vorraus.
 

Lesen sie die antworten

#1 Ralf Schmidt
28/10/2008 - 11:28 | Warnen spam
Sebastian Schicker schrieb:

Mein problem ist nun, das mein Syntax anscheinend stimmt, da ich keine
Fehlermeldung oder àhnliches erhalte. Ich sehe die Daten im Dataset über ein
DataGrid allerdings stehen die Daten nach dem Update vom Datenbankadapter
nicht in der Datenbank.



Wenn du dein Programm aus der Entwicklungsumgebung heraus startest wird immer eine Kopie
der Datenbank angelegt mit der dann gearbeitet wird.
In der 'Echten" Datenbank sind dann natürlich keine Verànderungen vorgenommen worden.
Dieses 'kopieren' kann man aber in den Eigenschaften abschalten, so das immer mit der original
DB gearbeitet wird.

Ähnliche fragen