AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TObject Zuweisung + Verwendung

Ein Thema von Leominora · begonnen am 30. Jun 2005 · letzter Beitrag vom 30. Jun 2005
Antwort Antwort
Leominora

Registriert seit: 25. Nov 2004
26 Beiträge
 
Delphi 7 Enterprise
 
#1

TObject Zuweisung + Verwendung

  Alt 30. Jun 2005, 10:05
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
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: TObject Zuweisung + Verwendung

  Alt 30. Jun 2005, 10:27
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;
Andreas
  Mit Zitat antworten Zitat
Leominora

Registriert seit: 25. Nov 2004
26 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: TObject Zuweisung + Verwendung

  Alt 30. Jun 2005, 11:33
Danke, genau das habe ich gesucht!

Leider besitzt das TDataset keine Eigenschaft SQL,
was mich nun auch nicht weiterbringt...


Leo
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#4

Re: TObject Zuweisung + Verwendung

  Alt 30. Jun 2005, 12:02
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.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: TObject Zuweisung + Verwendung

  Alt 30. Jun 2005, 12:04
Zitat von Leominora:
Leider besitzt das TDataset keine Eigenschaft SQL,
was mich nun auch nicht weiterbringt...
Macht aber nix.
Du hast immer die Möglichkeit, mit dem is Operator den Klassentyp abzufragen und dann zu casten:
Delphi-Quellcode:
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 ....';
In vielen Fällen kann man mit den Methoden & Properties von TDataset auskommen.
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)
Andreas
  Mit Zitat antworten Zitat
Leominora

Registriert seit: 25. Nov 2004
26 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: TObject Zuweisung + Verwendung

  Alt 30. Jun 2005, 13:42
Danke!

War genau das, was mir noch gefehlt hat!
Nun funktioniert es!

Leo
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz