vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Controls · sev-Controls   |   VB-Versionen: VB5, VB606.08.07
sevDataGrid - Manuelle Änderung von Datenbank-Inhalten

Hier wird gezeigt, wie man Änderungen an den Datenbank-Inhalten (einzelne Spalten) manuell via Code durchführen kann.

Autor:   Dieter OtterBewertung:  Views:  8.973 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11kein Beispielprojekt 

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")



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.