Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: muhl am Oktober 10, 2012, 09:33:25

Titel: Kombinationsfeld filtern
Beitrag von: muhl am Oktober 10, 2012, 09:33:25
Hallo,
ich habe ein Formular mit den Feldern: ID, Name, Ort_Nr, Filter_Nr
Auf Ort-ID habe ich ein Kombinationsfeld gelegt, dass  die die Orte aus einer Ortstabelle nachschlägt und anzeigt. Soweit ist ja alles gut. :-)
In der Ortstabelle sind folgende Felder:
Ort_ID, Ort_Name, Filterwert

Jetzt versuche ich krampfhaft, in dem Kombinationsfeld nur die Orte anzeigen zu lassen, die dem Filterwert entsprechen. Habe ein Abfrage für das Kombinationsfeld erstellt: select Ort_ID, Ort_Name from t_orte where Filterwert=Filter_NR
Er soll also die Filternummer des Formulares als Argument nehmen. Er fragt aber immer nach der Filternummer, als wenn dieses Feld nicht bekannt wäre. Wo ist mein Gedankenfehler?

Vielen Dank

Maik
Titel: Re: Kombinationsfeld filtern
Beitrag von: database am Oktober 10, 2012, 12:50:28
Hallo,

Zitat...als wenn dieses Feld nicht bekannt wäre

wenn das ein Feld des aktuellen Formulars ist, und der Name des Feldes auch so in den Steuerelementeigenschaften angezeigt wird, sollte es mit ...

select Ort_ID, Ort_Name from t_orte where Filterwert= [Filter_NR]

als Datensatzherkunft funktionieren.
Titel: Re: Kombinationsfeld filtern
Beitrag von: muhl am Oktober 10, 2012, 14:02:39
Hi, das dachte ich auch, aber der Parameterwert wird nachgefragt. Im Screenshot habe ich die Werte einmal anzeigen lassen. Sowohl das Kombinationsfeld als auch der Datensatz haben denselben Wert und könnten gefiltert werden, also nur die Auswahl mit 101 am Ende wie der Datensatz selbst...
Ich verstehe das nicht so ganz.

HABE DEN FEHLER!!!! Beim Screenshot ist er mir aufgefallen. Erst nach der Eingabe eines neuen Feldes wird der neue Datensatz angelegt und er kann die im Hntergrundliegende Verknüpfung erstellen und die Werte ziehen, auf die er dann nach einer Aktualisierung des Datensatzes wiederum mit dem Kombinationsfeld filtern kann :-( Nun gut, ist umständlich, aber es funktioniert. Muss jetzt nur noch ein Makro machen, dass das nicht mit F5 passieren muss...

Danke

[Anhang gelöscht durch Administrator]
Titel: Re: Kombinationsfeld filtern
Beitrag von: database am Oktober 10, 2012, 14:13:32
Hi,

Zitataber der Parameterwert wird nachgefragt
...lässt darauf schließen, dass der Name des Textfeldes nicht dem Namen in der Abfrage entspricht.

Was wird denn in den FeldeigenschaftendesTextfeldes im Entwurfsmodus unter 'Name' angezeigt?
Titel: Re: Kombinationsfeld filtern
Beitrag von: muhl am Oktober 10, 2012, 14:14:42
Habs gerade als gelöst markiert. Der Feldname war richtig, aber der Wert war in dem Moment noch nicht bekannt. Ist ein Unterformular, vielleicht liegt es daran.

Danke für die Mühe,

Maik
Titel: Re: Kombinationsfeld filtern
Beitrag von: database am Oktober 10, 2012, 14:18:42
Hallo,

statt F5 und Makros ...

Schreibe in das Ereignis 'Nach Aktualisierung' des Textfeldes:

ZitatMe!NameDesKombinationsfeldes.Requery
Sollte dann das Kombifeld neu befüllen wenn du einen Wert eingibst und das Feld verläßt oder ENTER drückst
Titel: Re: Kombinationsfeld filtern
Beitrag von: muhl am Oktober 10, 2012, 14:51:13
Danke für den zusätzlichen Tipp. Ich hatte schon bei Änderung eines anderen Feldes eingegeben:

Private Sub Kombinationsfeld21_Change()
Me.Refresh
End Sub

Me.Kombinationsfeld18.Requery funktioniert genauso. Scheint aber direkter zu sein, da der Requery ja wohl nur die Abfrage neu ausführt und das Formular in Ruhe lässt, während ein Refresh das gesamte Formular neu aufbaut. Da das irgendwann einmal über VPN laufen soll, ist da jede Performanceverbesserung wünschenswert. Das Requery scheint ja da der bessere Weg zu sein. Richtig interpretiert?

Gruß, Maik
Titel: Re: Kombinationsfeld filtern
Beitrag von: database am Oktober 10, 2012, 15:50:26
Hallo,

ZitatIch hatte schon bei Änderung eines anderen Feldes eingegeben
...was aber, wenn der Wert iin diesem Kombi NICHT geändert wird?

Da es 'nur' darum geht den Inhalt des Kombifeldes entsprechend des Eintrags im Textfeldes neu aufzubauen
ist ein Refresh des Formulars nicht notwendig. Der richtige(re) Weg ist daher das Requery ausgelöst durch die Aktualisierung des Eintrags im Textfeld.