Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
1. Suchformular in 10 Minuten erstellt
Gehe zu Seite Zurück  1, 2, 3, 4  Weiter
zurück: Tabelle mit Daten - Zahlenfeld in AutoNumber konvertieren weiter: Access Logo (Splashscreen) austauschen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Ela500
Einsteiger


Verfasst am:
31. Mai 2007, 19:54
Rufname:
Wohnort: München

AW: Suchformular in 10 Minuten erstellt - AW: Suchformular in 10 Minuten erstellt

Nach oben
       

Jetzt muss ich mich auch mal zu diesem Thema melden.......

Also ich hab dieses Suchformular inzwischen mehrmals erfolgreich eingesetzt und finde es einfach absolute Spitze! Very Happy

Möchte mich bei allen die daran gearbeitet haben ganz herzlich für die Mühen bedanken.

Auf meine aufgetretenen Fragen hab ich hier auch die Antworten gefunden und somit konnte ich alle Probleme lösen. Very Happy
Ist zwar viel zu lesen, aber sehr hilfreich.

Überhaupt ist auch das ganze Forum hier super.

Danke und viele Grüße
Ela
FrankV
Fortgeschrittener Anfänger Access


Verfasst am:
28. Jun 2007, 15:35
Rufname:


AW: 1. Suchformular in 10 Minuten erstellt - AW: 1. Suchformular in 10 Minuten erstellt

Nach oben
       Version: Office 2003

Hallo zusammen,

bin beim Suchen auf dieses Thema gekommen, habe die Beispiele auch sofort verwendet und es lief prima!! Vielen Dank für die Hinweise!! Die Anwendung war sehr einfach!!
mukwuk
Im Profil kannst Du frei den Rang ändern


Verfasst am:
02. Okt 2007, 14:55
Rufname: Mike

AW: 1. Suchformular in 10 Minuten erstellt - AW: 1. Suchformular in 10 Minuten erstellt

Nach oben
       

Super Suchformular. Ich habe es ohne großen Aufwand in eine Adressdatenbank eingebaut, wo ich mir die Personen, die unterschiedlichen Gruppen angehören herausfiltere und sie funktioniert super! Vielen herzlichen Dank! Jetzt muss ich nur noch rauskriegen, wie ich aus der ermittelten Personengruppe Duplikate entferne (Personen, die mehreren Gruppen angehören, auf die die unterschiedlichen Suchkriterien zutrafen), so dass jede Person nur einmal angeschrieben wird, auch wenn sie mehreren Adressatengruppen angehört. Aber das bekomme ich hoffentlich auch noch hin.
Gast



Verfasst am:
27. Feb 2008, 22:52
Rufname:

AW: 1. Suchformular in 10 Minuten erstellt - AW: 1. Suchformular in 10 Minuten erstellt

Nach oben
       

Super Hilfe Vielen Dank!!!!! Kam zwar nicht ganz mit 10Min hin aber habs am laufen
Gast



Verfasst am:
28. Mai 2008, 15:55
Rufname:


AW: 1. Suchformular in 10 Minuten erstellt - AW: 1. Suchformular in 10 Minuten erstellt

Nach oben
       Version: Office XP (2002)

DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE

Das ist genau das, was ich gebraucht und gesucht habe !!!

Du bist der größte! Geniale Lösung und total flexibel!!

Gruß
Michael
Gast



Verfasst am:
05. Aug 2008, 23:19
Rufname:

AW: 1. Suchformular in 10 Minuten erstellt - AW: 1. Suchformular in 10 Minuten erstellt

Nach oben
       

Auch von mir vielen vielen Dank!! Dein Progrämmchen hat mir den Tag gerettet!!!
Brandschutz-saar
Im Profil kannst Du frei den Rang ändern


Verfasst am:
22. März 2009, 22:43
Rufname:

AW: Suchformular in 10 Minuten erstellt - AW: Suchformular in 10 Minuten erstellt

Nach oben
       Version: Office 2k (2000)

Hallo Leute,

