PDA

Vollständige Version anzeigen : PassThrough-Abfragen


cpetit
22.03.2004, 15:09
Hallo,

stehe mal wieder vor einem Problem.

Habe mehrere PassThrough-Abfragen die als Muster dienen für andere Abfragen in der Datenbank.


Set dbs = CurrentDb

' Prüft ob der Report geöffnet ist
' wenn ja wird er geschlossen
Call IsLoadedReport("strQueryName")
' Report löschen, falls vorhanden
Call DeleteQuery(strQueryName)
' Abfrage Kopieren und unter einem anderen Namen speichern
DoCmd.CopyObject , strQueryName, acQuery, strQueryUrsprung
' SQL-String auslesen
strSQL = dbs.QueryDefs(strQueryName).SQL
' Hier wird der Benutzerdefinierter Filter und Sortierung
' aus der Tabelle ausgelesen und der SQL-String zusammengesetzt
strSQLSchnipsel = QueryZusammenSchnipseln(strSQL)

Set qdf = dbs.QueryDefs(strQueryName)

qdf.SQL = strSQLSchnipsel

qdf.ReturnsRecords = True

qdf.Close


Er braucht dafür 4-10 Sekunden.

Ich vermute das er die Daten dann vom Server holt.

Das braucht er aber nicht, denn die Daten sollen erest vom Server kommen wenn ich den Bericht öffne.


Stelle ich ReturnsRecords auf False geht es unter 0,04 Sekunden.
Versuche ich aber den Bericht zu öffnen gibt es eine Fehlermeldung.


Wie mache ich das am besten?

cpetit
23.03.2004, 06:03
Keiner da?

piano
23.03.2004, 06:56
Hallo
Weißt Du schon wo genau es spießt?
Vielleicht vorerst Debug.Print Time() zwischen die Statements und in Direktbereich analysieren!

Anne Berg
23.03.2004, 07:40
Ist der Bericht an die Abfrage gebunden?

Welche Fehlermeldung kommt beim Öffnen?

cpetit
23.03.2004, 08:27
Der Ablauf ist so.

Der Anwender gibt in einem Formular seinen Filter ein.

Beim Speichern erstelle ich eine PassThrough-Abfrage in dem ich die Ursprung-Abfrage nehme und kopiere ,dann bearbeite ich ihn in dem ich den SQL-String auslese und die Where-bedingung setze.


Siehe unten im Code-Beispiel.


Die neu angelegte Abfrage soll dann aber nicht ausgeführt werden.
Sobald ich ReturnsRecords auf True setze werden die Daten geholt.
Das soll aber nicht passieren.

Das muss doch zu unterbinden sein.

Der Bericht bekommt dann später beim öffnen die neue Datenherkunft.

Anne Berg
23.03.2004, 08:56
Der Ablauf war schon klar, du hast meine Fragen damit nicht beantwortet.