November 25, 2020, 06:33:17

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


"Bereichs-Parameterabfrage" im Formular

Begonnen von Stefilius, April 24, 2012, 11:41:30

⏪ vorheriges - nächstes ⏩

Josef P.

Hallo!

Kannst du eine kleine Beispiel-DB erstellen, in der das Problem auftritt?

mfg
Josef

Stefilius

Hallo,

ich könnte dir mal die komplette Abfrage in SQL schicken, falls es dir weiterhelfen würde?

Wenn nicht, kann ich auch eine Beispiel-DB erstellen. Welches Format sollte sie für dich sein?

Gruss,
Stefilius

Stefilius

Hallo zusammen,

ich schicke euch mal den SQL-Code der Abfrage auf der mein Formular basiert. Vllt. könnt ihr mir helfen den auftretenden Fehler der "Komplexität", der in vorherigen Beiträgen bereits erläutert wurde, zu lösen.

SELECT Spediteure_tbl.Sname, Routen_tbl.Aort, Routen_tbl.Bemerkung, Routen_tbl.PLZvon, Routen_tbl.PLZbis, Routen_tbl.Länderkürzel, [Gewicht Lademeter_tbl].Kgvon, [Gewicht Lademeter_tbl].Kgbis, Gew_Rou_tbl.Preis
FROM Spediteure_tbl INNER JOIN ((Routen_tbl INNER JOIN (([Gewicht Lademeter_tbl] INNER JOIN Gew_Rou_tbl ON [Gewicht Lademeter_tbl].LNR = Gew_Rou_tbl.LNR) INNER JOIN Spe_Gew_tbl ON [Gewicht Lademeter_tbl].LNR = Spe_Gew_tbl.LNR) ON Routen_tbl.RNR = Gew_Rou_tbl.RNR) INNER JOIN Spe_Rou_tbl ON Routen_tbl.RNR = Spe_Rou_tbl.RNR) ON (Spediteure_tbl.SNR = Spe_Rou_tbl.SNR) AND (Spediteure_tbl.SNR = Spe_Gew_tbl.SNR)
WHERE (((Routen_tbl.Aort) Like [Formulare]![Test]![Aort] & "*") AND ((Routen_tbl.PLZvon)<=Nz([Forms]![Test]![txtPLZ],"ZZZZZZZZZ")) AND ((Routen_tbl.PLZbis)>=Nz([Forms]![Test]![txtPLZ],"")) AND ((Routen_tbl.Länderkürzel) Like [Formulare]![Test]![Länderkürzel] & "*") AND (([Gewicht Lademeter_tbl].Kgvon)<=Nz([Forms]![Test]![txtKG],999999)) AND (([Gewicht Lademeter_tbl].Kgbis)>=Nz([Forms]![Test]![txtKG],-999999)) AND ((Len([PLzVon]))=Len([Forms]![Test]![txtPLZ]))) OR (((Routen_tbl.Aort) Like [Formulare]![Test]![Aort] & "*") AND ((Routen_tbl.PLZvon)<=Nz([Forms]![Test]![txtPLZ],"ZZZZZZZZZ")) AND ((Routen_tbl.PLZbis)>=Nz([Forms]![Test]![txtPLZ],"")) AND ((Routen_tbl.Länderkürzel) Like [Formulare]![Test]![Länderkürzel] & "*") AND (([Gewicht Lademeter_tbl].Kgvon)<=Nz([Forms]![Test]![txtKG],999999)) AND (([Gewicht Lademeter_tbl].Kgbis)>=Nz([Forms]![Test]![txtKG],-999999)) AND (([Forms]![Test]![txtPLZ]) Is Null));


Ich weiss, dass in der Tabellenstruktur durchaus Redundanzen vorkommen (was natürlich nicht sein sollte), aber du Vorgaben und gewisse gegebene Voraussetzungen ist es nicht anders möglich!

In der Zwischenzeit bastel ich mal eine kleine Beispiel-DB, sodass wir Fehler vllt. leichter auf die Spur kommen

Grüsse
Stefilius

Josef P.

Hallo!

Funktioniert die SQL-Anweisung, wenn du sie in einer Abfrage öffnest und das Formular offen ist?
Noch etwas: wo befinden sich eigentlich die Filterfelder? Die sind schon im Formularkopf bze. Formularfuß und nicht im Detailbereich untergebracht, oder?
Anm.: Ich bevorzuge für Filterformulare immer ein ungebundenes Formular mit den Filterfeldern und ein Unterformular, das gefiltert wird.

mfg
Josef

Stefilius

Hallo,

ZitatFunktioniert die SQL-Anweisung, wenn du sie in einer Abfrage öffnest und das Formular offen ist?


leider nein, ich kann die Abfrage ledigleich im Entwurfsmodus öffnen, aber auch nicht ausführen! Bei geschlossenem Formular funktioniert die Abfrage ohne Fehlermeldung!

Zitatwo befinden sich eigentlich die Filterfelder? Die sind schon im Formularkopf bze. Formularfuß und nicht im Detailbereich untergebracht, oder?


Sind im Formularkopf, ebenfalls der Such-/LeerenButton.

