Supportnet / Forum / Datenbanken
Listbox
Frage
Hi,
ich hoffe ihr koennt mir helfen. Ich habe ein Formular mit 2 Listboxen - eine mit Eintraegen, eine ohne. Jetzt moechte ich in der einen Werte auswaehlen und per Tastendruck in die andere Liste schaffen. Wie mache ich das blos ?
Danke.
Ciao senifor
Antwort 1 von struppi
Hallo
Es geht ein spezielle Auswahl eines Listenfeldes in ein anderes Listenfeld zu schreiben.
Man nutzt die RowSourceType-Eigenschaft des Listenfeldes und schreibt ein spezielle benutzerdefinierte Funktion.
Diese Methode setzt aber ein wenig vb
Wissen voraus. Versuche dich mal in der Access Hilfe rund um die RowSourceType-Eigenschaft schlau zu machen.
Am besten wäre aber, du würdest zunächst versuchen einfache Wege zu gehen (Abfrage etc)
Es geht ein spezielle Auswahl eines Listenfeldes in ein anderes Listenfeld zu schreiben.
Man nutzt die RowSourceType-Eigenschaft des Listenfeldes und schreibt ein spezielle benutzerdefinierte Funktion.
Diese Methode setzt aber ein wenig vb
Wissen voraus. Versuche dich mal in der Access Hilfe rund um die RowSourceType-Eigenschaft schlau zu machen.
Am besten wäre aber, du würdest zunächst versuchen einfache Wege zu gehen (Abfrage etc)
Antwort 2 von senifor
Also, ich hab schon mal eine Fkt. geschrieben gehabt. Allerdings habe ich die Eintraegen nur in die erste Zeile der 2. Listbox bekommen.
Ciao senifor
Ciao senifor
Antwort 3 von struppi
Hallo
Ich kopiere hier mal das Beispiel aus der Access -Hilfe rein:
Die folgende benutzerdefinierte Funktion gibt eine Liste der nächsten vier Montage, die dem heutigen Datum folgen, zurück. Damit diese Funktion aus dem Listenfeld-Steuerelement aufgerufen werden kann, geben Sie MontageAuflisten als Einstellung der Eigenschaft RowSourceType an, und lassen Sie die Eigenschaft RowSource leer.
Function MontageAuflisten(Feld As Control,ID As Variant,Zeile As Variant,Spalte As Variant,Code As Variant) As Variant
Dim intOffset As Integer
Select Case Code
Case acLBInitialize Initialisieren.
MontageAuflisten = True
Case acLBOpen Öffnen.
MontageAuflisten = Timer Eindeutige ID.
Case acLBGetRowCount Zeilen lesen.
MontageAuflisten = 4
Case acLBGetColumnCount Spalten lesen.
MontageAuflisten = 1
Case acLBGetColumnWidth Spaltenbreite abrufen.
MontageAuflisten = -1 Standardbreite verwenden.
Case acLBGetValue Die Daten lesen.
intOffset = Abs((9 - Weekday(Now))Mod 7)
MontageAuflisten = Format(Now() + intOffset + 7 * Zeile,"d. mmmm")
End Select
End Function
Im nächsten Beispiel wird ein statisches Datenfeld verwendet, um die Namen der Datenbanken im aktuellen Verzeichnis zu speichern. Sie rufen diese Funktion auf, indem Sie MDBsAnzeigen als Einstellung der Eigenschaft RowSourceType eingeben und die Eigenschaft RowSource leer lassen.
Function MDBsAnzeigen(Feld As Control, ID As Variant, Zeile As Variant, Spalte As Variant, Code As Variant) As Variant
Static DBs(127) As String, Einträge As Integer
Dim Ergebniswert As Variant
Ergebniswert = Null
Select Case Code
Case acLBInitialize Initialisieren.
Einträge = 0
DBs(Einträge ) = Dir("*.MDB")
Do Until DBs(Einträge) = "" Or Einträge >= 127
Einträge = Einträge+1
DBs(Einträge) = Dir
Loop
Ergebniswert = Einträge
Case acLBOpen Öffnen.
Ergebniswert = Timer Eindeutige ID für Steuerelement erzeugen.
Case acLBGetRowCount Die Anzahl der Zeilen lesen.
Ergebniswert = Einträge
Case acLBGetColumnCount Die Anzahl der Spalten lesen.
Ergebniswert = 1
Case acLBGetColumnWidth Die Spaltenbreite.
Ergebniswert = -1 -1 besagt: Standardbreite verwenden.
Case acLBGetValue Die Daten abrufen.
Ergebniswert = DBs(Zeile)
Case acLBEnd Ende.
Erase DBs
End Select
MDBsAnzeigen = Ergebniswert
End Function
Ich kopiere hier mal das Beispiel aus der Access -Hilfe rein:
Die folgende benutzerdefinierte Funktion gibt eine Liste der nächsten vier Montage, die dem heutigen Datum folgen, zurück. Damit diese Funktion aus dem Listenfeld-Steuerelement aufgerufen werden kann, geben Sie MontageAuflisten als Einstellung der Eigenschaft RowSourceType an, und lassen Sie die Eigenschaft RowSource leer.
Function MontageAuflisten(Feld As Control,ID As Variant,Zeile As Variant,Spalte As Variant,Code As Variant) As Variant
Dim intOffset As Integer
Select Case Code
Case acLBInitialize Initialisieren.
MontageAuflisten = True
Case acLBOpen Öffnen.
MontageAuflisten = Timer Eindeutige ID.
Case acLBGetRowCount Zeilen lesen.
MontageAuflisten = 4
Case acLBGetColumnCount Spalten lesen.
MontageAuflisten = 1
Case acLBGetColumnWidth Spaltenbreite abrufen.
MontageAuflisten = -1 Standardbreite verwenden.
Case acLBGetValue Die Daten lesen.
intOffset = Abs((9 - Weekday(Now))Mod 7)
MontageAuflisten = Format(Now() + intOffset + 7 * Zeile,"d. mmmm")
End Select
End Function
Im nächsten Beispiel wird ein statisches Datenfeld verwendet, um die Namen der Datenbanken im aktuellen Verzeichnis zu speichern. Sie rufen diese Funktion auf, indem Sie MDBsAnzeigen als Einstellung der Eigenschaft RowSourceType eingeben und die Eigenschaft RowSource leer lassen.
Function MDBsAnzeigen(Feld As Control, ID As Variant, Zeile As Variant, Spalte As Variant, Code As Variant) As Variant
Static DBs(127) As String, Einträge As Integer
Dim Ergebniswert As Variant
Ergebniswert = Null
Select Case Code
Case acLBInitialize Initialisieren.
Einträge = 0
DBs(Einträge ) = Dir("*.MDB")
Do Until DBs(Einträge) = "" Or Einträge >= 127
Einträge = Einträge+1
DBs(Einträge) = Dir
Loop
Ergebniswert = Einträge
Case acLBOpen Öffnen.
Ergebniswert = Timer Eindeutige ID für Steuerelement erzeugen.
Case acLBGetRowCount Die Anzahl der Zeilen lesen.
Ergebniswert = Einträge
Case acLBGetColumnCount Die Anzahl der Spalten lesen.
Ergebniswert = 1
Case acLBGetColumnWidth Die Spaltenbreite.
Ergebniswert = -1 -1 besagt: Standardbreite verwenden.
Case acLBGetValue Die Daten abrufen.
Ergebniswert = DBs(Zeile)
Case acLBEnd Ende.
Erase DBs
End Select
MDBsAnzeigen = Ergebniswert
End Function
Antwort 4 von senifor
Danke. senifor

