vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: Inhalt aus einer Listbox auslesen 
Autor: RalfH
Datum: 03.03.03 15:24

Ok,

dann füg mal in eine Form folgende Controls ein:
- 1 Listbox (List1)
- 5 Textboxen (Text1 - Text5)

Damit das Bsp. funktionier musst Du noch den vollständigen Dateinamen der
Datenbank und den Namen der Tabelle mit den Buchdaten ändern.
(bei Konstanten DatenbankName und TabellenName)

Anschließend folgenden Code in das Form-Modul einfügen:
Option Explicit
 
' vollständiger Datenbank-Dateiname
Const DatenbankName = "C:\Daten\Bibliothek.mdb"
 
' Namer der Tabelle, die die Daten enthält
Const TabellenName = "Buecher"
 
' Index oder Name des Field (Spalte),
' dessen Wert in der Listbox erscheinen soll
Const HauptFeldIndex = 0
 
' Index oder Namen der übrigen Fields (Spalte),
' deren Werte in den Textboxen erscheinen sollen
Const FeldIndexTB1 = 1
Const FeldIndexTB2 = 2
Const FeldIndexTB3 = 3
Const FeldIndexTB4 = 4
Const FeldIndexTB5 = 5
 
 
' automatisches Füllen der Listbox bei Laden der Form
Private Sub Form_Load()
  Dim DB As Database, Recdat As Recordset, Text As String
 
  ' Textboxen löschen
  Text1.Text = ""
  Text2.Text = ""
  Text3.Text = ""
  Text4.Text = ""
  Text5.Text = ""
 
  ' Listbox löschen
  List1.Clear
 
  On Error Resume Next
 
  ' Datenbank öffnen
  Set DB = DBEngine.OpenDatabase(DatenbankName)
 
  ' Bei Fehlern --> Meldung
  If Error <> "" Then
    MsgBox "Nix mit DB --> FEHLT!"
  Else
 
    ' Tabelle öffnen
    Set Recdat = DB.TableDefs(TabellenName).OpenRecordset
 
    ' Bei Fehlern --> Meldung
    If Error <> "" Then
      MsgBox "DB zwar da, aber Tabelle fehlt!"
    Else
 
      ' zum ersten Datensatz springen
      Recdat.MoveFirst
      On Error Resume Next
 
      ' Datensätze solange durchlaufen bis Fehler auftritt
      ' (z.B. Ende erreicht)
      While Error = ""
 
        ' Text aus der Hauptspalte auslesen
        Text = Recdat.Fields(HauptFeldIndex)
 
        If Error = "" Then
          ' wenn kein Fehelr aufgetreten ist, diesen Wert in
          ' die Liste einfügen
          List1.AddItem Text
 
          ' zum nächsten Datensatz springen
          Recdat.MoveNext
        End If
 
      Wend
 
      ' bei jedem Fehler (außer bei "Ende erreicht")
      ' Fehlermeldung zeigen
      ' #3021 = Datensatzzeiger ist hinter dem letzten Datensatz
      If Err.Number <> 3021 Then MsgBox Error, , Err.Number
 
      ' Tabelle schließen
      Recdat.Close
 
    End If
 
    ' Datenbank schließen
    DB.Close
 
  End If
 
  ' Verweise aufheben (Speicher freigeben)
  Set Recdat = Nothing
  Set DB = Nothing
 
  ' wenn möglich, ersten listeneintrag markieren
  If List1.ListCount > 0 Then List1.ListIndex = 0
End Sub
 
Private Sub List1_Click()
  Dim DB As Database, Recdat As Recordset, D As String
 
  On Error Resume Next
 
  ' Daten nur suchen, wenn ein Listeneintrag markiert wurde
  If List1.ListIndex < 0 Then Exit Sub
 
  ' Textboxen löschen
  Text1.Text = ""
  Text2.Text = ""
  Text3.Text = ""
  Text4.Text = ""
  Text5.Text = ""
 
  ' Datenbank öffnen
  Set DB = DBEngine.OpenDatabase(DatenbankName)
 
  ' Bei Fehlern --> Meldung
  If Error <> "" Then
    MsgBox "Nix mit DB --> FEHLT!"
  Else
 
    ' Tabelle öffnen
    Set Recdat = DB.TableDefs(TabellenName).OpenRecordset
 
    ' Bei Fehlern --> Meldung
    If Error <> "" Then
      MsgBox "DB zwar da, aber Tabelle fehlt!"
    Else
 
      ' zum ersten Datensatz springen
      Recdat.MoveFirst
      On Error Resume Next
 
      ' alle Datensätze durchlaufen, bis Fehler auftritt
      Do
        ' Wert des aktuellen Datensatzes mit dem des markierten Eintrages
        ' vergleichen, wenns übereinstimmt, Textboxen füllen und beenden
        If Recdat.Fields(HauptFeldIndex) = List1.List(List1.ListIndex) Then
          Text1.Text = Recdat.Fields(FeldIndexTB1)
          Text2.Text = Recdat.Fields(FeldIndexTB2)
          Text3.Text = Recdat.Fields(FeldIndexTB3)
          Text4.Text = Recdat.Fields(FeldIndexTB4)
          Text5.Text = Recdat.Fields(FeldIndexTB5)
          ' Schleife beenden
          Exit Do
        End If
 
        ' zum nächsten Datensatz
        Recdat.MoveNext
 
      Loop Until Error <> ""
 
      ' bei jedem Fehler (außer bei "Ende erreicht" / "Feld leer")
      ' Fehlermeldung zeigen
 
      ' #3021 = Datensatzzeiger ist hinter dem letzten Datensatz
      ' #94   = Datensatz enthält eine leere Zelle
      If Err.Number <> 3021 And Err.Number <> 94 And Error <> "" Then _
        MsgBox Error, , Err.Number
 
      ' Tabelle schließen
      Recdat.Close
 
    End If
 
    ' Datenbank schließen
    DB.Close
 
  End If
 
  ' Verweise aufheben (Speicher freigeben)
  Set Recdat = Nothing
  Set DB = Nothing
End Sub

Viel Spass,
R@lf

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Inhalt aus einer Listbox auslesen162SimonV03.03.03 13:56
Re: Inhalt aus einer Listbox auslesen792RalfH03.03.03 14:03
Re: Inhalt aus einer Listbox auslesen115SimonV03.03.03 14:11
Re: Inhalt aus einer Listbox auslesen847RalfH03.03.03 14:27
Re: Inhalt aus einer Listbox auslesen109SimonV03.03.03 14:34
Nachtrag108SimonV03.03.03 15:04
Re: Nachtrag836RalfH03.03.03 15:26
Re: Inhalt aus einer Listbox auslesen1.381RalfH03.03.03 15:24

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 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