Mein Listenfeld, welches die Ergebnisse ausgibt, ist im Detailbereiche. Ist das etwa falsch?

Die Beispiel-DB kommt übrigens morgen!


Grüsse,
Stefilius

Josef P.

Hallo!

Du verwendest ein Listenfeld zum Anzeigen der gefilterten Daten?
Bisher ging ich davon aus, dass die Datensätze im Formular selbst angezeigt werden.
Wenn du ein Listenfeld verwendest, kannst du auf jeden Fall die Formbezüge entfernen.

Welche Fehlermeldung kommt, wenn du die SQL-Anweisung in eine Access-Abfrage öffnest?
Stehen möglicherweise Werte in den Filterfeldern, die nicht zum Datentyp der Tabellenfelder passen?
Sind in den Filterfeldern Standardwerte eingetragen oder sind die beim Öffnen des Formulars alle leer?

Falls das auch nicht zur Problemlösung beiträgt, machen wir morgen oder nächste Woche weiter. Für heute habe ich "ausgeraten". ;-)

mfg
Josef

Stefilius

hallo,

habe jetzt meine Beispiel-DB fertig und stelle diese hier mit rein. Inklusive Abfrage und dazugehörigem Formular.

Um nochmals darauf hinzuweisen bzgl. der Normalisierung und Redundanzen. Ich weiss, dass das nicht der optimalste Weg ist, aber aufgrund verschiedener Gegebenheiten ist das nicht anders möglich...

ZitatWelche Fehlermeldung kommt, wenn du die SQL-Anweisung in eine Access-Abfrage öffnest?


Wenn ich nur die Abfrage öffne kommt keine Fehlermeldung, funktioniert einwandfrei!

ZitatStehen möglicherweise Werte in den Filterfeldern, die nicht zum Datentyp der Tabellenfelder passen?


Meines Wissens nicht...

ZitatSind in den Filterfeldern Standardwerte eingetragen oder sind die beim Öffnen des Formulars alle leer?


Die Felder sind leer, es sind keine Standardwerte eingetragen!

Viel Spass beim Probieren   :)


Grüsse Stefilius


[Anhang gelöscht durch Administrator]

Stefilius

Hallo,

habe das Problem behoben. War ein wirklicher Anfängerfehler!

Hab deinen auf den Felddatentyp Text geänderten Code bzgl der PLZ in meiner Abfrage eingetragen, aber in der Tabelle den Felddatentyp nicht auf Text geändert.... Mein Fehler...

Sorry, aber daraus werde ich lernen!

Vielen Dank für die Hilfe, Mühen und Geduld!

Bis hoffentlich bald mal wieder.

Grüsse,
Stefilius

Stefilius

Hallo zusammen,

meine Abfrage und das Formular laufen so weit einwandfrei!

Ich gebe meine Parameter (APLZ, ALand, BPLZ, BLand und KG) ein und bekommen den gewünschten Datensatz geliefert. Jetzt habe ich aber hierzu noch eine kleine Frage.

Und zwar würde ich gerne noch den Parameter Lademeter(LM) einbauen. Soweit ist das kein Problem, allerdings soll der User auswählen zwischen KG und LM eingabe. D. h. ein Parameter bleibt immer leer. Man könnte auch von einem optionalen Parameter sprechen.

Die Beding "is Null" für das Feld ist mir bekannt, nur verzweifle ich am Klammersetzen. Im Moment funktioniert die Abfrage nur wenn ich KG eingebe und bei LM nichts. Im umgekehrten Fall zeigt es mir alle Datensätze an, welche hinterlegt sind. Ich gehe davon aus, dass es an den Klammern liegt?!?!

Hier mal mein WHERE-Teil in SQL:

WHERE
(((Routen_tbl.APLZvon)<=Nz([Forms]![Test_KG_LM]![txtAPLZ],"ZZZZZZZZZ")) AND
((Routen_tbl.APLZbis)>=Nz([Forms]![Test_KG_LM]![txtAPLZ],"")) AND
((Routen_tbl.Aländerkürzel) Like [Formulare]![Test_KG_LM]![ALänderkürzel] & "*") AND
((Routen_tbl.PLZvon)<=Nz([Forms]![Test_KG_LM]![txtBPLZ],"ZZZZZZZZZ")) AND
((Routen_tbl.PLZbis)>=Nz([Forms]![Test_KG_LM]![txtBPLZ],"")) AND
((Routen_tbl.BLänderkürzel) Like [Formulare]![Test_KG_LM]![BLänderkürzel] & "*") AND
(([Gewicht Lademeter_tbl].Kgvon)<=Nz(Forms!Test_KG_LM!txtKG,999999)) And
(([Gewicht Lademeter_tbl].Kgbis)>=Nz(Forms!Test_KG_LM!txtKG,-999999)) OR ((Forms!Test_KG_LM!txtKG) Is Null)) AND
(([Gewicht Lademeter_tbl].LM) Like (Forms!Test_KG_LM!txtLM & "*") OR (Forms!Test_KG_LM!txtLM) Is Null) AND
((Routen_tbl.Gültigkeit)="ja");


Vielleicht kann mir ja jemand helfen, wäre euch sehr dankbar!

Grüsse Stefilius