Hallo,<BR><BR>Hoffentlich drücke ich mich verständlich aus:<BR>Für unser Projekt müssen wir (leider) auf Access97 zurück greifen, da es der Kunde so will. Unser Daten liegen in einer Vielzahl von Tabellen vor, die zusätzlich noch über Zeitraumintervalle selektiert werden müssen. Das bedeutet für uns, dass wir auf diese Tabellen zuerst Unterabfragen erstellen müssen, die die Datensätze über den Zeitpunkt einschränken. Anschließend wird die finale Abfrage gestellt, die die Unterabfragen über left join (weil es können dort auch keine Werte vorliegen) miteinander verbindet. Das Datum zur Erstellung der Unterabfragen ist natürlich variabel, so dass die dynamisch erstellt werden müssen. Und genau das ist das Problem!<BR>Soviel ich weiß, ist es in Access innerhalb einer Abfrage nicht möglich Klammern für Unterabfragen in der Form:<PRE>
select ... from x left join
(select ... from y where VonDatum <= ... and BisDatum >= ...)</PRE>
zu stellen. Diese Möglichkeit keine Unterabfragen zu schreiben, sondern gleich alles in einer Abfrage zu verknüpfen, scheidet also aus. Das Select innerhalb der Klammer muss in eine separate Abfrage.<BR>Nun, da wir bis jetzt keine Möglichkeit gefunden haben direkt aus Delphi heraus eine neue Abfrage zu generieren, sind wir den Umweg über eine Procedure direkt in Access gegangen. Dazu sprechen wir Access als COM-Object an, und steuern es fern, sprich wir rufen die Procedure mit dem Datum als Parameter auf. Diese erstellt uns sehr brav die Unterabfragen. Das klappt auch alles! Aber, wenn wir anschließend die finale Abfrage öffnen wollen, dann erhalten wir eine Fehlermeldung, dass eine der gerade neu erstellten Abfragen nicht existiert. Der Witz ist natürlich, dass es genau zu diesem Zeitpunkt sehr wohl diese Abfrage gibt!<BR>Wir haben nun vermutet, dass dadurch bedingt, dass wir einerseits die ADOConnection offen halten, und andererseits Access fernsteuern, die Connection nicht automatisch den Datenbankkatalog aktualisiert, und genau das scheint auch das Problem zu sein. Wenn wir die ADOConnection abbauen und wieder neu erstellen, klappt alles - aber - das dauert doch ziemlich lange, zu lange!<BR>Nun meine Frage: Gibt es eine Möglichkeit direkt über ADO Abfragen in Access97 zu erstellen? Dann könnte man sich das Fernsteuern sparen. Oder gibt es eine schnellere Möglichkeit den Katalog zu refreshen? Jeder Tip wäre Klasse!!!<BR>Vielen Dank für die Mühen, schon jetzt.<BR><BR>Olaf
select ... from x left join
(select ... from y where VonDatum <= ... and BisDatum >= ...)</PRE>
zu stellen. Diese Möglichkeit keine Unterabfragen zu schreiben, sondern gleich alles in einer Abfrage zu verknüpfen, scheidet also aus. Das Select innerhalb der Klammer muss in eine separate Abfrage.<BR>Nun, da wir bis jetzt keine Möglichkeit gefunden haben direkt aus Delphi heraus eine neue Abfrage zu generieren, sind wir den Umweg über eine Procedure direkt in Access gegangen. Dazu sprechen wir Access als COM-Object an, und steuern es fern, sprich wir rufen die Procedure mit dem Datum als Parameter auf. Diese erstellt uns sehr brav die Unterabfragen. Das klappt auch alles! Aber, wenn wir anschließend die finale Abfrage öffnen wollen, dann erhalten wir eine Fehlermeldung, dass eine der gerade neu erstellten Abfragen nicht existiert. Der Witz ist natürlich, dass es genau zu diesem Zeitpunkt sehr wohl diese Abfrage gibt!<BR>Wir haben nun vermutet, dass dadurch bedingt, dass wir einerseits die ADOConnection offen halten, und andererseits Access fernsteuern, die Connection nicht automatisch den Datenbankkatalog aktualisiert, und genau das scheint auch das Problem zu sein. Wenn wir die ADOConnection abbauen und wieder neu erstellen, klappt alles - aber - das dauert doch ziemlich lange, zu lange!<BR>Nun meine Frage: Gibt es eine Möglichkeit direkt über ADO Abfragen in Access97 zu erstellen? Dann könnte man sich das Fernsteuern sparen. Oder gibt es eine schnellere Möglichkeit den Katalog zu refreshen? Jeder Tip wäre Klasse!!!<BR>Vielen Dank für die Mühen, schon jetzt.<BR><BR>Olaf
Comment