Suchformular mit Feldauswahl durch Nutzer

Moderator: ModerationP

Suchformular mit Feldauswahl durch Nutzer

Beitragvon Hans Olo » 23. Apr 2021, 17:11

Liebes Forum,

konnte auf Grundlage des Beitrags "Suchformular in 10 Minuten erstellt" http://www.office-loesung.de/ftopic385108_0_0_asc.php nach dem erweiterten Code von lothi ziemlich schnell mein erstes Suchformular verwirklichen. Besten Dank an alle, die hier so fleißig Input liefern! Daran hab ich viel gelernt.

Nun wollte ich (hauptsächlich aus Platzgründen) dem User die Möglichkeit geben, über ein weiteres Kombifeld selbst auszuwählen welches Feld aus einer Tabelle gefiltert werden soll.

Dazu bin ich so vorgegangen:

1. Im Detailbereich des Such(endlos)formulars ein ungebundenes Feld mit Namen "Nutzerfeld" angelegt.

2. Im Formularkopf ein ungebundenes Kombifeld "cboflt_Auswahl" erstellt. Dieses enthält in der Datensatzherkunft alle Feldnamen, die ich dem Nutzer für dieses Suchformular noch geben möchte, als Wertliste ("Feld1";"Feld2";"Feld3"; usw.)