auch wenn der Thread hier schon etwas älter ist hat er es verdient ganz oben zu stehen.
Ich hatte mal wieder etwas Zeit an meiner Wartungs-Datenbank zu basteln,
und da Formulare etc. funktionieren versuche ich schon seit langem ein Suchformular zu erstellen. Aber da ich NULL- Ahnung von VBA und ähnlichem habe
schien es mir immer wieder unmöglich.

Doch dank dieses Beitrages habe ich es jetzt ratz-fatz hinbekommen.
Was soll ich sagen Ihr seid meine Helden.

Ihr seid einfach spitze... Very Happy Very Happy Very Happy

Gruß Stefan
Binzn
Im Profil kannst Du frei den Rang ändern


Verfasst am:
21. Jul 2009, 13:26
Rufname: Binzn
Wohnort: Regensburg/Beratzhausen

Suchformular in 10 Minuten erstellt - Suchformular in 10 Minuten erstellt

Nach oben
       

Hallo,

Danke dir vielmals für den Thread....hat mir unglaublich weitergeholfen!

*clapclapclapclap*

mfg
Stefan
Bitsqueezer
Office-VBA-Programmierer


Verfasst am:
17. Sep 2009, 19:43
Rufname:

13. Filtern statt suchen - komfortablere Eingabe - 13. Filtern statt suchen - komfortablere Eingabe

Nach oben
       Version: Office 2003

Hallo zusammen,

hier mal eine kleine Demo, wie man in einem Endlosformular nach mehreren Kriterien schnell suchen kann.

Im Gegensatz zu den schon recht komfortablen Filtern von Access kann man hier auch einzelne Filterkriterien wieder löschen.

Das Prinzip ist so einfach, daß man es in wenigen Minuten in jedes Endlosformular einbauen kann:
Die Filterfelder werden als Duplikate der Datenbankfelder im Header des Formulars untergebracht, sinnvollerweise jeweils über ihren Datenbankpendants. Die Datenbank-Formularfelder müssen in diesem Fall den gleichen Namen wie die zugrundeliegenden Datenfelder haben, die Filterfelder wiederum genauso, nur mit vorangestelltem "Filter_".
Im "Tag"-Feld der Feldeigenschaften ("Marke" in der deutschen Version) muß dann nur noch der Feldtyp abgelegt werden, "S" für Textfelder, "D" für Datumsfelder und "N" für numerische Felder.

Das war's auch schon, wenn man dann jedem Filterfeld einen "AfterUpdate"-Event verpaßt und dort einfach nur die Zeile "applyFilter Me" unterbringt, funktioniert die Filterung bereits.
(Will man das gleiche für den SQL Server einsetzen, muß man in der Funktion "applyFilter" die Sternchen gegen ein % ersetzen und die doppelten Anführungszeichen gegen einfache.)

Mit zusätzlichen DeleteFilter-Buttons über jedem Filterfeld kann man dann auch noch komfortabel einzelne Filter wieder entfernen.

Nebenbei zeigt die Funktion alle nicht leeren Felder an, wenn man "!" in das jeweilige Filterfeld eingibt und gibt man ein einzelnes " ein, bekommt man alle leeren Felder dieser Spalte.

Viel Spaß beim Experimentieren. Die Funktion ist schon praxiserprobt seit rund einem Jahr im Dauereinsatz.

Gruß

Christian



FilterDemo.zip
 Beschreibung:
Demonstriert die komfortable Verwendung von Filtern in einem Endlosformular.

Download
 Dateiname:  FilterDemo.zip
 Dateigröße:  26.74 KB
 Heruntergeladen:  3699 mal

tonibert
Im Profil kannst Du frei den Rang ändern


Verfasst am:
18. Sep 2009, 08:12
Rufname:

AW: 1. Suchformular in 10 Minuten erstellt - AW: 1. Suchformular in 10 Minuten erstellt

Nach oben
       

Die Datenbank ist riesig!!!!!

DANKE!!!!

Genau so hab ich es mir vorgestellt.(Riesen Dank für deine Mühe!!!!!!!!!!!!)

Durch deine Beschreibung und vor allem,dass ich es sehe was du gemacht hast,kann ich mich jetzt da mal durcharbeiten!

Echt Klasse!

Kann ich mich bei fragen noch mal an dich wenden?

Thema gelöst!
DANKE!!!
Bitsqueezer
Office-VBA-Programmierer


Verfasst am:
18. Sep 2009, 09:26
Rufname:

AW: 1. Suchformular in 10 Minuten erstellt - AW: 1. Suchformular in 10 Minuten erstellt

Nach oben
       

Hallo,

gern geschehen, freut mich, wenn es Dir weiterhilft. Klar, kein Problem...Smile

Gruß

Christian
Gast



Verfasst am:
30. Nov 2009, 15:58
Rufname:

AW: 1. Suchformular in 10 Minuten erstellt - AW: 1. Suchformular in 10 Minuten erstellt

Nach oben
       

Bei mir kommt der Fehler

Argument "ByRef" unvertraeglich.

Habe ein Feld in der Tabelle als Memo definiert .

Wie kann ich das loesen?

Danke
Tom
Bitsqueezer
Office-VBA-Programmierer


Verfasst am:
03. Sep 2010, 20:36
Rufname:

AW: 1. Suchformular in 10 Minuten erstellt - AW: 1. Suchformular in 10 Minuten erstellt

Nach oben
       

Bitsqueezer am 30. Nov 2009 um 19:58 hat folgendes geschrieben:
Hallo Tom,

ohne zu wissen, wo der Fehler auftritt, ist das schwierig. Mit Memofeldern funktioniert es ganz genauso, siehe angehängte Erweiterung der Datenbank mit Memofeld.

Gruß

Christian

Hallo zusammen,

hier auf Wunsch eine weitere kleine Erweiterung, mit der man auch "von"-"bis" Filterfelder definieren kann.

In diesem Fall müssen die Filterfelder "FilterFrom_Feldname" bzw. "FilterTo_Feldname" heißen und als Tag muß dann mit "FN" bzw. "TN" für numerische, "FS" bzw. "TS" für Textfelder und "FD" bzw. "TD" für Datumsfelder in den Filterfeldern eingestellt werden.

Die Funktion "applyFilter" wurde entsprechend erweitert, um einen BETWEEN-Filter für jede From-To-Feldkombination zu erstellen. Es können beliebig viele solcher Pärchen erstellt werden.

Gruß

Christian



FilterDemo3.zip
 Beschreibung:
Die bekannte Filterdemo, um die Möglichkeit "Von-Bis"-Filter hinzuzufügen erweitert.

Download
 Dateiname:  FilterDemo3.zip
 Dateigröße:  35.33 KB
 Heruntergeladen:  886 mal


FilterDemo2.zip
 Beschreibung:
Erweiterung mit Memofeld (zitierter Beitrag)

Download
 Dateiname:  FilterDemo2.zip
 Dateigröße:  27.53 KB
 Heruntergeladen:  571 mal

Bitsqueezer
Office-VBA-Programmierer


Verfasst am:
08. März 2011, 21:10
Rufname:

AW: 1. Suchformular in 10 Minuten erstellt - AW: 1. Suchformular in 10 Minuten erstellt

Nach oben
       

Hallo,

im Anhang befindet sich eine neue Version des Filters, der mit der alten, einfachen Funktion nicht mehr viel gemeinsam hat.

Um die Erstellung neuer Filterformulare zu beschleunigen, benötigt man für diese Version so gut wie gar keinen Code mehr im Endlos-Formular. Alles, was man braucht, ist das:
Code:
Option Compare Database
Option Explicit

Private objFilter As clsCCFilter

Private Sub Form_Load()
    Set objFilter = New clsCCFilter
    objFilter.InitControls Me
End Sub
Egal, in welchem Formular man das einbaut, das ist immer der gleiche Code.

