Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

externe Operanten im Kriterium

Begonnen von fred-neumann, Juli 15, 2016, 10:56:06

⏪ vorheriges - nächstes ⏩

fred-neumann

Moin,- wieder so ne Frage ..
meine Abfrage selektiert u.a. aus einem Wert im geöffneten Formular "Blatt_1"  folgend:

[Forms]![Blatt_1]![Wert1]


.. weiter habe ich im Formular "Blatt_1" ein Listenfeld "Liste1" mit zwei Einträgen (Operanten):
>=
<=
Frage:
Wie baue ich meinen Ausdruck auf, daß durch Auswahl im Formular, mein Abfrage entweder

>=[Forms]![Blatt_1]![Wert1]

oder

<=[Forms]![Blatt_1]![Wert1]


selektiert?


MaggieMay

Hallo,

du kannst einen Vergleichsoperator nicht in Form eines Parameters in eine Abfrage integrieren, du kannst lediglich den SQL-Code der Abfrage zur Laufzeit ändern.

Was ist der Auslöser dieser Aktion? Gibt es bereits VBA-Code dazu?
Freundliche Grüße
MaggieMay

fred-neumann

Moin Maggy,
... "lediglich den SQL-Code der Abfrage zur Laufzeit ändern"  < verstehe ich leider nicht. Maggy, was meinst du mit Auslöser??
Kein vba-code

fred-neumann

... ich möchte nur -anstatt jedesmal die Operanten im Entwurf ändern - dies über das Formular machen.

Lachtaube

Hallo,

schalte einmal die Abfrage in die SQL-Ansicht um. Dann siehst Du im Text auch den Vergleichsoperator.

Die Aufgabe lautet nun, durch geschicktes Parsen dieses Textes im Nach Aktualisierung Ereignis des Listenfelds den Text des Operators durch den ausgewählten Text im Listenfeld zu ersetzen. Das würde dem manuellen Editieren entsprechen.

Einfacher (nur Text aneinanderreihen; Parsen und Ersetzen entfällt) wäre es, den kompletten SQL-Text der Abfrage im o.g. Ereignis immer komplett neu zu schreiben.
Grüße von der (⌒▽⌒)

MaggieMay

"Auslöser" könnte bspw. der Klick auf eine Befehlsschaltfläche sein.

Beispiel:
Private Sub btnSetQuery_Click()
    CurrentDB.Querydefs("deineAbfrage").SQL = "Select * From tabelle Where tabWert " & Me!liste & Me!Wert1
End Sub


Wo kommt denn diese Abfrage zum Einsatz?
Freundliche Grüße
MaggieMay

fred-neumann

#6
... im Formular "Blatt_1" habe ich ein Unterformular "Blatt_2", welches sich auf die Abfrage "Abfrage_1" stützt.
.. dachte, wenn ich mein Listenfeld entsprechend ändere, dann aktualisier, daß das gewünschte Ergebnis erscheint.

PS: Anbei habe ich mal schnelle den Aufbau in die DB gelegt.

MaggieMay

Das ist ja noch viel einfacher, da brauchst du nur das Unterformular zu filtern.

Private Sub Liste4_AfterUpdate()
    Me.Blatt_2.Form.Filter = "Wert_1" & Me.Liste4 & Me.Wert_1
    Me.Blatt_2.Form.FilterOn = True
End Sub


Das Textfeld zur Eingabe des Wertes fehlt allerdings noch im Hauptformular.
Freundliche Grüße
MaggieMay

fred-neumann