![]() |
TObject Zuweisung + Verwendung
Hallo,
ich habe ein Objekt. Query : TObject; Diesem Objekt möchte ich je nachdem eine vorhandene TQuery (DM1.DBQ_A) oder eine vorhandene ToraQuery (DM1.OSQ) zuweisen, weil beide genau die gleichen Methoden und Eigenschaften verwenden, die ich danach anspreche. if [...] Query := DM1.DBQ_A as TQuery; else Query := DM1.OSQ as ToraQuery; Query.activate; [...] So bleibt mein Objekt aber leer. Wie mache ich das richtig? Und das zweite ist, geht das überhaupt, dass ich dem Objekt dieses activate zuweisen kann, weil da der Compiler schon meckert.? Danke schon mal im voraus Leo |
Re: TObject Zuweisung + Verwendung
Du hast anscheinend 2 Klassen, die ähnlich, aber doch nicht gleich sind.
(TQuery und TOraQuery) Du musst die nächst mögliche gemeinsame Basisklasse suchen. Die gemeinsame Basisklasse ist in deinem Fall: TDataset
Delphi-Quellcode:
var
ds : TDataset; begin if useoracle then ds := DM1.OSQ else ds := DM1.DBQ_A; ds.Active := True; while not ds.Eof do begin ShowMessage(ds.Fields[0].AsString); ds.Next; end; ds.Close; // wichtig: // ds ist nicht mit Free freigeben end; |
Re: TObject Zuweisung + Verwendung
Danke, genau das habe ich gesucht!
Leider besitzt das TDataset keine Eigenschaft SQL, was mich nun auch nicht weiterbringt... Leo |
Re: TObject Zuweisung + Verwendung
bau dir eine factoryklasse welche ein tdataset zurückliefert.
die factory hat als parameter dann das sql und erzeugt intern dann das spezielle dataset für die datenbank. |
Re: TObject Zuweisung + Verwendung
Zitat:
Du hast immer die Möglichkeit, mit dem is Operator den Klassentyp abzufragen und dann zu casten:
Delphi-Quellcode:
In vielen Fällen kann man mit den Methoden & Properties von TDataset auskommen.
var
ds : TDataset; begin if useoracle then ds := DM1.OSQ else ds := DM1.DBQ_A; .... if ds is TOraQuery then TOraQuery(ds).SQL.Text := 'SELECT * FROM ....' else if ds is TQuery then TQuery(ds).SQL.Text := 'SELECT * FROM ....'; Es bietet sich an, dies Codeblöcke in eigene Proceduren auszulagern und das Dataset als Parameter zu übergeben. Nur an wenigen Stellen muss man an die Methoden & Properties der spezialisierten Query-Klasse heran. (siehe der Hinweis von generic) |
Re: TObject Zuweisung + Verwendung
Danke!
War genau das, was mir noch gefehlt hat! Nun funktioniert es! :spin2: Leo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz