Sub Prozeduren in Funktionen umwandeln

07/11/2008 - 13:05 von Marion Hildebrandt | Report spam
Hallo,
ich möchte meine Datenbank übersichtlicher gestalten, in dem ich Sub
Prozeduren (die ich in verschiedenen Formularen wiederkehrend verwende) in
eine Funktion umtexte.
Den Inhalt meiner Subs verstehe ich, aber mir ist jetzt nicht ganz klar, wie
ich daraus eine Funktion gestalte.

Folgendes Beispiel einer Sub Prozedur möchte ich in eine Funktion umwandeln:
Private Sub FTFSuche_AfterUpdate()
….
Dim astrFelder() As String
Dim strFilter As String
Dim I As Long
myarray = Split(Me.FTFSuche, " ")
For I = LBound(myarray) To UBound(myarray)
strFilter = strFilter & " AND ([ADSuche] LIKE '*" & myarray(I) & "*')"
Next I
If Len(strFilter) > 0 Then
strFilter = Mid(strFilter, 6) 'erstes AND entfernen
Form.Filter = strFilter
Form.FilterOn = True
End If
….
End Sub

Ich denke folgende Variablen müsste ich an die Funktion übergeben:
1.das ungebundenen Textfeldes in meinem Formular (in dem das Suchwort
eingegeben wird): FTFSuche
2.das Datensatzfeld aus der Abfrage, welches für die Suche zum Erstellen des
Filters verwendet wird: ADSuche
3.den Namen des Formulars

Es wàre prima, wenn mir jemand die Sub Prozedur als Beispiel umtexten
könnte. Ich habe natürlich schon selbst probiert, habe aber einfach große
Probleme mit der Syntax.

Viele Grüße aus Hamburg
Marion

PS: Betriebssystem Vista, arbeite mit einer nichtkonvertierten Datenbank A03
in A07
 

Lesen sie die antworten

#1 Mark Doerbandt
07/11/2008 - 13:33 | Warnen spam
Hallo, Marion,

Marion Hildebrandt:

ich möchte meine Datenbank übersichtlicher gestalten, in dem ich Sub
Prozeduren (die ich in verschiedenen Formularen wiederkehrend verwende) in
eine Funktion umtexte.



ich denke, hier erliegst Du einer Sprachverwirrung. Der Oberbegriff
ist Prozedur. Dazu gehören Subs und Functions. Eine Function gibt
einen Wert zurück, eine Sub nicht.

Den Inhalt meiner Subs verstehe ich, aber mir ist jetzt nicht ganz klar, wie
ich daraus eine Funktion gestalte.



Das ist in der Regel auch nicht sinnvoll, denn warum sollen Deine
Prozeduren plötzlich einen Wert zurück geben?

Folgendes Beispiel einer Sub Prozedur möchte ich in eine Funktion umwandeln:
Private Sub FTFSuche_AfterUpdate()
….
Dim astrFelder() As String
Dim strFilter As String
Dim I As Long
myarray = Split(Me.FTFSuche, " ")
For I = LBound(myarray) To UBound(myarray)
strFilter = strFilter & " AND ([ADSuche] LIKE '*" & myarray(I) & "*')"
Next I
If Len(strFilter) > 0 Then
strFilter = Mid(strFilter, 6) 'erstes AND entfernen
Form.Filter = strFilter
Form.FilterOn = True
End If
….
End Sub

Ich denke folgende Variablen müsste ich an die Funktion übergeben:
1.das ungebundenen Textfeldes in meinem Formular (in dem das Suchwort
eingegeben wird): FTFSuche
2.das Datensatzfeld aus der Abfrage, welches für die Suche zum Erstellen des
Filters verwendet wird: ADSuche
3.den Namen des Formulars



Ich vermute nun, Du meinst eigentlich etwas anderes: nàmlich, dass Du
Deine Prozeduren mit Parametern versehen willst.

Das könnte dann so aussehen:

Private Sub FilterForm(Search As String, _
Fieldname As String, F As Form)
' ...
Dim astrFelder() As String
Dim strFilter As String
Dim I As Long
myarray = Split(Search, " ")
For I = LBound(myarray) To UBound(myarray)
strFilter = strFilter & _
" AND ([" & Fieldname & "] LIKE '*" & _
myarray(I) "*')"
Next I
If Len(strFilter) > 0 Then
strFilter = Mid(strFilter, 6) 'erstes AND entfernen
F.Filter = strFilter
F.FilterOn = True
End If
' ...
End Sub


Gruss - Mark

Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beitràge senden.

Ähnliche fragen