Announcement

Collapse
No announcement yet.

Seltsam: Verbindungsaufbau zur Entwurfszeit?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Seltsam: Verbindungsaufbau zur Entwurfszeit?

    Hallo,

    Konfig.: Delphi 6 Ent. UP#1, MS SQL Server 2000, ADO (2.7)

    In einer Anwendung habe ich ein Datenmodul, das über eine ADOConnection auf eine Server-DB zugreift (alle ADODatasets und ADOCommands hängen an dieser Connection). Zur Entwurfszeit ist ADOConnection.Connected = False.
    Erst zur Laufteit wird über Connected = True die Verbindung aufgebaut (und das soll auch so bleiben).

    Nun habe ich neuerdings folgendes Problem: Der Server-Dienst ist nicht(!) gestartet und ich starte Delphi mit dem Projekt. Dann wird bereits versucht eine Verbidnung aufzubauen. Ich bekomme folgende Meldung:

    <b>[DBNETLIB][ConnectionOpen(Connect())] SQL Server existiert nicht oder Zugriff verweigert</b>

    Starte ich den Server-Dienst so startet Delphi anstandslos, aber ADOConnection.Connected = True (und das soll eben zur Entwurfszeit nicht sein).

    Es ist defacto keine ADODataset.Active = True oder ähnliches.

    Es resultieren keine Fehler wenn die Anwendung gestartet ist, von daher kein Problem. Ich möchte schlichtweg nicht schon zur Entwurfszeit eine Verbindung aufgebaut wissen.

    Woran liegt das und wie kann man es abstellen?

    Stephan Schneider

  • #2
    Hallo%2C%3Cbr%3E%0D%0Asobald+sich+in+der+IDE+in+ei nem+Formular%2C+Datenmodul+etc.+ein+ge%F6ffnetes+T Dataset+befindet%2C+wird+beim+%D6ffnen+dieses+Form ulars+%28Datenmoduls%29+die+ADOConnection+auf+Conn ected+gesetzt.+Das+geschieht+auch+dann%2C+wenn+im+ Objektinspektor+Connected+manuell+auf+FALSE+gesetz t+wurde.+Ich+vermute+mal%2C+dass+sich+in+Deinem+Pr ojekt+irgendeine+Datenkomponente+befindet%2C+die+s chon+w%E4hrend+der+Entwurfszeit+eine+Verbindung+au fbauen+will.+Das+k%F6nnte+z.B.+ein+TADODatset+sein %2C+bei+dem+man+irgendwann+mal+zum+Testen+Active+a uf+TRUE+gesetzt+hat%2C+dann+vergessen+hat%2C+diese +Einstellung+zur%FCckzusetzen+und+das+Formular+so+ gespeichert+hat.%3Cbr%3E%0D%0AAuf+jeden+Fall+baut+ ADOConnection+ohne+Veranlassung+von+aussen+%28also +eine+verbundenes+ADODataset%29+keine+Verbindung+v on+sich+aus+auf

    Comment


    • #3
      Hallo,<br>
      sobald sich in der IDE in einem Formular, Datenmodul etc. ein geöffnetes TDataset befindet, wird beim Öffnen dieses Formulars (Datenmoduls) die ADOConnection auf Connected gesetzt. Das geschieht auch dann, wenn im Objektinspektor Connected manuell auf FALSE gesetzt wurde. Ich vermute mal, dass sich in Deinem Projekt irgendeine Datenkomponente befindet, die schon während der Entwurfszeit eine Verbindung aufbauen will. Das könnte z.B. ein TADODatset sein, bei dem man irgendwann mal zum Testen Active auf TRUE gesetzt hat, dann vergessen hat, diese Einstellung zurückzusetzen und das Formular so gespeichert hat.<br>
      Auf jeden Fall baut ADOConnection ohne Veranlassung von aussen (also eine verbundenes ADODataset) keine Verbindung von sich aus auf

      Comment


      • #4
        Hallo,

        immer dann, wenn Delphi die Schemadaten der Datenbank einlesen muss oder wenn eine dahinterliegende Command-Objektinstanz ihre Parameters-Kollektion füllen will/muss, benötigt die IDE einen funktionstüchtigen Datenbankzugriff. Wenn dies nicht gewollt ist, kann man nur durch den Verzicht auf ADO Express und das Hantieren mit den nativen ADO-Objekten vollständig "Offline" arbeiten. In diesem Fall muss der Entwickler alle Parameter-Objekte der Parameters-Kollektion etc. von Hand im eigenen Sourcecode füllen, so dass keine Datenbankverbindung notwendig ist.

        P.S: Generell bauen die ADO-Objekte (COM-Objekte von Microsoft) bei Bedarf automatisch im Hintergrund immer dann eine neue Datenbankverbindung auf, wenn diese benötigt wird und die vorgefundene Konfiguration nicht den Anforderungen entspricht. Man darf daher zum Beispiel Command- und Connection-Objekt erst dann miteinander verbinden, wenn dieses Verhalten tolerierbar ist

        Comment

        Working...
        X