| Autor |
Beitrag |
Freiberger
      
Beiträge: 130
WIN XP
Delphi 7
|
Verfasst: Do 21.02.08 20:36
Hallo,
ich habe eine beliebige SQL-Abfrage...( die von verschieden User kommen kann )
zB. SELECT A.name,B.*,C.name,A.ort,C.name
FROM Kunde A
LEFT JOIN Table2 B WHERE B.pos=A.pos
LEFT JOIN Mitarbeiter C WHERE C.nr =B.nr
Die daraus entsehend Tabelle hat das Problem, dass die Feldnamen sehr "Benutzerunfreundlich" sind.
In einer anderen Tabelle habe ich eine Übersetzung in einen verständlichen Text.
Ich kann also alle Feldnamen durchlaufen, TABLE & FIELDNAME filtern und erhalte daraus einen Text, den ich dirkt nach der Abfrage in Query.Fields[x].DisplayLabel schreibe.
Das Problem ist nur, dass es zB bei Table A & C den Feldnamen "Name" gibt.
Wie kann ich jetzt rausbekommen, welcher FELDNAME zu welchem TABLE zuordenbar ist ?
Mit Query.Fields[x].origin geht es nur bei bestimmten Abfragen...
Bitte um Hilfe...
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Do 21.02.08 20:41
SQL-Anweisung 1: 2: 3: 4: 5: 6:
| SELECT A.name as aname,B.*,C.name as c.name,A.ort FROM Kunde A LEFT JOIN Table2 B WHERE B.pos=A.pos LEFT JOIN Mitarbeiter C WHERE C.nr =B.nr; |
_________________ Markus Kinzler.
|
|
Freiberger 
      
Beiträge: 130
WIN XP
Delphi 7
|
Verfasst: Do 21.02.08 20:49
Hy, so etwas hatte ich auch schon versucht,
dann bekomme ich für A.name & C.name den Wert in origin angezeigt.
Die Abfragen kommen aber nicht von mir, ich will sie nur "übersetzen"
Ich könnte den SQL-Text durchlaufen und überal AS anhängen.
Aber bei B.* AS B.* bekomme ich keine Werte in Fields[x].origin
Gibt es keinen Bezug ? Fields[x].Table gibt es leider nicht...
|
|
Freiberger 
      
Beiträge: 130
WIN XP
Delphi 7
|
Verfasst: Do 21.02.08 20:50
Hy, so etwas hatte ich auch schon versucht,
dann bekomme ich für A.name & C.name den Wert in origin angezeigt.
Die Abfragen kommen aber nicht von mir, ich will sie nur "übersetzen"
Ich könnte den SQL-Text durchlaufen und überal AS anhängen.
Aber bei B.* AS B.* bekomme ich keine Werte in Fields[x].origin
Gibt es keinen Bezug ? Fields[x].Table gibt es leider nicht...
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Do 21.02.08 20:57
Eine andere Möglichkeit gibt es aber nicht, da in der Ergebnismenge keine Bezüge auf die Herkunft enthalten sind.
BTW. * Abfragen sollte man sowieso vermeiden und Abfargen mit mehrmaligen Feldname auch.
_________________ Markus Kinzler.
|
|
Freiberger 
      
Beiträge: 130
WIN XP
Delphi 7
|
Verfasst: Do 21.02.08 21:09
Ja, das stimmt. Macht aber nicht jeder.
Und wenn ich in verschieden Tabellen den selben Feldnamen habe (zB als Index), dann habe ich ein rießen Problem.
Schade, es muß doch irgend wo einen Bezug geben...
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Do 21.02.08 21:16
Nur anhand der Position in der Ergebnismenge
_________________ Markus Kinzler.
|
|
Freiberger 
      
Beiträge: 130
WIN XP
Delphi 7
|
Verfasst: Do 21.02.08 21:19
wie weinst du das ?
Bei B.* weiß ich doch nicht, wieviele Felder es gibt ?
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Do 21.02.08 21:21
1. Feld mit dem Namen von Tabelle a, 2. von Tabelle c, ...
_________________ Markus Kinzler.
|
|
Freiberger 
      
Beiträge: 130
WIN XP
Delphi 7
|
Verfasst: Do 21.02.08 21:25
und wenn ich A.*,B.*,C.* habe ?
dann müßte ich rausbekommen, wieviele Felder A,B & C hat...
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Do 21.02.08 21:29
Das 1. Feld mit dem Namen 'Name' gehört dann trotzdem zu Tabelle a, das 2. zu B ...
_________________ Markus Kinzler.
|
|
Freiberger 
      
Beiträge: 130
WIN XP
Delphi 7
|
Verfasst: Do 21.02.08 21:38
das stimmt allerdings... sehr gute Idee
Aber ich muß an irgenwas erkennen können, wenn die nächste Tabelle anfängt. A.*,B.*,C.*
Das Feld "Name" kann ja an verschiedenen Positionen sein.
|
|