In der letzten Version waren "Von-Bis"-Felder hinzugekommen, die einen BETWEEN-Filter generieren. Die neue Version hat eine Reihe mehr zu bieten.
  • Für einfache Eingabefelder mit dem Standard "Contains"-Filter wie bisher fügt man ein ungebundenes Texteingabefeld hinzu, dessen Name so geschrieben wird: "Filter_Feldname" (ohne Anführungszeichen). "Feldname ist dabei der exakte Name mit Leerzeichen etc., wie der zu filternde Feldname im Recordset.
  • Eine Typeinstellung im "Tag"-Feld ("Marke") ist nicht mehr notwendig, der Typ wird anhand des Feldnamens aus dem Recordset automatisch ermittelt.
  • Statt einer Textbox kann man auch eine Combobox verwenden, der man z.B. die gruppierten und sortierten Werte der betreffenden Spalte als RowSource mitgeben kann. Der Filter prüft automatisch, ob eine Textbox oder eine Combobox mit dem o.g. Namen vorliegt und verwaltet alles selbst, also einfach je nach Geschmack eine Textbox oder eine Combobox einfügen, Namen einstellen, fertig.
  • Will man eine "Von-Bis"-Eingabemöglichkeit, kann man zwei Textboxen/Comboboxen verwenden, die Namen ändern sich dann auf "FilterFrom_Feldname" bzw. "FilterTo_Feldname" (das "FilterFrom"-Feld kann auch "Filter_Feldname" heißen). Der Filter prüft automatisch, ob für ein Eingabefeld ein oder zwei Textboxen/Comboboxen vorliegen, wenn beide Felder eingegeben wurden, wird ein "BETWEEN"-Filter generiert, ansonsten wie ein einfaches Eingabefeld.
  • Für Ja/Nein-Felder kann man nun einfach eine Checkbox statt eines Eingabefeldes einsetzen, hier muß der Name dann wieder "Filter_Feldname" lauten. Also Checkbox einfügen, Name vergeben, fertig. Der Rest wird vom Filterprogramm erledigt.
  • Für jedes Filterfeld kann eine Filtertyp-Combobox eingebaut werden. Diese muß den Namen bekommen: "FilterType_Feldname". Auch hier wieder: Combobox einsetzen, Name vergeben, fertig. Ihre Funktionen, der Inhalt, der Aufbau wird komplett vom Programm erledigt. Mit dem Filtertyp kann man diverse Filtereinstellungen vornehmen, also z.B. "=", ">=", "<=", "Begins With", "Empty" uvm. Der Inhalt wird passend zum Feldtyp automatisch eingestellt.
  • Auch hier gibt es natürlich wieder die Buttons zum Löschen einzelner Filter. Die Namen müssen hier lauten:"cmdDeleteFilter_Feldname". Ja genau: Button einfügen, Name vergeben, fertig.
  • Zuletzt gibt es noch die Möglichkeit, eine weitere, feldunabhängige Combobox hinzuzufügen, die die globale Filterlogik einstellt. Diese Combobox hat immer den gleichen Namen und der muß lauten:"cmbFilterLogic". Hiermit kann man alle Filterfelder mit "AND" oder mit "OR" verknüpfen (Standard ist "AND"). Somit kann man auch in verschiedenen Feldern unterschiedliche Filterdaten eingeben, die dann zusammen berücksichtigt werden (AND) oder einzeln (mindestens eine Bedingung muß zutreffen, OR).
Neben den drei Versionen für Access 2000-2007 befinden sich auch noch zwei Klassenmodule als Textdatei im Zip-Archiv. Diese sind die Varianten für SQL Server und ADP-Datenbanken, bei denen ausschließlich mit ADO gearbeitet wird. Will man sie verwenden, muß man den "ADO"-Teil in den Dateinamen entfernen und dann importiert man sie in die ADP. Der Rest unterscheidet sich nicht.

Ich habe das Ding reichlich getestet, um viele Feinheiten einzubauen, aber es können natürlich immer noch Fehler enthalten sein. Zum Einbauen von Fehlerabfangroutinen hatte ich keine Zeit, das darf jeder gern selbst nachholen. Über Feedback freue ich mich natürlich immer.

Viel Spaß damit

Christian



FilterV2_0.zip
 Beschreibung:
Filter V2.0 als Klassenmodule mit erweiterten Möglichkeiten im Format A2000-A2010 und als Objektmodul für ADP/SQL-Server-Lösungen

