PDA

Vollständige Version anzeigen : Suchformular mit Listenfeld / Verzweifle


kaechro
05.08.2001, 09:31
Mein Formular weist die folgende Konstellation auf:
Formular = "F_CHOICEGRUPPE_AUSWAHL".
Listenfeld = "CHOICEGRUPPEN" gebunden an eine Tabelle/Abfrage "T_CHOICEGRUPPE" mit den Feldern "ID_CHOICEGRUPPE" und "NAME_CHOICEGRUPPE".
Ungebundenes Textfeld "TXTBESCHREIBUNG".
Button "AUSWAHL"
Button " ALLE"

Nun zu meinem Problem:
1. Beim Öffnen des Formulares möchte ich keine Records im Listenfeld anzeigen lassen.
2. Beim Klicken des Buttons "ALLE" sollen alle Records im Listenfeld angezeigt werden.
3. Beim Klicken des Buttons "AUSWAHL" sollen nur die Records im Listenfeld angezeigt werden, welche mit dem String im ungebundenen Textfeld übereinstimmen.

Kann mit bitte jemand helfen. Ich habe noch etwa 30 Formulare mit der gleichen Konstellation. Ich habe bereits im Forum nachgeforscht, aber keine Lösung für mein Problem gefunden. Es handelt sich bei den Frage stellungen meist um Filter mit Comboboxen. Vielen Dank für eine mögliche Lösung.
Gruss Rogér

A.S.
05.08.2001, 09:47
Hallo Rogér,

1. Beim öffnen des Formulares die Datenquellen-Eigenschaft des Listenfeldes auf Blank setzen.

2. Beim drücken des "Auswahl"-Buttons die Datenquellen-Eigenschaft auf einen SQL-String wie

SELECT T_CHOICEGRUPPPE.ID_CHOICEGRUPPE, T_CHOICEGRUPPE.NAME_CHOICEGRUPPE FROM T_CHOICEGRUPPE WHERE Deine Bedingung lt. Formularfeld;

setzen.

3. Beim Drücken des Buttons "ALLE" einen die Datenquelleneigenschaft auf T_CHOICEGRUPPE setzen.

Bei 2. und 3. das Requery auf das Listenfeld nicht vergessen.

HTH

Arno

A.S.
05.08.2001, 11:36
Hallo Rogér,

in Beantwortung Deines, von mir geschlossenen, Beitrags zSuchformular mit Listenfeld / Verzweifle die Zweitez folgendes:

zu 1. Öffne das Formular in der Entwurfsansicht. Blende, soweit noch nicht aktiv, das Eigenschaftsfenster ein (Menü: Ansicht / Eigenschaften) ohne zuvor einen Bereich anzuwählen. Du solltest nun die Formulareigenschaften in o.g. Dialog angezeigt bekommen.

Gehe auf die Registerseite "Ereignisse" und führe einen Doppelklick auf das Ereigniss "Beim öffnen" durch. Im zugehörigen Feld erscheint nun der Text "[Ereignisprozedur]".

Am Ende des Feldes siehst Du die Editorschaltfläche (mit 3 Punkten darauf). Führe diese Schaltfläche aus, wodurch Du in den VBA-Editor mit der zugehörigen Ereignisprozedur kommst. Hier gibst Du folgendes Coding ein:

Me.Listenfeld.RowSource = ""
Me.Listenfeld.Requery

zu 2. Stelle die Eigenschaft "Beim Klicken" des Buttons "Auswahl" auf "[Ereignisprozedur]" ein, wechsle in den VBA-Editor und gebe folgendes Coding ein:

Me.Listenfeld.RowSource = "SELECT T_CHOICEGRUPPPE.ID_CHOICEGRUPPE, " & _
"T_CHOICEGRUPPE.NAME_CHOICEGRUPPE FROM T_CHOICEGRUPPE" & _
" WHERE " & Me.Bedingungsfeld & ";"
Me.Listenfeld.Requery

Zu 3. Stelle die Eigenschaft "Beim Klicken" des Buttons "Alle" auf "[Ereignisprozedur]" ein, wechsle in den VBA-Editor und gebe folgendes Coding ein:

Me.Listenfeld.RowSource = "T_CHOICEGRUPPE"
Me.Listenfeld.Requery

Allgemein: Du mußt natürlich die von mir genutzten Bezeichner "Listenfeld" und "Bedingungsfeld" gegen Deine eigenen Bezeichner austauschen und sicherstellen, das das "Bedingungsfeld" einen gültigen WHERE-Ausdruck enthält.

