2017-01-17 11 views
0

Ich habe ein wirklich seltsames Problem mit einem Filter in Access 2010. Der Filter funktionierte gut für die letzten Tage, aber heute bemerkte ich, es funktioniert nicht mehr (filtert alles aus) es ist ein ziemlich einfaches Me.Filter . Ich habe den VBA-Code in einen Zustand zurückgesetzt, in dem ich weiß, dass er funktioniert, aber er funktioniert immer noch nicht wie erwartet. dies ist ein Beispiel Filter, die ich benutze:Zugriff auf Filter gestoppt

Me.Filter = (Hersteller LIKE '*Test*' OR ID LIKE '*Test*' OR Typ LIKE '*Test*' OR Nennmaß LIKE '*Test*' OR Herstellertyp LIKE '*Test*') AND Status = 'Einsetzbar' AND ID is not null 

Natürlich ist es danach Me.FilterOn = True

aktiviert ist Sieht, dass ich das mein alter Arbeits Code versuchte es etwas sein muss, dass ich in der Form oder die Back-End-Tabelle geändert . Leider habe ich nichts verändert, was ich mir vorstellen kann, einen Einfluss auf die Filterung zu haben. Spaltennamen usw. sind gleich ... Was es wierder macht ist, dass mein Datumsfilter Me.Filter = (Datum > #01/18/2015#) OR (Datum > #01/18/2015#) einwandfrei funktioniert. Irgendeine Idee würde geschätzt werden !!

+1

Überprüfen Sie, dass Sie Filter in der Registerkarte Daten der Eigenschaften des Formulars zugelassen haben und haben Sie versucht, eine SQL-Abfrage der gleichen Art, sehen Sie, ob einer der Einträge die Nullrückgabe verursacht? –

+0

Filter sind erlaubt, wie würde ich eine solche Filteraktion über SQL in VBA machen? –

Antwort

1

Ich habe es ausgerechnet! Ich habe keine Ahnung warum es vorher funktioniert hat und nicht jetzt aber mit * als Platzhalter funktioniert nicht für meine Version (Access 2010) Ich musste jedes * in meinem Filter auf ein% ändern und jetzt ist es endlich wokrs! Me.Filter = "(Hersteller LIKE '%test%' OR ID LIKE '%test%' OR Typ LIKE '%test%' OR Nennmaß LIKE '%test%' OR Herstellertyp LIKE '%test%') AND ID is not null"

+1

Scheint so, als ob du vielleicht daran arbeitest eine ADP-Datei, die den ANSI-92-Standard anstelle von ANSI-89 verwendet, was ich gewohnt bin.Typischerweise verwenden Sie den Standard, der Ihrem Backend zugeordnet ist, wenn Sie also SQL Server verwenden, verwenden Sie ANSI -92. [Siehe hier für eine vollständige Liste der ANSI-92 Wildcards im Zugriff] (https://support.office.com/en-us/article/Access-wildcard-character-reference-af00c501-7972-40ee-8889 -e18abaad12d1) Ich bin froh, dass du es geschafft hast! – MoondogsMaDawg

+0

Das ist ziemlich genau was passiert ist, ich benutze immer noch eine .accdb-Datei, aber die Option, AN zu verwenden SI 92 ist eingeschaltet! Ich habe nur keine Ahnung, warum haha, aber jetzt weiß ich zumindest, warum mein Code so seltsam war .... –

1

Beachten Sie, wie der letzte Teil des Codes grau ist? Dies liegt daran, dass ein einzelner Apostroph außerhalb einer Zeichenfolge als Kommentar ausgewertet wird.

Versuche:

Me.Filter = "(Hersteller LIKE '*Test*' OR ID LIKE '*Test*' OR Typ LIKE '*Test*' OR Nennmaß LIKE '*Test*' OR Herstellertyp LIKE '*Test*') AND Status = 'Einsetzbar' AND ID is not null" 

Ihr aktueller Code des Filters ausgewertet: (Hersteller Like, die offenbar gültig ist, aber weil nichts die Like folgt, dann kann keine Datensätze die Bedingung erfüllen, und keine Datensätze zurückgegeben werden können.

Der Grund Me.Filter = (Datum > #01/18/2015#) OR (Datum > #01/18/2015#) funktioniert, weil es keine Apostrophe gibt, die einen Teil der Klausel abschneiden.

Per MSDN:

Die Filter-Eigenschaft ist ein String Ausdruck einer WHERE-Klausel aus, ohne das Schlüsselwort WHERE.

So wann immer Sie verwenden Me.Filter = die folgende Klausel sollte in doppelten Anführungszeichen eingeschlossen sein, um sicherzustellen, dass es als String auswertet, das ist das, was .Filter erwartet.

+0

Vielen Dank, aber leider funktioniert das nicht ... zeigt das gleiche Verhalten wie zuvor, kein Fehler, aber nachdem der Filter angewendet wird, ist nichts übrig .... Ich denke, es muss eine Einstellung sein, die ich geändert habe :( –

+0

I denke, es sind die Sterne *, die nicht funktionieren! Der Filter Me.Filter = "Status LIKE 'Test'" funktioniert aber "Status LIKE '* Test *'" gibt kein Ergebnis zurück! –

Verwandte Themen