Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Access verändert Abfrage nach der Nutzung (https://www.delphipraxis.net/129524-access-veraendert-abfrage-nach-der-nutzung.html)

LuCSteR 20. Feb 2009 13:44

Datenbank: Access • Version: XP • Zugriff über: -

Access verändert Abfrage nach der Nutzung
 
Hi,

ich hab dieses Phänomen jetzt schon zum 2ten Mal.
Und zwar habe ich eine SQL Abfrage, die anhand verschiedener Combobox-Einträgen verschiedene Ergebnisse liefert. (Je nach Auswahl der Combobox Einträge halt). Wenn die Einträge leer sind (qasi Null), dann löscht sich die Abfrage selbst bzw. verändert und speichert sich nach der Nutzung so, dass nur noch "SELECT ;" drin steht. An diesem Pkt. habe ich einfach Initialwerte in den Comboboxen gesetzt, worauf sich die Abfrage jetzt nicht mehr von alleine ändert.

Nun habe ich die Query erweitert um 5 Subselects. Die Abfrage insgesamt liefert auch das richtige Ergebnis. Auch noch solange das Formular, in dem die Abfrage in einem Unterformular ausgegeben wird, nicht geschlossen wird. Sobald man die Form neu öffnen will, geht das nicht, weil ja die Abfrage in Nonsens geändert wurde ("SELECT ;")...

Mir ist aufgefallen das schon sobald die Form geöffnet wird, die Abfrage sich ebenfalls ändert. Ich verstehe blos nicht warum. Wie oben beschrieben hatte ich das Problem schonmal und konnte es durch Initialwerte lösen, sodass die Abfrage auf jeden Fall alle Parameter (bzw. Variablen) mit Werten füllen kann.

Ich häng mal noch die gesamte Abfrage dran, vll bringts was :)

SQL-Code:
SELECT SS.*,
(SELECT COUNT(*) FROM Garagenvertraege_SIA GV WHERE ((GV.LC_PLZ = SS.SPLZ) AND (GV.LC_STR = SS.SStrassencode) AND (GV.LC_HNR = SS.SHausnummer))) AS ["GV"],
(SELECT COUNT(*) FROM Bezirkbesonderheiten_SIA BB WHERE ((BB.PLZ=SS.SPLZ) AND (BB.STR_CODE=SS.SStrassencode) AND (BB.HAUS_NR=SS.SHausnummer))) AS ["BB"],
(SELECT COUNT(*) FROM Nachsendeinformationen_SIA NSI WHERE ((NSI.PLZ_ALT=SS.SPLZ) AND (NSI.STR_CODE_ALT=SS.SStrassencode) AND (NSI.HNR_ALT=SS.SHausnummer))) AS ["NSI"],
(SELECT COUNT(*) FROM PostCardDaten_SIA PC WHERE ((PC.PLZ=SS.SPLZ) AND (PC.STR_CODE=SS.SStrassencode) AND (PC.HAUS_NR=SS.SHausnummer))) AS ["PC"],
(SELECT COUNT(*) FROM Rueckstellinformationen_SIA RSI WHERE ((RSI.PLZ=SS.SPLZ) AND (RSI.STR_CODE=SS.SStrassencode) AND (RSI.HAUS_NR=SS.SHausnummer))) AS ["RSI"]
FROM Sendungssolldaten_SIA AS SS
WHERE (((SS.Bezirk) Like Forms!Suchfunktion.combobez & "*") And ((SS.SPLZ) Like Forms!Suchfunktion.comboplz & "*") And ((SS.SStrassencode) Like Forms!Suchfunktion.combosc & "*") And ((SS.Sendungsart) Like Forms!Suchfunktion.combosa & "*") And ((SS.Produkttyp) Like Forms!Suchfunktion.combopt & "*") And ((SS.AUSLIEFER_FLAG) Like Forms!Suchfunktion.comboaf & "*"));
Die Abfrage liefert das gewünschte und richtige Ergebnis allerdings nur solange wie das Formular geöffnet ist. hab deshalb eine Sicherungsabfrage angelegt...Klar kann ich per VBA dann die richtige wieder überschreiben aber ich würde gern das Problem beheben.

Grüße lucster

LuCSteR 23. Feb 2009 11:28

Re: Access verändert Abfrage nach der Nutzung
 
hatte noch nie jmd so ein problem? :/

LuCSteR 23. Feb 2009 14:25

Re: Access verändert Abfrage nach der Nutzung
 
hat sich erledigt.

fkerber 23. Feb 2009 14:28

Re: Access verändert Abfrage nach der Nutzung
 
Hi!

Könntest du dann aber trotzdem schreiben, woran es gelegen hat bzw. wie du das Problem lösen konntest?
Falls mal nochmal jemand ein solches Problem hat, ist er dir sicher dankbar...


Ciao, Frederic

LuCSteR 25. Feb 2009 16:24

Re: Access verändert Abfrage nach der Nutzung
 
Wie beschrieben hatte ich das Problem schon einmal, welches ich seltsamer weise durch Initialwerte in den Comboboxen beheben konnte.
Dachte das es also daran nicht liegen kann.
Durch rumprobieren habe ich dann einfach die Initialwerte nach der erweiterten Abfrage mit den Subselects, diese Werte wieder rausgenommen. Prompt hat es funktioniert. Macht ja auch sinn, wenn man sich die Abfrage bzw. die Where-Klausel genau anschaut.
Mein Initialwert war überall "*". Also wurde immer auf ein "**" am Anfang des Feldes geprüft, was natürlich keinen Sinn macht. Warum es trotzdem mit den Initialwerten vor der Erweiterung geklappt hat verstehe ich leider auch nicht. Access ist sowieso extrem instabil...

Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz