AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Welche Tabelle gehört zum TField ????
Thema durchsuchen
Ansicht
Themen-Optionen

Welche Tabelle gehört zum TField ????

Offene Frage von "samson"
Ein Thema von samson · begonnen am 26. Feb 2004 · letzter Beitrag vom 27. Feb 2004
Antwort Antwort
Benutzerbild von samson
samson

Registriert seit: 26. Aug 2003
Ort: Hövelhof Riege
105 Beiträge
 
Delphi 2007 Professional
 
#1

Welche Tabelle gehört zum TField ????

  Alt 26. Feb 2004, 14:05
Hallo Leute,

ich hoffe das mir ein spezies von Euch helfen können.

Also...

Ich habe auf einem Formular ein OracleDataSet verbunden mit einem DataSource. Soweit noch nicht schlimmes.

Jetzt habe ich in dem OracleDataSet folgende SQL-Anweisung stehen:

select k.*, po.* from kunden k, plzort po Ich habe jetzt versucht eine allgemeine Suche Suche zu programmieren und habe das Problem, das ich zu den Feldnamen nicht die zugehörige Tabelle herausfinden kann.

Die Felddefinitionen sind in einem Grid-Versammelt.

Wenn mein Grid z. B. so aussieht: Vorname, Name, PLZ, Ort

Dann sind die Attribute Vorname und Name aus der Tabelle: Kunden und die Attribute PLZ und Ort aus der Tabelle: PLZORT

Wenn ich jetzt die Felddefinitionen in einer Schleife durchlaufe, dann komme ich schon zu den Feldnamen aber nicht zu den Namen der Tabelle des FELDES.

Kennt jemand die Lösung??? Bitte um Hilfe.


Gruss


Samson
Frank Gellermann
Wer Informationen hat, hat Macht. Wer Macht hat, hat Informationen!!!
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#2

Re: Welche Tabelle gehört zum TField ????

  Alt 26. Feb 2004, 16:15
Magst du QueryByExample nicht?
Das ist doch der einzige Grund TOracleDataSet anstatt TOracleQuery zu nutzen. (Außer man mutet dem User dieses DBGrid zu )
Du kannst dort bestimmen ob Operatoren & Autovervollständigung benutzt werden...

als Beispiel habe ich einfach so ein Grid-Ding, eine DataSource, ein OracleDataSet & einen OracleDBNavaigator auf's Formaular gezogen. (QBE funktioniert mit allen DB-Komponeten)
Die Daten kommen von den Standard-tabellen scott.emp & scott.dept.
SQL-Code:
SELECT e.*,d.loc
FROM scott.emp e,
       scott.dept d
WHERE e.deptno = d.deptno
Miniaturansicht angehängter Grafiken
samson_qbe_003.jpg   samson_qbe_002.jpg   samson_qbe_001.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von samson
samson

Registriert seit: 26. Aug 2003
Ort: Hövelhof Riege
105 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Welche Tabelle gehört zum TField ????

  Alt 26. Feb 2004, 17:10
Hallo Robert_G,

erstmal vielen Danke für Deine Antwort. Leider ist das nicht ganz die Antwort die ich Suche. Vielleicht habe ich mich auch ein bisschen Missverständlich ausgedrückt.

So jetzt stell dir mal vor, du hast über dem Grid noch ein Edit. In dem Edit kannst Du einen Suchbegriff angeben. Nach Betätigung mit RETURN, werden alle Gefundenen Datensätze aus dem Grid angezeigt.

Die Suche selber funktioniert über die Feldattribute, welche im Grid sind. Ich Fische mir die Feldattribute aus dem DBGrid und baue mir meine eigene Where-Clausel.

Die Feldnamen selber habe ich in der Hand. Aber mir Felht der Tabellenname, damit ich die WHERE-CLAUSEL auch richtig aufbauen kann.

Zur Zeit sähe das SQL-STATEMENT beim SCOTT Beispiel so aus:

SQL-Code:
SELECT e.*,d.loc
FROM scott.emp e,
       scott.dept d
WHERE e.deptno = d.deptno
AND EMPNO LIKE '%CHI%'
AND ENAME LIKE '%CHI%'
AND MGR LIKE '%CHI%'
.
.
.
Ich möchte aber folgende WHERE-CLAUSEL haben:

SQL-Code:
SELECT e.*,d.loc
FROM scott.emp e,
       scott.dept d
WHERE e.deptno = d.deptno
AND e.EMPNO LIKE '%CHI%'
AND e.ENAME LIKE '%CHI%'
AND e.MGR LIKE '%CHI%'
.
.
.
AND d.LOC LIKE '%CHI%'
Wie Du siehst komme ich selbst an die Feldnamen. Mir Fehlt jedoch der Tabellenname.

Ich hoffe DU kannst mir weiter helfen.

Danke


Gruss

Samson
Frank Gellermann
Wer Informationen hat, hat Macht. Wer Macht hat, hat Informationen!!!
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: Welche Tabelle gehört zum TField ????

  Alt 26. Feb 2004, 17:42