Download
 Dateiname:  FilterV2_0.zip
 Dateigröße:  307.88 KB
 Heruntergeladen:  914 mal

Bitsqueezer
Office-VBA-Programmierer


Verfasst am:
12. März 2011, 03:06
Rufname:


AW: 1. Suchformular in 10 Minuten erstellt - AW: 1. Suchformular in 10 Minuten erstellt

Nach oben
       

Hallo zusammen,

im Anhang gibt es eine neue Version der Filterklasse, V2.1.
Neben ein paar Detailverbesserungen sind auch noch ein paar neue Funktionen hinzugekommen.
  • die neue Klasse ist jetzt sowohl für ADO wie auch für DAO geeignet, kann aber nur entweder oder betrieben werden. ADO wird nur in ADPs verwendet (da nur in ADPs die Formulare auf ADO-Recordsets beruhen). Damit man aber zur Verwendung der Klasse in einer DAO-Datenbank (MDB/ACCDB) nicht extra einen nicht benötigten ADO-Verweis einrichten muß, habe ich in den Klassen bedingte Compileranweisungen (#if usw.) eingefügt, die in Abhängigkeit einer Konstante am Anfang jeder Klasse von DAO auf ADO umgestellt werden können. In der Version hier sind sie voreingestellt für DAO. Anweisungen zum Ändern sind im Code dokumentiert (muß in beiden Klassen geändert werden, wenn ADO benutzt werden soll).
  • wenn ADO verwendet wird, gibt es neben der klassischen Access Filter (die in ADPs bei großen Recordsets leider sehr absturzfreudig sind) nun auch noch die Möglichkeit, die gleichen Filter mit der nur in ADP-Formularen vorhandenen Eigenschaft "ServerFilter" zu benutzen. Hierbei werden die Filterinfos (eigentlich ein klassischer WHERE-String) an den Server geschickt und dort gefiltert, bevor die Daten an den Client geschickt werden.
  • da bei Verwendung von "ServerFilter" keine Filteranzeige im Datensatznavigator mehr erscheint (weil Access ja nichts vom Filter "weiß", denn die Daten wurden ja schon auf dem Server gefiltert), kann man den Filter mit Access-Bordmitteln auch nicht mehr entfernen. Daher gibt es noch ein neues Element, den allgemeinen Button "cmdDeleteAllFilters", für den man nur, wie gehabt, einen Button mit diesem Namen auf dem Formular unterbringen muß, der entfernt dann alle Filter wieder.
  • um die Unterschiede zwischen Access Filter und ServerFilter sehen zu können, kann man die verwendete Methode einfach über die neue Eigenschaft "FilterVersion" festlegen - außerdem muß man auf Access Filter zurückstellen, wenn die RecordSource eine Stored Procedure ist, für diese funktioniert der ServerFilter leider nicht. Durch die Eigenschaft kann man das in jedem Formular individuell einstellen. Empfehlung ist aber, lieber die SP in eine View umzuwandeln, die Parameter per VBA zu ermitteln und einfach als Filter der Filterklasse mitzugeben - die schnellste Performance, die ich je mit SQL Server und Access gesehen habe und weitaus schneller als der Access Filter!
  • eine weitere neue Eigenschaft ist "FilterString", mit dem man sich den berechneten Filter zurückgeben lassen kann, besonders, wenn man
  • die weitere neue Eigenschaft "FilterSetOnForm" auf False gesetzt hat. Damit wird der Filter dann grundsätzlich nur noch berechnet und nicht mehr automatisch im Formular angewendet. Das kann man zum Beispiel auch dazu verwenden, um den ermittelten FilterString an ein anderes Formular oder einen SELECT weiterzugeben, der für ganz andere Zwecke da ist, zum Beispiel in einem UPDATE-SELECT.
  • dann gibt es noch zwei weitere neue Eigenschaften, "FilterUseCallbackBeforeFilter" und "FilterUseCallbackAfterFilter", die man in jeder Kombination verwenden kann. Wird mindestens eine dieser Eigenschaften auf "True" gesetzt, muß man das Interface "ICCFilterCallbacks" im Formular implementieren, mit dem man vor und nach dem Setzen des Formularfilters noch eine eigene Aktion ausführen kann. Dazu später mehr.
  • eine weitere Methode ist auch hinzugekommen, "FilterSetValue", damit kann man z.B. einen Filterstring vor der eigentlichen Filterung bereits festlegen, damit ein Formular z.B. mit einem Default-Filter geöffnet werden kann, ohne daß erst alle Datensätze angezeigt werden und dann erst gefiltert wird.
  • wenn man eines oder mehrere der Filterfelder vor dem Aufruf von "InitControls Me" bereits z.B. per VBA mit Werten belegt, werden diese automatisch mit in den Filterstring übernommen, so daß man den Filtern also nun auch Default-Werte mitgeben kann.
  • und noch eine Methode, mit der man die Filterfelder ein- und ausschalten kann, diesmal in der Klasse "clsCCFilterField": Mit "FilterFieldEnable", gefolgt von True oder False, kann man eines der Filterfield-Objekte aus der Collection "CollFilters" ein- oder ausschalten. Dabei werden alle zu einem Tabellenfeldnamen definierten Filtercontrols auf Disabled oder Enabled gesetzt. So kann man ein Formular unterschiedlich aufrufen, aber dem User je nach Aufruf nur bestimmte Filterfelder anbieten.
Die Sache mit dem Interface benötigt noch etwas Erläuterung.
Wenn ein Filter gesetzt wird, z.B. durch Auswahl eines Filtertyps oder Eingabe eines Filterwertes, dann geschieht dies durch die in der Klasse eingebauten Eventfunktionen. Das aufrufende Formular bekommt davon aber nichts mit, da alles in der Klasse passiert.
Will man aber noch den Filterstring vor dem Filtern erweitern (zum Beispiel, weil das Formular grundsätzlich alle Datensätze einer Bestellung anzeigen soll, also vorgefiltert auf die ID des Bestellheaders), aber trotzdem flexible Filter anbieten, dann muß diese Vorfilterung dem vom User eingegebenen Filter immer hinzugefügt werden. Zu diesem Zweck gibt es eine Callback-Sub, die man im Formular hinterlegen muß und die automatisch durch die Filterklasse vor dem Setzen (oder Berechnen, je nach Einstellung) des Filters aufgerufen wird und dieser den Filterstring als Referenz übergibt, den man direkt ändern kann, so daß der geänderte String weiterverwertet wird. Man könnte den Filterstring hier auch löschen, wenn es in der Anwendung Sinn macht, um die Filterung hier noch abzubrechen.

Ebenso gibt es eine zweite Callback-Sub, die ebenfalls automatisch durch die Klasse aufgerufen wird und die sich, als Public definiert, im aufrufenden Formular befinden muß. Diese kann dann nach der Filterberechnung/-einstellung den Filter weiter auswerten oder andere Dinge erledigen, zum Beispiel eine Messagebox anzeigen oder ein Formular aufrufen oder was auch immer.

Damit es bei der Schreibweise keine Schwierigkeiten gibt und um den Einbau so einfach wie möglich zu machen, habe ich eine Interface-Klasse der Zip-Datei hinzugefügt. Diese muß man nur, wie die anderen beiden Klassen, in die eigene Datenbank importieren und dann kann man sie in das eigene Formular implementieren. Das klingt schwieriger, als es ist: Einfach folgende Zeile unter die "Options"-Befehle zu Beginn des Formularcodes schreiben:
Code:
Implements ICCFilterCallbacks
Das war schon die Implementierung. Wenn man dann versucht zu compilieren, bekommt man eine Fehlermeldung, weil die Interface-Subs noch nicht vorhanden sind. Das kann man nun ganz einfach im VBA-Editor erledigen: Links oben im Editor-Fenster wählt man "ICCFilterCallbacks" aus, dadurch wird rechts bereits "FilterAfterApply" ausgewählt und die Funktion auch gleich eingefügt (dadurch wird sie fett angezeigt). Man braucht aber beide, sonst ist das Interface nicht zufrieden, also aus dem rechten Dropdownfeld auch noch "FilterBeforeApply" auswählen, schon ist die Funktion im Code.

Das Interface muß man nur einbauen, wenn man mindestens eine dieser Subs verwenden will, und auch, wenn man nur eine davon braucht, müssen beide Subs eingefügt werden, sonst meckert der Compiler, daß das Interface nicht vollständig implementiert ist. Man kann die nicht gebrauchte Funktion aber einfach leer lassen.
Hat man die gewünschte(n) Sub(s) mit Code befüllt, war's das auch schon, denn den Aufruf übernimmt die Klasse bei jedem Filtervorgang selbst.

Im "FilterBeforeApply" kann man nun zum Beispiel einen Standardfilter so ergänzen:
Code:
    If strFilter <> "" Then strFilter = strFilter & " AND "
    strFilter = strFilter & "[ID]=345"
Damit werden die Datensätze unabhängig von der Benutzereingabe also immer auf ID "345" vorgefiltert (wie im Beispiel oben ist das natürlich nur sinnvoll, wenn "ID" nicht gerade das PK-Feld ist, sonst gibt es ja immer nur einen Datensatz...es muß dann natürlich das FK-Feld sein).

Nur für ADP/ADO-Benutzer: Bei Verwendung der Formular-Eigenschaft ServerFilter muß man sehr aufpassen, daß der FilterString keine ungültige Zeile enthält. Ansonsten zeigt ein Endlosformular nur noch "#Name?" an und es hagelt Fehlermeldungen, die man nur mit Abschießen per Taskmanager wieder los wird. Wenn der String aber korrekt ist, legt diese Eigenschaft ein unglaubliches Tempo an den Tag. Unglaublich besonders deswegen, weil man bei Verwendung des ServerFilters den gesamten (gefilterten) Datenbereich mit jeder Filteränderung komplett neu über das Netzwerk zieht, was bei großen Recordsets durchaus eine Menge sein kann. Trotz allem ist er bedeutend schneller, als ob man sich die Tabelle (per View/SP) vom Server zurückgeben läßt, vielleicht mit einer gewissen Vorfilterung, und dann per Access Filter die Datensätze lokal filtert. Insbesondere bei Verwendung von Conditional Formatting wird die Anzeige dann mitunter quälend langsam. Und wenn es zu viele Datensätze sind und man zu schnell ist beim Filtern, stürzt Access komplett ab. Von daher kann ich nur sagen, am besten ServerFilter in Kombination mit Views auf dem Server einsetzen und staunen. (Stored Procedures ignoriert der ServerFilter leider.)

Fazit: Durch die Voreinstellungen in den Class_Initialize Subs der Klassen muß man die Neuerungen nicht verwenden oder voreinstellen, man kann genau wie in meinem letzten Beitrag beschrieben den Code so verwenden und loslegen. Lediglich die Namensgebung muß exakt eingehalten werden, dann kann man fast ohne VBA einen komplexen Filter generieren - in weniger als 10 Minuten...Wink

Gruß

Christian

PS.: In der ZIP-Datei sind nur die Klassenobjekte enthalten, als Textdateien. Zum Einbau in die Filterdemo oben einfach die Klassen dort entfernen und die drei hier importieren, fertig.
Die Namen der Filterfelder sind übrigens kompatibel zu der einfachen ersten Version, man kann also auch ältere Filterformulare so umstellen, einfach alle Events aus dem eigenen Formular entfernen, die mit "applyFilter" zu tun haben und den Code aus dem letzten Posting einfügen.



FilterV2_1_Complete.zip
 Beschreibung:
Neue Version V2.1, für DAO und ADO (per Konstante einstellbar), Access Filter und ServerFilter, sollte in allen Access-Versionen ab A2000 funktionieren, getestet und entwickelt in A2007.

Download
 Dateiname:  FilterV2_1_Complete.zip
 Dateigröße:  13.11 KB
 Heruntergeladen:  942 mal

Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite Zurück  1, 2, 3, 4  Weiter
Diese Seite Freunden empfehlen

Seite 2 von 4
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: HTML Forum