Tools & Components Tools & Components
    Professionelle Entwicklerkomponenten für Visual Basic, .NET und MS-Access
www.tools4vb.com   
 
 
  HOME
  Willkommen
  News
  Impressum
  Datenschutz
  Referenzen
  Kundenmeinungen
  TOP-Angebot
  Online-Shop
 
  ENTWICKLERTOOLS
  Oberfläche & Design
  DataGrid & Listen
  Statistik
  Internet / ISDN
  Zip & Verschlüsselung
  DTA / Kontonummern
 
  DOWNLOAD
  Komplettinstallation
  Bugfixes und Patches
  Online-Hilfe
  Sonstige Downloads
 
  SUPPORT
  Diskussionsforum
  Tipps & Tricks
  FAQ
 
  FUNKTIONEN
  als Startseite
  zu den Favoriten
 
  PARTNERSEITEN
vb@rchiv - Alles für VB-Entwickler roSoft - mehr als 15 Jahre Profi-Software!
 
 
 

HOME > TIPPS & TRICKS > sevDataGrid 2.0

 

Tipps & Tricks: sevDataGrid 2.0

 
 

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:9858

 
 

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ück zur Übersichtsseite

   

 

nach oben

Optimiert für den Internet Explorer bei 1024x768 Pixel
Copyright ©1997-2019 Tools & Components, 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.