PDA

Vollständige Version anzeigen : Liste füllen von einem Modul


Gery
29.09.2005, 14:44
ich habe folgenden Problem. ich will eine Liste aber von einem Modul aus. Solange ich den Befehl im Formular durchführe funtioniert es wunderbar. Aber ehrlich ich habe keine Ahnung wie ich das von einem Klassenmodul aus machen soll. Hier mein code:
Private Dateiliste(1002, 3) As Variant
Private DateilisteAnzahl As Integer

Private Function ListeFüllen(St As Control, ID, Zeile, Spalte, Code) As Variant
Select Case Code
Case 0: ListeFüllen = True 'Initialisieren
Case 1: ListeFüllen = 1 'Öffnen
Case 3: ListeFüllen = DateilisteAnzahl 'Zeilenanzahl
Case 4: ListeFüllen = 4 'Spaltenanzahl
Case 5: ListeFüllen = -1 'Spaltenbreite
Case 6: ListeFüllen = Dateiliste(Zeile, Spalte) 'Listeneintrag
Case 7: ListeFüllen = Null 'Formatzeichenfolge
End Select
End Function

Private Sub DateiArrayFüllen()
'On Error Resume Next
Dim Bedingung As String
Dim X As Integer
Dateiliste(0, 0) = Null
Dateiliste(0, 1) = Null
Dateiliste(0, 2) = Null
Dateiliste(0, 3) = Null
DoEvents
Bedingung = Me.SText
Dim TabelleInport As Database
Dim TI As Recordset
Set TabelleInport = CurrentDb
Set TI = TabelleInport.OpenRecordset("Tbl_Temp_Admin_Ersatzteil_suche", dbOpenDynaset)
TI.FindFirst Bedingung
Do While TI.NoMatch = False
Dateiliste(X, 0) = TI!ID
Dateiliste(X, 1) = TI!Feature_Code
Dateiliste(X, 2) = TI!Anzahl
Dateiliste(X, 3) = TI!Feature_Bezeichnung

If X = 1000 Then GoTo Abbruch
X = X + 1
'Wiederholen der Suche nach einem weiteren Datenamen
TI.FindNext Bedingung
Loop
Abbruch:
DateilisteAnzahl = X
TI.Close
Exit Sub
End Sub


Mein Listenfeld heist:IstDateiliste
Herkunfttyp: ListeFüllen
Den Aufruf mache ich mit: DateiArrayFüllen
Danach:Me.IstDateiliste.Requery

ich hoffe es kann mir jemand helfen.
lg Gery

Smaug
29.09.2005, 15:26
ich habe das gerade an einem 1-spaltigen Listenfeld mit einer simplen Callback-Funktion ausprobiert und es hat auch einwandfrei geklappt als ich die Callback-Funktion Public in einem öffentlichen Modul hinterlegt habe.
Das Array wird dann wohl auch formularübergreifend (public) deklariert sein müssen ?!
Für den Verweis auf das Ausgangsformular aus dem der Code herkommt kann vielleicht das CodeContextObject genutzt werden.

Gery
29.09.2005, 15:41
Vorerst danke für die rasche Antwort. Leider verstehe ich das nicht so recht, da ich ein Amateur in Access noch bin. :(
Ich dachte das es irgend einen Befehl gibt, den man über das Modul das Füllen veranlassen kann. Habe schon probiert:
[Formularname]![DateiArrayFüllen]
[Formularname].DateiArrayFüllen
aber sind immer Fehlermeldungen. Muss ich vielleicht das Privat ändern?
Private Sub DateiArrayFüllen()

Ich hoffe es kann mir jemand ein Beispiel geben.

Smaug
29.09.2005, 16:08
eigentlich widerspricht das dem Sinn einer Callback-Funktion (schau auch mal in der Forumsuche nach diesem Begriff - IMHO gibt es hierzu einige interessante Threads) da der Sinn darin besteht, dass sich das Listenfeld automatisch füllt.