collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 58
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13808
  • stats Beiträge insgesamt: 64124
  • stats Themen insgesamt: 8674
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Autor Thema: "Bereichs-Parameterabfrage" im Formular  (Gelesen 8573 mal)

Offline Josef P.

  • Access-Profi
  • **
  • Beiträge: 233
    • Code-Bibliothek für Access-Entwickler
Re: "Bereichs-Parameterabfrage" im Formular
« Antwort #15 am: April 25, 2012, 17:02:45 »
Hallo!

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

mfg
Josef

Offline Stefilius

  • Newbie
  • Beiträge: 13
Re: "Bereichs-Parameterabfrage" im Formular
« Antwort #16 am: April 26, 2012, 09:39:07 »
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
 

Offline Stefilius

  • Newbie
  • Beiträge: 13
Re: "Bereichs-Parameterabfrage" im Formular
« Antwort #17 am: April 26, 2012, 14:21:55 »
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
 

Offline Josef P.

  • Access-Profi
  • **
  • Beiträge: 233
    • Code-Bibliothek für Access-Entwickler
Re: "Bereichs-Parameterabfrage" im Formular
« Antwort #18 am: April 26, 2012, 15:56:52 »
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

Offline Stefilius

  • Newbie
  • Beiträge: 13
Re: "Bereichs-Parameterabfrage" im Formular
« Antwort #19 am: April 26, 2012, 16:38:17 »
Hallo,

Zitat
Funktioniert 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!

Zitat
wo 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
 

Offline Josef P.

  • Access-Profi
  • **
  • Beiträge: 233
    • Code-Bibliothek für Access-Entwickler
Re: "Bereichs-Parameterabfrage" im Formular
« Antwort #20 am: April 26, 2012, 16:45:38 »
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

Offline Stefilius

  • Newbie
  • Beiträge: 13
Re: "Bereichs-Parameterabfrage" im Formular
« Antwort #21 am: April 27, 2012, 10:44:40 »
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...

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

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

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

Meines Wissens nicht...

Zitat
Sind 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]
 

Offline Stefilius

  • Newbie
  • Beiträge: 13
Re: "Bereichs-Parameterabfrage" im Formular
« Antwort #22 am: April 27, 2012, 13:07:42 »
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
 

Offline Stefilius

  • Newbie
  • Beiträge: 13
Re: "Bereichs-Parameterabfrage" im Formular
« Antwort #23 am: Mai 07, 2012, 14:11:24 »
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