Hallo!<br>
<br>
Meine Tablle bilde ich auf einer ComboBox ab (DisplayMember / ValueMember).
Der Code dazu lautet:<pre><hr><font face="Courier New"> Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
DM = New TDM(sDataBasePath)
</font><font face="Courier New"> CbxPrgCode.ValueMember = FLD_ID
CbxPrgCode.DisplayMember = FLD_TXT
CbxPrgCode.DataSource = DM.LoadTable(TBL_PROGS).Tables(0).DefaultView
End Sub</font><hr>Die Funktion LoadTable lautet:<br><br><font face="Courier New"> Public Function LoadTable(ByVal ATable As String) As DataSet
Dim lAdapter As OleDb.OleDbDataAdapter
Dim lCommand As OleDb.OleDbCommand
</font><font face="Courier New"> Try
MyConnection.Open()
lCommand = New OleDb.OleDbCommand("SELECT * FROM " & ATable, MyConnection)
lAdapter = New OleDb.OleDbDataAdapter(lCommand)
dsProgs = New Data.DataSet(TBL_PROGS)
</font><font face="Courier New"> lAdapter.Fill(dsProgs, ATable)
tblProgs = dsProgs.Tables(0)
Return dsProgs
Catch ex As Exception
Debug.WriteLine("LoadTable('" & ATable & "'): " & ex.Message)
End Try
End Function</font><br><br>
'MyConnection', 'tblProgs' und 'dsProgs' ist globale Variablen der Klasse 'DM'.<hr>
Der Versuch einen neuen Datensatz hinzuzufügen lautet:<br><br><font face="Courier New"> Private Sub BtnDBAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDBAdd.Click
Dim LFrmAdd As New FrmAdd
Dim lRow As Data.DataRow
</font><font face="Courier New"> Try
If LFrmAdd.ShowDialog = DialogResult.OK Then
lRow = DM.tblProgs.NewRow
'Werte füllen
lRow(FLD_ID) = additional.DB.NextId(DM.tblProgs)
---8X---
DM.tblProgs.Rows.Add(lRow)
DM.tblProgs.AcceptChanges()
End If
Finally
LFrmAdd.Dispose()
End Try
CbxPrgCode.Update()
End Sub</font><hr></pre>Ist natürlich klar, das es nicht so funktioniert wie ich will. Der neue Datensatz ist zwar in der Tabelle und wird auch in der ComboBox angezeigt, aber er ist nicht in der Datenbank, d.h. er wird nicht gespeichert. Daraus folgere ich, das ich irgendwas vergessen habe, aber über F1 finde ich keinen Anhaltspunkt und im Forum gehen alle andere Wege...<br><br>Vielen Dank!<br> Nico Stöckigt<br>
<br>
Meine Tablle bilde ich auf einer ComboBox ab (DisplayMember / ValueMember).
Der Code dazu lautet:<pre><hr><font face="Courier New"> Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
DM = New TDM(sDataBasePath)
</font><font face="Courier New"> CbxPrgCode.ValueMember = FLD_ID
CbxPrgCode.DisplayMember = FLD_TXT
CbxPrgCode.DataSource = DM.LoadTable(TBL_PROGS).Tables(0).DefaultView
End Sub</font><hr>Die Funktion LoadTable lautet:<br><br><font face="Courier New"> Public Function LoadTable(ByVal ATable As String) As DataSet
Dim lAdapter As OleDb.OleDbDataAdapter
Dim lCommand As OleDb.OleDbCommand
</font><font face="Courier New"> Try
MyConnection.Open()
lCommand = New OleDb.OleDbCommand("SELECT * FROM " & ATable, MyConnection)
lAdapter = New OleDb.OleDbDataAdapter(lCommand)
dsProgs = New Data.DataSet(TBL_PROGS)
</font><font face="Courier New"> lAdapter.Fill(dsProgs, ATable)
tblProgs = dsProgs.Tables(0)
Return dsProgs
Catch ex As Exception
Debug.WriteLine("LoadTable('" & ATable & "'): " & ex.Message)
End Try
End Function</font><br><br>
'MyConnection', 'tblProgs' und 'dsProgs' ist globale Variablen der Klasse 'DM'.<hr>
Der Versuch einen neuen Datensatz hinzuzufügen lautet:<br><br><font face="Courier New"> Private Sub BtnDBAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDBAdd.Click
Dim LFrmAdd As New FrmAdd
Dim lRow As Data.DataRow
</font><font face="Courier New"> Try
If LFrmAdd.ShowDialog = DialogResult.OK Then
lRow = DM.tblProgs.NewRow
'Werte füllen
lRow(FLD_ID) = additional.DB.NextId(DM.tblProgs)
---8X---
DM.tblProgs.Rows.Add(lRow)
DM.tblProgs.AcceptChanges()
End If
Finally
LFrmAdd.Dispose()
End Try
CbxPrgCode.Update()
End Sub</font><hr></pre>Ist natürlich klar, das es nicht so funktioniert wie ich will. Der neue Datensatz ist zwar in der Tabelle und wird auch in der ComboBox angezeigt, aber er ist nicht in der Datenbank, d.h. er wird nicht gespeichert. Daraus folgere ich, das ich irgendwas vergessen habe, aber über F1 finde ich keinen Anhaltspunkt und im Forum gehen alle andere Wege...<br><br>Vielen Dank!<br> Nico Stöckigt<br>
Comment