3. Ein weiteres ungebundenes Kombifeld "cboflt_Nutzerfeld" im Formularkopf soll die Feldwerte des ausgewählten Feldes (jeden Wert 1x ala SELECT DISTINCT) aufnehmen und als Filter dienen (und hier hakt's an meiner Syntax... aber der Reihe nach)

4. Das "Nutzerfeld" habe ich in der "Private Function Filterbedingung ()" (vgl. Beitrag von lothi, s.o.) so mit dem Komibfeld "cboflt_Auswahl" verknüpft:

SQLString Me!cboflt_Auswahl, "[Nutzerfeld]", myCriteria, ArgCount, 2, "="

5. Das Kombifeld "cboflt_Nutzerfeld" löst folgende Prozedur nach Aktualisierung aus:
Private Sub cboflt_Nutzerfeld_AfterUpdate()
Me.Filter = Filterbedingung()
Me.FilterOn = True
End Sub

Wenn ich jetzt über das Auswahlkombifeld (cboflt_Auswahl) einen Feldnamen auswähle, werden die entsprechenden Inhalte auch im Endlosformular angezeigt. So weit so gut.

Das Problem ist die Filterung des Feldes. Habe es in einem ersten Anlauf versucht so umzusetzen:

6. Eingabe in Kombifeld "cboflt_Auswahl" löst nach Aktualisierung folgende Ereignisprozedur aus:
Private Sub cboflt_Auswahl_AfterUpdate()
Me!Nutzerfeld.ControlSource = Me.cboflt_Auswahl
Me!cboflt_Nutzerfeld.RowSource = Me.cboflt_Auswahl
Me!cboflt_Nutzerfeld.Requery
End Sub

Dabei erhalte ich aber einen Laufzeitfehler 13 "Typen unverträglich" in der RowSource-Zeile.

Hab's dann mit einer SELECT-Anweisung versucht: (mir ist klar, dass es so nicht geht; aber ich denke so wird am deutlichsten, wo mein Problem liegt)

Me!cboflt_Nutzerfeld.RowSource = "SELECT DISTINCT tbl_Einheitendaten.(cboflt_Auswahl) FROM tbl_Einheitendaten ORDER BY tbl_Einheitendaten.(cboflt_Auswahl)"

Erhalte dann aber: Syntaxfehler in Abfrageausdruck 'tbl_Einheitendaten.(cbofltAuswahl)'

Wie drücke ich (cboflt_Auswahl) syntaktisch korrekt, um das vom Nutzer gewählte Feld an den Filter zu übergeben? Oder liege ich mit der RowSource schon falsch?

Hab schon viele Varianten der obigen Beispiele durch, stochere da mit meinen mageren VBA-Kenntnissen aber im Dunklen. Bin für jeden Hinweis dankbar!

Gruß
Stefan
Benutzeravatar
Hans Olo
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4
Registriert: 21. Apr 2021, 09:15

Re: Suchformular mit Feldauswahl durch Nutzer

Beitragvon Beaker s.a. » 24. Apr 2021, 12:34

Hallo Stefan,
Das mit der RowSource ist schon richtig. Allerdings muss der SQL-String natürlich
ordentlich zusammen gesetzt werden.
Wenn "cboflt_Auswahl" den Namen des Tabellenfeldes zurückgibt, dann
Code: Alles auswählen
"SELECT DISTINCT tbl_Einheitendaten." & Me.cboflt_Auswahl & " FROM tbl_Einheitendaten ORDER BY tbl_Einheitendaten." & Me.cboflt_Auswahl


gruss ekkehard
Ereignisorientierte Programmierung:
Alles, was geschieht, geschieht.
Alles, was während seines Geschehens etwas anderes geschehen
läßt, läßt etwas anderes geschehen.
Alles, was sich selbst im Zuge seines Geschehens erneut geschehen
läßt, geschieht erneut.
Beaker s.a.
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1136
Registriert: 14. Jul 2012, 21:56
Wohnort: Bremen

Re: Suchformular mit Feldauswahl durch Nutzer

Beitragvon Hans Olo » 26. Apr 2021, 16:09

Danke Ekkehard! Das bringt mich schon ein Stück weiter.
Leider taucht ein neuer Syntaxfehler auf (fehlender Operator in Abfrageausdruck). Denke das liegt an Leerzeichen in manchen der Feldnamen. (I know: bad karma...)

Kann ich das mit eckigen Klammern noch irgendwie retten, bevor ich die Feldnamen in der Datenbank komplett neu umkrempeln muss? (Leider ist mir auch trotz langem rumprobieren die Syntax dafür nicht ganz klar).

Gruss
Stefan
Benutzeravatar
Hans Olo
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4
Registriert: 21. Apr 2021, 09:15

Re: Suchformular mit Feldauswahl durch Nutzer

Beitragvon derArb » 26. Apr 2021, 16:47

Hallo,
@Hans Olo: Das "Suchformular in 10 Minuten erstellt" ist ein sehr schönes und notwendiges Beispiel,
um zu lernen, sich selbst ein Suchformular programmiertechnisch erstellen zu können.
Es hat jetzt aber nun schon viele Jahre auf dem Buckel.
Inzwischen hat sich da einiges getan.
Lad Dir mal dieses Beispiel von Bitsqueezer und schau und spiel damit.
Es bietet völlig offenen Code und Umgangsmöglichkeiten damit. Einfach mal anschauen, ausprobieren und sich daran gewöhnen.
http://www.ccedv.de/downloads/php/start ... 73&lang=de
MfG
derArb

Scio me nihil scire...Εν οίδα οτι ουδέν οίδα... Ich weiss, dass ich nichts weiss (Sokrates)
Ich bevorzuge Beiträge mit korrekter deutscher Grammatik.
derArb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 14656
Registriert: 19. Apr 2006, 18:39
Wohnort: Berlin

Re: Suchformular mit Feldauswahl durch Nutzer

Beitragvon Hans Olo » 29. Apr 2021, 14:33

Hallo derArb,

besten Dank für den Hinweis auf die neue Version von Bitsqueezer! Tatsächlich bin ich darauf bei meinen Recherchen für das Suchformular auch gestossen. Leider machen die Beispieldateien bei mir aber arge Probleme. Einzelne Formulare lassen sich nicht öffnen, die Buttons funktionieren teilweise nicht, die Entwurfsansicht lässt sich bei manchen Formularen nicht öffnen, es kommen Fehlermeldungen DLLs wären nicht vorhanden und am Ende lässt sich Access nicht mehr schließen bis ich sämtlichen Inhalt der Datei lösche... war für einen Anfänger etwas abschreckend und hab's nicht weiter verfolgt, da ich ja schon was Funktionierendes hatte. Ich hatte übrigens die accdb-Version mit Access 2016 in einer (homeoffice-bedingten) Citrix-Umgebung versucht.

Daher würde ich gern auf meinen Ausgangsbeitrag zurückkommen. Hat jemand eine zündende Idee wie die eckigen Klammern hier um Me.cboflt_Auswahl gesetzt werden müssen:

"SELECT DISTINCT tbl_Einheitendaten." & Me.cboflt_Auswahl & " FROM tbl_Einheitendaten ORDER BY tbl_Einheitendaten." & Me.cboflt_Auswahl


Bei Feldern, die kein Leerzeichen enthalten, bekomme ich die Meldung "Parameterwert eingeben - Nutzerfeld". Denke, das hängt noch mit einer falschen Stringsyntax in der Filterprozedur zusammen:

SQLString Me!cboflt_Auswahl, "[Nutzerfeld]", myCriteria, ArgCount, 2, "="

Da das Nutzerfeld ja nicht in der Tabelle existiert, muss die Syntax hier vermutlich auch anders lauten, aber wie?

Beste Grüße
Stefan
Benutzeravatar
Hans Olo
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4
Registriert: 21. Apr 2021, 09:15

Re: Suchformular mit Feldauswahl durch Nutzer

Beitragvon Bitsqueezer » 29. Apr 2021, 15:48

Hallo Stefan,

eigentlich ist die Demodatenbank selbsterklärend, aber ein paar Kleinigkeiten gibt es, wahrscheinlich meinst Du das gleiche wie hier:
http://www.office-loesung.de/p/viewtopi ... r#p3350228

Die Entwurfsansicht geht natürlich bei allen Formularen und mit TerminalServer hat es auch keine Probleme.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8276
Registriert: 21. Jun 2007, 12:17

Re: Suchformular mit Feldauswahl durch Nutzer

Beitragvon derArb » 29. Apr 2021, 17:02

Hallo Hans Olo,
es liegt an Dir, Dich für eine von 2 Herangehensweisen zu entscheiden.
Das Entscheidende für meine Empfehlungen ist, dass "Suchformular in 10 Minuten"
nicht mehr von den alten Programmierbarden unterstützt wird, weil sie entweder
aus dem Forum gegangen sind, oder auch sich auf's Altenteil begeben haben.
Mich wundert, wo WilliWipp, Nouba und und hinverschwunden sind.
Bitsqueezer jedenfalls ist da und antwortet (ein unschätzbarer Vorteil)
MfG
derArb

Scio me nihil scire...Εν οίδα οτι ουδέν οίδα... Ich weiss, dass ich nichts weiss (Sokrates)
Ich bevorzuge Beiträge mit korrekter deutscher Grammatik.
derArb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 14656
Registriert: 19. Apr 2006, 18:39
Wohnort: Berlin

Re: Suchformular mit Feldauswahl durch Nutzer

Beitragvon Hans Olo » 29. Apr 2021, 19:23

Alles klar, danke allen soweit. Ich fuchs mich durch den von Bitsqueezer verlinkten Beitrag und probiere es auf meine Problematik umzumünzen.

So long... bleibt's gsund! :-)

Beste Grüße
Stefan
Benutzeravatar
Hans Olo
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4
Registriert: 21. Apr 2021, 09:15


Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: micmen und 2 Gäste