vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Datenbanken · Sonstiges   |   VB-Versionen: VB607.04.03
ListView-Inhalt in der Datenbank speichern

Zwei Funktionen, mit denen sich der Inhalt eines ListView-Control in einer Datenbank speichern und wieder auslesen lässt.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  17.160 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11kein Beispielprojekt 

Unser heutiger Tipp zeigt einen Weg, wie sich der Inhalt eines ListView-Controls in einer Datenbank speichern und auch wieder auslesen lässt. Neben dem reinen Text sollen aber auch alle Zusatzinformationen, wie Farbattribute und Bildsymbol-Index gespeichert werden.

Da das ListView sehr viele Zeile und Spalten enthalten kann, lässt sich der gesamte Inhalt meist nicht in einem Standard Datenbank-Textfeld speichern. Wir benötigen also ein Datenbank-Feld, das sehr viele Informationen aufnehmen kann - ein Memofeld.

Der Inhalt des ListView-Controls muss hierzu zunächst in einen einzigen String zusammengefasst werden, der dann im Memofeld der Datenbank-Tabelle gespeichert werden kann:

Private Function db_lvwGetData(ListView As ListView) As String
  Dim oItem As ListItem
  Dim i As Integer
  Dim sData As String
 
  sData = ""
 
  With ListView
    For Each oItem In .ListItems
      ' 1. Spalte
      With oItem
        sData = sData & CStr(Abs(.Bold)) & _
          CStr(Abs(.Checked)) & "|" & _
          CStr(.Icon) & "|" & CStr(.SmallIcon) & "|" & _
          CStr(.ForeColor) & "|" & .Key & "|" & .Text
      End With
 
      ' weitere Spalten
      For i = 1 To oItem.ListSubItems.Count
        With oItem.ListSubItems.Item(i)
          sData = sData & vbTab & _
            CStr(Abs(.Bold)) & "|" & _
            CStr(.ReportIcon) & "|" & _
            CStr(.ForeColor) & "|" & .Text
        End With
      Next i
 
      ' nächste Zeile
      sData = sData & vbCrLf
    Next
  End With
 
  db_lvwGetData = sData
End Function

Das Speichern des ListView-Inhaltes erfolgt demnach wie folgt:

With oRecordset
  ...
  .Fields("memofeld").Value = db_lvwGetData(ListView1)
  ...
End With

Fehlt jetzt nur noch die Funktion, um den gespeicherten Inhalt wieder im ListView-Control anzuzeigen:

Private Sub db_lvwSetData(ListView As ListView, _
  ByVal dbData As String)
 
  Dim sLine() As String
  Dim sData() As String
  Dim sCol() As String
  Dim i As Integer
  Dim u As Integer
  Dim oItem As ListItem
  Dim oSubItem As ListSubItem
 
  With ListView
    ' ListView löschen
    .ListItems.Clear
 
    ' In die einzelnen Zeilen "zerlegen"
    sLine = Split(dbData, vbCrLf)
 
    ' alle Zeilen nacheinander hinzufügen
    For i = 0 To UBound(sLine) - 1
      ' Spalten-Infos
      If sLine(i) <> "" Then
        sData = Split(sLine(i), vbTab)
 
        ' 1. Spalte
        sCol = Split(sData(0), "|")
        Set oItem = .ListItems.Add(, , sCol(5))
        With oItem
          If sCol(4) <> "" Then .Key = sCol(4)
          .ForeColor = Val(sCol(3))
          .SmallIcon = Val(sCol(2))
          .Icon = Val(sCol(1))
          .Bold = (Val(Mid$(sCol(0), 1, 1)) <> 0)
          .Checked = (Val(Mid$(sCol(0), 2, 1)) <> 0)
        End With
 
        ' weitere Spalten
        For u = 1 To UBound(sData)
          sCol = Split(sData(u), "|")
          Set oSubItem = oItem.ListSubItems.Add(, , sCol(3))
          With oSubItem
            .Bold = (Val(sCol(0)) <> 0)
            .ReportIcon = Val(sCol(1))
            .ForeColor = Val(sCol(2))
          End With
        Next u
      End If
    Next i
  End With
End Sub

Für das Auslesen und Anzeigen, folgende Codezeile verwenden:

With oRecordset
  ...
  db_lvwSetData ListView1, .Fields("memofeld").Value
  ...
End With

Dieser Tipp wurde bereits 17.160 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-2024 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