![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBConnection
Tablenames aus einem Dataset
Hallo zusammen,
leider komme ich wieder nicht weiter. Mein Problem besteht darin, dass ich zur Laufzeit aus einem TSimpleDataset oder TSqlDataset die Tabellennamen extrahieren möchte. Leider konnte ich bis jetzt nichts passendes finden. Ich habe zwar schon versucht die Tabellennamen aus dem SQL Statement des Datasets zu filter. Bei einer oder mehreren Tabellen die hinter dem "From" aufgelistet sind ist das noch möglich, aber wenn Joins ins Spiel kommen wirds aber auch schon schwierig. Hat hierzu jemand eine Idee? Vielen Dank für die Hilfe |
AW: Tablenames aus einem Dataset
Wenn du dir die Fields des DataSets anschaust, dann ist dort (abhängig von der Komponente/Query) auch der TableName enthalten.
Problematisch kann es bei Feldern aus SubSelects werden. Alle beteiligten Tabellen herauszufinden wird schwierig, weil sich das DataSet nur um den CommandText kümmert ohne diesen zu verstehen (wird einfach nur an die Connection/Datenbank geschickt) und die zurückgelieferten Felder und Datensätze bereitstellt. Ist also eine Tabelle beteiligt, aus der keine Felder im Resultset auftauchen, dann weiß das DataSet nicht, dass diese Tabelle beteiligt ist (ist dem DataSet auch relativ egal). Du müsstest die Datenbank fragen, welche Tabellen bei der Query im Spiel sind. |
AW: Tablenames aus einem Dataset
Hallo,
ich habe mal mehrere Komponenten ausprobiert (TSimpleDataset, TSQlDataset, TClientDataset, TSqlQuery) und konnte leider bei keiner dieser Komponenten die Eigenschaft "TableName" finden. Mein Aufruf sieht wie folgt aus: Komponente.Fields[0]. <- und dann steht keine Eigenschaft "Tablename" zur Verfügung. Danke für die Hilfe |
AW: Tablenames aus einem Dataset
Ich meinte
![]() |
AW: Tablenames aus einem Dataset
leider ist die Eigenschaft "origin" bei mir immer leer
|
AW: Tablenames aus einem Dataset
Hmm, magst Du mal erkläutern, wozu Du diese Tablenames brauchst? Vielleicht kann man Dein Problem ja auf einem anderen Weg lösen.
|
AW: Tablenames aus einem Dataset
ja also,
ich habe ein DataDictionary welches alle Informationen über die Datenbanktabelle und dessen Felder beinhaltet. Das ist dazu gedacht um zur Laufzeit Datenbanken nach dieser Struktur zu erstellen, kaputte Datenbanken zu reparieren, und vieles mehr. Jetzt habe ich ein DBGrid welches eine Datenmenge anzeigt. Jedoch heißen die Titelzeilen der einzelnen Spalten im DBGrid natürlich immer noch wie die Felder in der Datenbank. Da das DataDicionary auch die Eingenschaft "DisplayLabel" beinhaltet, war mein Ziel beim öffnen des Datasets das Displaylabel für die jeweilige Spalte aus dem DataDictionary abzurufen und diese im DBGrid als Titelzeile für die jeweilige Spalte zu setzen. Da man jedoch zum abrufen der Feldinformation aus dem Datadictionary die Tabelle in dem sich das Feld befindet benötigt, suche ich eine Möglichkeit die Tabelle zu ermitteln. Falls jemand eine andere Idee hat, wäre ist sehr dankbar. Danke für die Hilfe |
AW: Tablenames aus einem Dataset
Also "normalerweise" ist es ja so:
Man wählt die Feldnamen so wie man Variablennamen wählen würde (bevorzugt in englischer Sprache). Also z.B. TotalPrice, CustomerNo, ZipCode, NettoWeight,... Diese Feldnamen müssen irgendwie in sprechende Namen der Zielsprache umgesetzt werden (Gesamtpreis, Kundennr, PLZ, Netto-Gewicht,...) Wenn ein bestimmter Feldname in versch. Tabellen enthalten ist, dann sollte man eigentlich davon ausgehen, dass das DiplayLabel gleich bleibt. Zwischen Feldname und DisplayLabel besteht also eine 1:1 Beziehung. Nun gibt es aber auch noch berechnete Felder (calculated fields). Diese Felder tauchen in keiner Tabelle auf aber sie benötigen denoch ein eigenes DisplayLabel. Daher ist dein bisheriger Ansatz eh unvollständig. Ich würde eine eigene Liste/Tabelle für die Umsetzung vorsehen:
Code:
Falls du das mehrsprachig benötigst, müsste man noch den Language Code mit dazunehmen.
DsFieldName | DisplayLabel
============================ TotalPrice | Gesamtpreis CustomerNo | Kundennr AvgPrice | Durchschnittsspreis <= Beispiel für ein berechnetes Feld .... |
AW: Tablenames aus einem Dataset
ja ich glaube es gibt dann wohl keine andere Möglichkeit als das so zu machen.
Danke für die Hilfe. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 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