Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Feststellen, ob TTable oder TAdsTable (https://www.delphipraxis.net/43546-feststellen-ob-ttable-oder-tadstable.html)

FBrust 5. Apr 2005 16:49

Datenbank: ADS/BDE • Version: 7/5 • Zugriff über: Komponenten

Feststellen, ob TTable oder TAdsTable
 
Hallo,

durch einen Umstieg von der BDE auf den Advantage Database Server wird es eine Zeitlang beide Tabellentypen im Programm geben.

Nun gibt es Routinen, bei denen ich unterscheiden muss zwischen einer TTable der BDE und einer TAdsTable.

Wie kann ich denn herausfinden, von welchem Typ eine Tabelle ist?



Gruß
Frank

shmia 5. Apr 2005 17:04

Re: Feststellen, ob TTable oder TAdsTable
 
Zitat:

Zitat von FBrust
durch einen Umstieg von der BDE auf den Advantage Database Server wird es eine Zeitlang beide Tabellentypen im Programm geben.

Nun gibt es Routinen, bei denen ich unterscheiden muss zwischen einer TTable der BDE und einer TAdsTable.
Wie kann ich denn herausfinden, von welchem Typ eine Tabelle ist?

Delphi-Quellcode:
if tabelle17 is TTable then
begin
   // BDE
end
else if tabelle7 is TAdsTable
begin
   // ADS
end;

FBrust 5. Apr 2005 17:39

Re: Feststellen, ob TTable oder TAdsTable
 
ach so einfach?

na dann: :wall:

und: :thumb:


Danke für die Antwort


Gruß
Frank

Quake 5. Apr 2005 19:02

Re: Feststellen, ob TTable oder TAdsTable
 
oder
Delphi-Quellcode:
if tabelle17.class = TTable then
oder
Delphi-Quellcode:
if tabelle17.classname = 'TTable' then

Quake 16. Apr 2005 18:26

Re: Feststellen, ob TTable oder TAdsTable
 
Habe gerade festgestell, dass es einen Unterschied gibt zwischen shmias und meiner Methode.

z.B.

Angenommen Edit ist ein TEdit

Edit is TEdit -> true
Edit is TWinControl -> true

Edit.Class = TEdit -> true
Edit.Class = TWinControl -> false

bye

phXql 16. Apr 2005 19:47

Re: Feststellen, ob TTable oder TAdsTable
 
Zitat:

Zitat von Quake
Habe gerade festgestell, dass es einen Unterschied gibt zwischen shmias und meiner Methode.

z.B.

Angenommen Edit ist ein TEdit

Edit is TEdit -> true
Edit is TWinControl -> true

Edit.Class = TEdit -> true
Edit.Class = TWinControl -> false

bye

is berücksichtigt auch alle geebrten klassen, .class macht das anscheinend nicht...

Robert_G 16. Apr 2005 20:41

Re: Feststellen, ob TTable oder TAdsTable
 
Vor allem ist die Prüfung auf den string des Klassennamens schon ziemlich ... krass. :shock:
Während die normale, lesbare und vom Compiler geprüfte Variante (IS Operator) nur eine klitzekleine Operation durchführen muss, ist bei deiner Variante gleich ein ganzer Stringvergleich fällig.

btw: Leitet die TAdsTable nicht von der TTable ab? Oder haben sie nicht einen kleinsten gemeinsamen Vorfahren, der die benötigten Eigenschaften und Methoden mitbringt?
Dann dürfte es doch ziemlich easy sein nur den im Code zu nehmen. ;)

Union 16. Apr 2005 21:04

Re: Feststellen, ob TTable oder TAdsTable
 
Zitat:

Zitat von Robert_G
Vor allem ist die Prüfung auf den string des Klassennamens schon ziemlich ... krass. :shock:
Während die normale, lesbare und vom Compiler geprüfte Variante (IS Operator) nur eine klitzekleine Operation durchführen muss, ist bei deiner Variante gleich ein ganzer Stringvergleich fällig.

btw: Leitet die TAdsTable nicht von der TTable ab? Oder haben sie nicht einen kleinsten gemeinsamen Vorfahren, der die benötigten Eigenschaften und Methoden mitbringt?
Dann dürfte es doch ziemlich easy sein nur den im Code zu nehmen. ;)

Die haben TDataSet als Vorfahr. Und deshalb sollten die Funktionen dann auch so programmiert werden.

TDataSet->TBDEDataSet->TDBDataSet->TTable
TDataSet->TAdsExtendedDataSet->TAdsTable

joachimd 19. Apr 2005 10:37

Re: Feststellen, ob TTable oder TAdsTable
 
Zitat:

Zitat von Robert_G
Leitet die TAdsTable nicht von der TTable ab?

Gott bewahre...den ganzen BDE Quatsch mitschleppen? Was wäre das dann für eine Alternative?
Übrigens: Wir hatten schon oft Anfragen, warum ADS denn die BDE weiterhin benötigt. Die Lösung bestand immer in einer Unit (dbtables), welche die Anwender in der uses-Klausel vergessen haben.
Merke: Wenn BDE-Frei, dann auch alle BDE-Units entfernen! (und weil es so wichtig ist, gleich nochmal ein paar Ausrufezeichen!!!).

Robert_G 19. Apr 2005 10:41

Re: Feststellen, ob TTable oder TAdsTable
 
*In Deckung gehe* :duck:

sorry, TTable gehört zu den Dingen, die ich freiwillig wohl niemals anrühren werde.
In der Hinsicht bin ich ganz stolz darauf inkompentent zu sein. :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:54 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