ich arbeite mit Acc2000 und einem MsSql7 Server. Hat man die Möglichkeit die
ConnectionTimeout in dem CurrentProject.Conection.ConnectziobTimeout zu
ändern. Der Standardwert liegt bei 30 s. Der Versuch den Wert zu setzen war
leider erfolglos.
grup klaus
"Klaus Minch" <Kl...@minch.de> schrieb ...
Im Nachhinein (nach dem Öffnen) lässt sich der Wert einer Connection
generell nicht mehr ändern.
Leider ist Access 2000 (hier bereits durch A2002 ersetzt, das dort etwas
besser funktioniert) bei allem SEHR vergesslich, was über die Eigenschaften
der ersten Seite des Verbindungsdialogs hinausgeht.
Ein Eintragen des Connection Timeouts im Dialog sollte funktionieren,
solange Du die Parameter später nicht anpackst.
Wenns via Code (oder Runtime) läuft:
Falls Du eine langsame Verbindung hast: Eröffne zunächst eine
Standard ADO-Connection via Code. Durch das interne Connection Pooling
sollte der Aufbau durch Access dann schnell erfolgen, solange die
Verbindungsparameter identisch sind.
Gruss
Elmar
vielen Dank für Deine Antwort, aber ...
>
> Im Nachhinein (nach dem Öffnen) lässt sich der Wert einer Connection
> generell nicht mehr ändern.
>
leider ergibt sich dann für mich folgends Problem. Wenn ein Bericht mit
Hilfe des DoCmd.OpenReport geöffnet wird, greift dieser automatisch auf die
hinterlegte Abfrage (Me.RecordSource) zurück. Diese Recodsource ist jedoch
mit der CurrentProject.Connetion verbunden, bzw. mit einer Verbindung, die
Durch Acc2000 selbst verwaltet wird. Damit bekommt dieser Bericht
automatisch die ConnectionTimeout bzw. CommandTimeout der
Standard-Verbindung, und das sind 30 s.
Mit der Optimierung eines SQL - Befehls ist man mit Sicherheit auch nicht
immer in der Lage, die Laufzeit auf unter 30 s zu minimieren. Also muß auf
der Clientseite etwas getan werden (was mit Sicherheit bei komplexeren
Abfragen sinnvoll ist).
Was für weine Möglichkeit hat man, um dieses Problem zu lösen ?
Hat man auf der Acc2000 Seite die Möglichkeit, einem Bericht einen eigenen
RecordSource, basierend auf einer 'neuen' Verbindung mit einer geänderten
CommandTimeout Zeit 'unterzujubeln' ?
> Leider ist Access 2000 (hier bereits durch A2002 ersetzt, das dort etwas
> besser funktioniert) bei allem SEHR vergesslich, was über die
Eigenschaften
> der ersten Seite des Verbindungsdialogs hinausgeht.
> Ein Eintragen des Connection Timeouts im Dialog sollte funktionieren,
> solange Du die Parameter später nicht anpackst.
In welchen Dialog kann man die Connection - Timeouts eintrage ?
Meinst Du den Dialog Extras->Optinen->Weiter->Ole/DDT-Timeout(s) oder eine
andere Stelle.
Ich kenne nur diese Stelle ....
> Wenns via Code (oder Runtime) läuft:
> Falls Du eine langsame Verbindung hast: Eröffne zunächst eine
> Standard ADO-Connection via Code. Durch das interne Connection Pooling
> sollte der Aufbau durch Access dann schnell erfolgen, solange die
> Verbindungsparameter identisch sind.
Es ist die Runtime. Ich habe in dem Paket- und Weitergabe-Assistenten keine
Stelle gefunden, in der man die Timeoutzeit konfigurieren kann. Auch in der
Registry habe ich nichts gefunden.
Hat man sonst eine Möglichkeit, diese Zeit zu verändern ....
gruß klaus
"Klaus Minch" <Kl...@minch.de> schrieb ...
> >
> > Im Nachhinein (nach dem Öffnen) lässt sich der Wert einer Connection
> > generell nicht mehr ändern.
> >
>
> leider ergibt sich dann für mich folgends Problem. Wenn ein Bericht mit
> Hilfe des DoCmd.OpenReport geöffnet wird, greift dieser automatisch auf die
> hinterlegte Abfrage (Me.RecordSource) zurück. Diese Recodsource ist jedoch
> mit der CurrentProject.Connetion verbunden, bzw. mit einer Verbindung, die
> Durch Acc2000 selbst verwaltet wird. Damit bekommt dieser Bericht
> automatisch die ConnectionTimeout bzw. CommandTimeout der
> Standard-Verbindung, und das sind 30 s.
Zunächst: Schmeiss jetzt bitte nicht ConnectionTimeout und CommandTimeout
durcheinander - ich bezog mich gestern ausschliesslich auf ConnectionTimeout:
ConnectionTimeout -> Wartezeit für den Verbindungsaufbau zum SQL Server
CommandTimeout -> Wartezeit für die Ausführung der Befehle - bis zur
Rückgabe der ersten Daten. Vorgaben beide 30 Sekunden, 0 wartet endlos.
ConnectionTimeout kann nur bei einer geschlossenen Verbindung geändert
werden - danach ist die einstellung ja aucb sinnlose, CommandTimeout
kann auch später geändert werden.
Zu den schlechten Nachrichten: Das Ändern der CommandTimeout Einstellung
für eine Verbindung wird von extern wie intern erzeugten Command Objekten
nicht übernommen - es wird immer der Defaultwert (30 Sek) voreingestellt.
http://support.microsoft.com/support/kb/articles/q195/4/89.asp
Und CurrentProject.Connection ist zudem eine modifzierte ADO (via DataShape)
Connection, die das Ändern per se nicht erlaubt. Nicht Berichte betreffend,
aber verhält sich gleich:
http://support.microsoft.com/support/kb/articles/q243/4/64.asp
>
> Mit der Optimierung eines SQL - Befehls ist man mit Sicherheit auch nicht
> immer in der Lage, die Laufzeit auf unter 30 s zu minimieren. Also muß auf
> der Clientseite etwas getan werden (was mit Sicherheit bei komplexeren
> Abfragen sinnvoll ist).
> Was für weine Möglichkeit hat man, um dieses Problem zu lösen ?
Sicherlich kommt das vor. Nur sollte das nicht gerade beim Öffnen eines
Berichts passieren - Benutzer kommen sich dann schnell gelangweilt vor -
und auch eine animierte Sanduhr ist nicht gerade unterhaltsam ;-).
Wenn die Aufbereitung von Daten lange dauert, so führe ich dies in
der Regel über eine gespeicherte Prozedur vorab durch - ggf. mit Progressbar
oder gar als SQL Agent Auftrag - und setze den jeweiligen Bericht auf eine
Tabelle mit den aufbereiteten Daten auf. Letzere Variante zugegeben etwas
"advanced", aber erste sollte mit einem Aufruf einer entsprechenden
Prozedur via Command Objekt vorm Öffnen des Berichts schnell realisierbar
sein.
>
> Hat man auf der Acc2000 Seite die Möglichkeit, einem Bericht einen eigenen
> RecordSource, basierend auf einer 'neuen' Verbindung mit einer geänderten
> CommandTimeout Zeit 'unterzujubeln' ?
Bei Acc2000 nicht. Nur A2002 könnte man via Recordset Eigenschaft ein mit
anderen CommandTimeout versehenes Recordset unterschieben. Nur kennt A2000
die Eigenschaft noch nicht.
Das A2002 von Haus aus endlos wartet, ist IMO auch keine Verbesserung -
da werden die Benutzer dann nur zum Affengriff genötigt. Einen Parameter
zur Einstellung scheint es dort - auch nach längerer Suche - ebenfalls nicht
zu geben <grummel>.
Gruss
Elmar
vielen Dank für die Antwort, ich habe auch etwas im Internet gestöbert und
eine Lösung gefunden, mit der ich einigermaßen zurechtkomme. In Acc2000 hat
man die Möglichkeit mit Application.SetOption (Gegenstück GetOption) die
verschiedensten Optionen zu setzten, die man unter der Entwicklungsumgebung
über die Menüs erreichen kann.
In der Online-Dokumentation ist die gesamte Geschichte etwas spärlich
beschrieben, in dem folgenden Artikel sind jedoch alle Parameter expliziert
dokumentiert.
http://support.microsoft.com/directory/article.asp?ID=KB;EN-US;Q216888
Mit der Methode SetOption hat man auch die Möglichkeit, die CommandTimeout -
Zeiten auch während der 'Laufzeit' zu ändern. Die Änderung klappt ebenfalls
unter dem Runtime - Environment .....
Diese Einstellung gilt jedoch global, d.h. die durchgeführte Änderung bleibt
auch bestehen, wenn Access verlassen wird.
Nochmals vielen Dank für Deine Hilfe ....
Übrigens, hat man wie bei Access2 eine Möglichkeit, das Verhalten der von
Access aus verwalteten Verbindungen zu steuern.
Bei Acc2 hatt man die Möglichkeit über im Verver liegende Tabellen das
Verhalten von Access zu steuern.
Ist Dir in dieser Richtung etwas bekannt ?
gruß klaus
Elmar Boye <news...@elmarboye.de> schrieb in im Newsbeitrag:
9o59lp$b2f33$2...@ID-28695.news.dfncis.de...