Syntaxfehler in Public Sub

07/11/2008 - 20:14 von Marion Hildebrandt | Report spam
Guten Abend,
ich habe hier ein sinnloses Syntaxproblem, von dem ich vor 2 Stunden schon
mal geglaubt habe, ich hàtte es mit eurer Hilfe gelöst. Jetzt eben benutze
ich die Sub-Prozedur und fall fast vom Stuhl, weil das alte Problem zack
wieder da war.
Zur Erlàuterung: Ich habe ein Formular, basierend auf einer Abfrage. Durch
Eingabe eines Suchwortes in ein ungebundenes Textfeld „FTFSuche“ möchte ich
die anzuzeigenden Datensàtze nach dem Inhalt des Abfragefeldes „ADSuche“
filtern. Da ich das Prozedere für diese Suche in weiteren Formularen
verwenden möchte , habe ich eine Public Sub in einem Modul erstellt:

Public Sub FilterForm(Search As String, Fieldname As String, F As Form)

Dim strFilter As String
Dim I As Long
Dim myarray As Variant
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

Aufgerufen wird diese Prozedur aus dem Formular wie folgt:

Private Sub FTFSuche_AfterUpdate()
FilterForm FTFSuche, ADSuche, Form
End Sub

Parameter: FTFSuche (ungebundenes Textfeld für Suchworteingabe) , ADSuche
(Abfragefeld dessen Inhalt gefiltert werden soll ), Form (Formularname) Diese
Paramater àndern sich natürlich von Fumular zu Formal, deshalb die Public Sub.

Die Code Zeile der Public Sub: strFilter = strFilter & " AND ([" &
Fieldname & "] LIKE '*" & myarray(I) & "*')" erzeugt folgende Fehlermeldung:
Unzulàssiges Einklammern des Namens ‘[Hamburger Sparkasse Neu Wulmstorf…]’.
Der Text Hamburger Sparkasse Neu Wulmstorf… entspricht dem Feldinhalt ADSuche
des ersten Datensatzes aus der Abfrage.

Ändere ich die Code Zeile wie folgt: strFilter = strFilter & " AND [" &
Fieldname & "] LIKE ('*" & myarray(I) & "*')" erhalte ich die gleiche
Fehlermeldung
Ich habe natürlich verschieden andere Variante probiert, kein Erfolg.
Interessant ist aber folgende Code Zeile: strFilter = strFilter & " AND
([ADSuche] LIKE '*" & myarray(I) & "*')" Jetzt funktioniert die ganze Sache.

Ich bin irgendwie sprachlos, dass ich das nicht alleine hinbekomme.
Irgendwas stimmt mit Fieldname und ADSuche nicht. Wer kann bitte helfen?

Viele Grüße aus Hamburg
Marion

Meine Angaben: Vista, ich arbeite mit einer nicht konvertierte Datenbank A03
in A07
 

Lesen sie die antworten

#1 Joachim Krause
07/11/2008 - 22:21 | Warnen spam
Hallo Marion,

So funktioniert es:

'Im Modul
Public Sub FilterForm(Search As String, Fieldname As String, F As Form)

Dim strFilter As String
Dim I As Long
Dim myarray() As String

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

Aufruf aus Formular
FilterForm Me.ctlSuche.Text, "FWTitel", Forms!frmTest

Wobei in ctlSuche die Suchwörter drin stehen, in FWTitel wird gesucht
(verbundenes Datenfeld!!) und Forms!frmTest ist klar.

Grüsse
Achim


"Marion Hildebrandt" schrieb
im Newsbeitrag news:
Guten Abend,
ich habe hier ein sinnloses Syntaxproblem, von dem ich vor 2 Stunden schon
mal geglaubt habe, ich hàtte es mit eurer Hilfe gelöst. Jetzt eben benutze
ich die Sub-Prozedur und fall fast vom Stuhl, weil das alte Problem zack
wieder da war.
Zur Erlàuterung: Ich habe ein Formular, basierend auf einer Abfrage. Durch
Eingabe eines Suchwortes in ein ungebundenes Textfeld "FTFSuche" möchte


ich
die anzuzeigenden Datensàtze nach dem Inhalt des Abfragefeldes "ADSuche"
filtern. Da ich das Prozedere für diese Suche in weiteren Formularen
verwenden möchte , habe ich eine Public Sub in einem Modul erstellt:

Public Sub FilterForm(Search As String, Fieldname As String, F As Form)
.
Dim strFilter As String
Dim I As Long
Dim myarray As Variant
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

Aufgerufen wird diese Prozedur aus dem Formular wie folgt:

Private Sub FTFSuche_AfterUpdate()
FilterForm FTFSuche, ADSuche, Form
End Sub

Parameter: FTFSuche (ungebundenes Textfeld für Suchworteingabe) , ADSuche
(Abfragefeld dessen Inhalt gefiltert werden soll ), Form (Formularname)


Diese
Paramater àndern sich natürlich von Fumular zu Formal, deshalb die Public


Sub.

Die Code Zeile der Public Sub: strFilter = strFilter & " AND ([" &
Fieldname & "] LIKE '*" & myarray(I) & "*')" erzeugt folgende


Fehlermeldung:
Unzulàssiges Einklammern des Namens '[Hamburger Sparkasse Neu Wulmstorf.]'


.
Der Text Hamburger Sparkasse Neu Wulmstorf. entspricht dem Feldinhalt


ADSuche
des ersten Datensatzes aus der Abfrage.

Ändere ich die Code Zeile wie folgt: strFilter = strFilter & " AND [" &
Fieldname & "] LIKE ('*" & myarray(I) & "*')" erhalte ich die gleiche
Fehlermeldung
Ich habe natürlich verschieden andere Variante probiert, kein Erfolg.
Interessant ist aber folgende Code Zeile: strFilter = strFilter & " AND
([ADSuche] LIKE '*" & myarray(I) & "*')" Jetzt funktioniert die ganze


Sache.

Ich bin irgendwie sprachlos, dass ich das nicht alleine hinbekomme.
Irgendwas stimmt mit Fieldname und ADSuche nicht. Wer kann bitte helfen?

Viele Grüße aus Hamburg
Marion

Meine Angaben: Vista, ich arbeite mit einer nicht konvertierte Datenbank


A03
in A07

Ähnliche fragen