Ich verwende eine TSQLConnection
Komponente (connDT
) auf einem Datenmodul nur die Felder zu einem TSQLDataset
, TDatasetProvider
und TClientDataset
Trio zur Entwurfszeit zu holen, die zu meiner Testdatenbank verbinden. Zur Laufzeit muss ich die Objektinstanz der Designzeit TSQLConnection
(connDT
) mit einer Laufzeitobjektinstanz (connRT
) ändern, die mit der Produktionsdatenbank verbunden ist. Ich habe es auf diese Weise in der OnCreate
Veranstaltung Datenmodul:Kann ich eine Sollzeitkomponentenreferenz zur Laufzeit überschreiben?
connDT := connRT;
Aber wenn ich mein TClientDataset
Objekt (Trio) öffnen, verwendet es noch die Testdatenbank (die connDT
Verbindungsobjekt-Einstellungen verwendet werden). Wie kann ich eine Soll-Komponentenreferenz zur Laufzeit überschreiben?
Nein, das tust du nicht. Verwenden Sie die vorhandene Verbindung (ConnDT) und ändern Sie den Verbindungsnamen, oder verwenden Sie Ihre neue Verbindung (ConnRT), und ändern Sie die "TSQLQuery.SQLConnection", um diese Verbindung im OnCreate Ihres Datenmoduls zu verwenden. Sie müssen keine Instanz auf eine andere Instanz verweisen. –
@KenWhite Ich weiß, dass ich es so machen kann, wie du es gesagt hast, aber es ist nicht das, was ich tun möchte. Ich möchte die SQLConnection-Objektinstanz austauschen, damit ich nicht in allen SQLDataset tauschen oder ConnDT bereits mit der Produktionsdatenbankkonfiguration verbinden muss. Es handelt sich nicht um ein SQLConnection-Exklusivproblem, sondern darum, die Instanz der Entwurfszeitkomponente für eine Laufzeitinstanz zu vertauschen. –
Das ist nicht das, was du tun sollst. Wenn Sie keine weiteren Probleme haben, verliert das Originalobjekt, das für diese Designzeitkomponente instanziiert wurde und das Sie überschreiben, seinen Verweis und wird nicht freigegeben. – Victoria