Gruß

Arno

kaechro
05.08.2001, 18:16
Lieber Arno

Ich danke Dir für den Code. Beim Punkt 2 habe ich jedoch ein Problem. Beim Drückken des Buttons " AUSWAHL" erscheint eine Parameterabfrage. Stimmt irgend etwas mit den Zeichen nicht im SQL String ?

Ich danke Dir für einen kurzen Input

Gruss Rogér

_____________________________________________

zu 2. Stelle die Eigenschaft "Beim Klicken" des Buttons "Auswahl" auf "[Ereignisprozedur]" ein, wechsle in den VBA-Editor und gebe folgendes Coding ein:


Me.Listenfeld.RowSource = "SELECT T_CHOICEGRUPPPE.ID_CHOICEGRUPPE, " & _ "T_CHOICEGRUPPE.NAME_CHOICEGRUPPE FROM T_CHOICEGRUPPE" & _ " WHERE " & Me.TXTBESCHREIBUNG& ";"Me.Listenfeld.Requery

A.S.
05.08.2001, 21:58
Hallo Rogér,

natürlich ist Punkt 2 eine Parameterabfrage, welche sich auf Dein Feld txtBeschreibung bezieht ;)

Wie ich Dir schrieb muß Dein Feld txtBeschreibung eine gültige Where-Clausel enthalten. Was gibst Du denn in dieses Feld ein und auf welches Feld soll sich dieses Beziehen?

Gruß

Arno

kaechro
06.08.2001, 12:08
Hallo Arno

Im ungebundenen Textfeld "TXTBESCHREIBUNG" wird wird der Suchbegriff als String eingegeben. Dieser bezieht sich in der Tabelle "T_CHOICELISTE" auf das Feld "NAME_CHOICEGRUPPE".

Danke und Gruss

Rogér

A.S.
06.08.2001, 12:16
Hallo Rogér,

dann zu 2. Stelle die Eigenschaft "Beim Klicken" des Buttons "Auswahl" auf "[Ereignisprozedur]" ein, wechsle in den VBA-Editor und gebe folgendes Coding ein:

Me.Listenfeld.RowSource = "SELECT T_CHOICEGRUPPE.ID_CHOICEGRUPPE, " & _
"T_CHOICEGRUPPE.NAME_CHOICEGRUPPE FROM T_CHOICEGRUPPE" & _
" WHERE T_CHOICEGRUPPE.NAME_CHOICEGRUPPE = '" & _
Me.Bedingungsfeld & "';"
Me.Listenfeld.Requery

------------------
HTH

Arno

A.S.
08.08.2001, 01:15
Hallo Rogér,

das Problem mit der DAO-Library ist bekannt. Auf http://www.donkarl.com heißt es dazu in "FAQ 7.11 Dim DB As Database in A00 bring Fehler": Modul öffnen, Menü Extras/Verweise, Verweis auf DAO 3.6 setzen, die Priorität des Verweises mit Hilfe der Pfeiltasten höher setzen als die des ADO-Verweises. Bei Nichtverwendung von ADO kann der Verweis darauf auch rausgenommen werden.

Zu Deinem Problem im Quellcode: Er mosert im Prinzip nicht TXTBESCHREIBUNG, sondern den Bezeichner "Listenfeld" an, da er diesen nicht findet. A00 markiert nur komischerweise die falsche Stelle. Hier existiert wohl ein kleiner Bug in der Erkennung der Standard-Eigenschaft (.Value = Steuerelementinhalt). Wegen solcher "Kleinigkeiten" habe ich mir angewöhnt immer alle Eigenschaften oder Methoden der Objekte auszuschreiben, ob diese Standard sind oder nicht. Dein Coding an dieser Stelle ändere wie folgt ab:

Me.AUSWAHLCHOICEGRUPPE.RowSource = .....
.
.
Me.AUSWAHLCHOICEGRUPPE.Requery

Wobei AUSWAHLCHOICEGRUPPE Deinen Eintrag "Listenfeld" ersetzt, denn die Listbox heißt nicht Listenfeld sondern AUSWAHLCHOICEGRUPPE ;)

Gruß

Arno

kaechro
08.08.2001, 07:51
Lieber Arno

Ich möchte mich bei Dir für die Bemühungen bedanken. Ich werde noch des öfftern eine Frage ins Forum stellen. Danke für die Unterstützung.

Gruss und einen schönen Tag wünscht Dir

Rogér