Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Länge des Filter-Strings





Frage

Ich habe ein etwas haariges Problem, und zwar baue ich in einem Formular dynamisch einen Filterausdruck zusammen, um nach bestimmten Daten zu filtern. Wenn jetzt aber der Suchstring etwas länger wird, bringt Access die Fehlermeldung, der Filter wäre zu lange. Das pasiert so im Bereich zwischen 900 und 1000 Zeichen. Ich müsste jetzt wissen, wie lange ein Filterausdruck für ein Formular höchstens sein darf, um den Fehler abzufangen. Vielleicht hatte ja jemand mal ein ähnliches Problem und weiß was.

Antwort 1 von ArminPü

Hi,
vielleicht hilft es (als Alternative) einfach die zugrundeliegende query zu verändern (hat den Vorteil, das man im Form auch rmb filter setzen kann...).

Anbei etwas vba code ....


Dim strFilter As String
Dim strQuery As String

Dim dbs As Database
Dim qryDef As QueryDef

Set dbs = CurrentDb()

' 1. Set Filter condition
' 1.0 All Leads (default)
strFilter = ""

' 1.1 Events which are executed by a partner
If Not IsNull(Me.tbxSalesPartner.Value) Then
strFilter = strFilter & "SalesPartnerID = " & _
Me.tbxSalesPartner.Value & " OR "

End If
' 1.2 Events I edited
If Not IsNull(Me.tbxSalesResponsibleName.Value) Then
strFilter = strFilter & "SalesResponsibleID = " & _
Me.tbxSalesResponsibleName.Value & " OR "
End If

' 1.3 Events I am responsible for
If Not IsNull(Me.tbxEditorName.Value) Then
strFilter = strFilter & "EditorID = " & _
Me.tbxEditorName.Value & " OR "
End If

' 1.4 Leads of a certain event
If Not IsNull(Me.tbxEventName.Value) Then
strFilter = strFilter & "EventID = " & _
Me.tbxEventName.Value & " OR "
End If

' to deal with final OR clause
If strFilter = "" Then
strFilter = strFilter & " TRUE" ' i.e. all leads
Else
strFilter = strFilter & " FALSE" ' i.e. filter set
End If


' 2. set basic filter query for entire session
strQuery = "SELECT qryfrmLeadForm_All.* " & _
"FROM qryfrmLeadForm_All WHERE " & _
strFilter & _
";"

' 2.1 Delete previous query
DoCmd.DeleteObject acQuery, "qryfrmLeadForm"

' 2.2 create new query with filter
Set qryDef = dbs.CreateQueryDef("qryfrmLeadForm", strQuery)
' MsgBox strQuery
' 2.3 Clean up
qryDef.Close
dbs.Close


Antwort 2 von Phantom_Fies

Danke schonmal.
Klar, ich könnte ja auch dynamisch die Formular-Datenherkunft anpassen und neu abfragen. Aber es würde mich trotzdem mal interessieren, wie lange der String sein darf, um den Fehler auch abfangen zu können.

Antwort 3 von ArminPü

... habe leider keine Ahnung zu deiner frage... ARmin

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: