AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Tablenames aus einem Dataset

Tablenames aus einem Dataset

Offene Frage von "Nico93"
Ein Thema von Nico93 · begonnen am 5. Jan 2013 · letzter Beitrag vom 9. Jan 2013
Antwort Antwort
Benutzerbild von Nico93
Nico93

Registriert seit: 6. Sep 2011
Ort: Grafschaft
48 Beiträge
 
Delphi 2007 Architect
 
#1

Tablenames aus einem Dataset

  Alt 5. Jan 2013, 23:37
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBConnection
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
Nico
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Tablenames aus einem Dataset

  Alt 6. Jan 2013, 08:25
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Nico93
Nico93

Registriert seit: 6. Sep 2011
Ort: Grafschaft
48 Beiträge
 
Delphi 2007 Architect
 
#3

AW: Tablenames aus einem Dataset

  Alt 6. Jan 2013, 11:08
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
Nico
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Tablenames aus einem Dataset

  Alt 6. Jan 2013, 11:28
Ich meinte Delphi-Referenz durchsuchenTField.Origin
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Nico93
Nico93

Registriert seit: 6. Sep 2011
Ort: Grafschaft
48 Beiträge
 
Delphi 2007 Architect
 
#5

AW: Tablenames aus einem Dataset

  Alt 6. Jan 2013, 12:07
leider ist die Eigenschaft "origin" bei mir immer leer
Nico
  Mit Zitat antworten Zitat
TBx
(Moderator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.803 Beiträge
 
Delphi 2007 Enterprise
 
#6

AW: Tablenames aus einem Dataset

  Alt 6. Jan 2013, 13:32
Hmm, magst Du mal erkläutern, wozu Du diese Tablenames brauchst? Vielleicht kann man Dein Problem ja auf einem anderen Weg lösen.
  Mit Zitat antworten Zitat
Benutzerbild von Nico93
Nico93

Registriert seit: 6. Sep 2011
Ort: Grafschaft
48 Beiträge
 
Delphi 2007 Architect
 
#7

AW: Tablenames aus einem Dataset

  Alt 6. Jan 2013, 14:17
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
Nico
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#8

AW: Tablenames aus einem Dataset

  Alt 7. Jan 2013, 02:17
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:
DsFieldName  | DisplayLabel
============================
TotalPrice   | Gesamtpreis
CustomerNo   | Kundennr
AvgPrice     | Durchschnittsspreis     <= Beispiel für ein berechnetes Feld
....
Falls du das mehrsprachig benötigst, müsste man noch den Language Code mit dazunehmen.
  Mit Zitat antworten Zitat
Benutzerbild von Nico93
Nico93

Registriert seit: 6. Sep 2011
Ort: Grafschaft
48 Beiträge
 
Delphi 2007 Architect
 
#9

AW: Tablenames aus einem Dataset

  Alt 9. Jan 2013, 19:57
ja ich glaube es gibt dann wohl keine andere Möglichkeit als das so zu machen.

Danke für die Hilfe.
Nico
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 14:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf