vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2014
 
zurück
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:     [ Jetzt bewerten ]Views:  4.540 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8kein 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")

Dieser Tipp wurde bereits 4.540 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


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.
 
   

Druckansicht Druckansicht Copyright ©2000-2014 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel