|
|
|
Manuelle Änderung von Datenbank-Inhalten Hier wird gezeigt, wie man Änderungen an den Datenbank-Inhalten (einzelne Spalten) manuell via Code durchführen kann.
|
Produktversionen: | sevDataGrid 2.0 |
VB-Versionen: | VB5/6, MS-Access |
Autor: | Dieter Otter |
Datum: | 03.08.07 |
Views: | 12440 |
|
|
|
  |
|
Immer und immer wieder taucht die Frage auf, wie man Änderungen von Datenbank-Inhalten manuell via Code vornehmen kann. Viele User versuchen das Ganze zunächst über die Text-Eigenschaft
zu realisieren. Die Ansicht im DataGrid wird hierbei auch entsprechend aktualisiert - jedoch wird der neue Feldinhalt nicht in der Datenbank gespeichert.
Um im Recordset-Mode Datenbank-Inhalte per Code dauerhaft zu ändern, muss der neue Feldinhalt direkt über das Recordset-Objekt zugewiesen und gespeichert werden.
Beispiel:
Der Inhalt der aktuell selektierten Datenzeile soll geändert und gespeichert werden:
With Grid1.Recordset
.Edit ' nur falls DAO verwendet wird
.Fields("feldname") = "neuer Wert"
.Update
End With
' Ansicht aktualisieren
Grid1.RowRefresh
Das Ganze lässt sich auch in eine universelle Funktion verpacken, mit der man Änderungen bequem per Funktionsaufruf vornehmen kann.
' Dauerhafte Änderungen am Datenbank-Inhalt vornehmen
Public Function DoChange(Grid As Object, _
ByVal nRow As Long, _
ByVal nCol As Variant, _
ByVal NewValue As Variant, _
Optional ByVal bRefresh As Boolean = True, _
Optional ByVal bSilent As Boolean = False) As Boolean
With Grid.Recordset
' zum gewünschten Datensatz wechseln
.MoveFirst
If nRow > 1 Then .Move nRow - 1
' Datensatz bearbeiten
.Edit ' nur falls DAO
If IsNumeric(nCol) Then
.Fields(nCol - 1) = NewValue
Else
.Fields(nCol) = NewValue
End If
.Update
End With
' Ansicht im DataGrid aktualisieren
If bRefresh Then Grid.RowRefresh nRow
DoChange = True
Exit Function
ErrHandler:
If Not bSilent Then
MsgBox "Fehler beim Aktualisieren des Recordsets!" & vbCrLf & _
CStr(Err.Number) & " " & Err.Description, vbExclamation Or vbOKOnly
End If
DoChange = False
End Function
Aufruf:
Es soll in der 10. Datenzeile die 5. Spalte geändert werden:
Dim bResult As Boolean
bResult = DoChange(Grid1, 10, 5, "neuer Wert")
Anstelle der Spaltennummer können Sie auch die Feldbezeichnung im Recordset angeben:
bResult = DoChange(Grid1, 10, "feldname", "neuer Wert")
Zurück zur Übersichtsseite
|