Ich habe bin in etwa 1h zu hause, dann habe ich Zeit dafür. Ich habe da schon eine Lösung im Hinterkopf.
Bis nachher...
  Mit Zitat antworten Zitat
Benutzerbild von samson
samson

Registriert seit: 26. Aug 2003
Ort: Hövelhof Riege
105 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Welche Tabelle gehört zum TField ????

  Alt 26. Feb 2004, 19:04
Hallo Robert_G,

das würde mich freuen. Ich bin nun schon nen ganzen Tag dabei und bekomme es nicht heraus.

Irgendwie muss das doch über TField herauszubekommen sein.

Aber ich finde nicht den geeigneten Ansatz.

Ich danke schon jetzt für Deine Hilfe.

Gruss



Samson
Frank Gellermann
Wer Informationen hat, hat Macht. Wer Macht hat, hat Informationen!!!
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: Welche Tabelle gehört zum TField ????

  Alt 26. Feb 2004, 22:07
Sorry, dass es so spät wurde, es kam noch was dazwischen.

Zur Problematik...
Du wirst IMHO keine Möglichkeit haben über ein TField seine Herkunftstabelle rauszufinden.

Für einen Vorschlag müsste ich wissen, wie du vorgehst:
  • Du hast fixe Statements und weißt daher welche Tabelle welches Alias hat
  • Dein Programm baut die Statements auf.
    Ohne ein vernünftiges Data Dictionary, dass die Struktur deiner DB wiederspiegelt, kann das haarig werden.
  Mit Zitat antworten Zitat
Benutzerbild von samson
samson

Registriert seit: 26. Aug 2003
Ort: Hövelhof Riege
105 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Welche Tabelle gehört zum TField ????

  Alt 27. Feb 2004, 08:41
Hallo Robert_G,

also zur genauen Problematik.

Ich schreibe zur Zeit in meiner Firma, eine grosse Warenwirtschaftssoftware auf MDI-Basis. In einer Warenwirtschaftssoftware habe ich logischerweisse ziehmlich viele Formulare. Die Formulare sind standardmässig so aufgebaut, das ich oben ein Edit-Feld habe und daneben eine ComboBox. Unter den zwei Controls habe ich ein Grid mit dem zugrundeliegenden Daten.

Die Felder des Grids, werden zur Laufzeit automatisch in die ComboBox gefüllt. Somit hat der Benutzer die Möglichkeit über alle Felder bzw. über ein bestimmtes Feld eine Suche zu starten. In dem Edit-Feld kann nun ein Suchbegriff eingegeben werden und mit RETURN abgeschickt werden.

Da ich keine Lust habe für 50 und mehr Formulare diese Standardmässige Suche auszuprogrammieren, Bin ich angefangen eine globale Suche zu programmieren.

Das geht so lange gut, solange sich das Select-Statement über eine Tabelle erstreckt. Habe ich ein Grid, welches andere Tabellen referenziert, so kann die TOracleDataSet Komponente nicht mehr genau zuordnen, welches Attribut verknüpft werden soll. Nehmen wir an, wir haben eine Tabelle: Kunden, Faktura und Faktura_Typ. Alle Relationen verfügen über das Attribut: KBez (varchar2(50). Im zugrundeliegendem DataSet habe ich folgendes Statement:

SQL-Code:
select f.*, k.*, ft.* from faktura f, kunden k, faktura_typ ft
where f.NRFAKTURA_TYP = ft.id
and f.NRKUNDE = f.id
Wenn der Benutzer nun über alle Attribute mit folgendem Begriff sucht: 'trecker'

Entsteht folgendes SQL-Statement:
SQL-Code:
select f.*, k.*, ft.* from faktura f, kunden k, faktura_typ ft
where f.NRFAKTURA_TYP = ft.id
and f.NRKUNDE = f.id
and (upper(kbez) like '%TRECKER%'
or upper(projekt) like '%TRECKER%')
..
..
..
und und und.

So. Jetzt hat das Dataset die Schwierigkeit, das es dem Attribut: 'KBEZ' nicht genau zuordnen kann. Folglich müsste ich also haben: KUNDEN.KBEZ oder FAKTURA.KBEZ oder FAKTURA_TYP.KBEZ.

Dazu fehlt mir der Tabellenname aus dem Grid. Wenn ich weiss, aus welcher Tabelle die Daten aus dem Grid kommen, hätte ich gewonnen. Dann nehmlich könnte ich das SQL-STATEMENT aufbauen, welches ich brauch.

Weisst Du ne Möglichkeit?

Ich kann auch noch das Grid in die allgemeine Suche übergeben. Das wäre für mich keine Grosse Änderung da ich mit einem Basisformular arbeite, welches mir grosse Arbeiten ersparen kann.

Ich danke für weiter Hilfe.

Gruss


Samson
Frank Gellermann
Wer Informationen hat, hat Macht. Wer Macht hat, hat Informationen!!!
  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 21:33 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