![]() |
Welche Tabelle gehört zum TField ????
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:
SQL-Code:
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.
select k.*, po.* from kunden k, plzort po
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 :freak: |
Re: Welche Tabelle gehört zum TField ????
Liste der Anhänge anzeigen (Anzahl: 3)
Magst du QueryByExample nicht?
Das ist doch der einzige Grund TOracleDataSet anstatt TOracleQuery zu nutzen. (Außer man mutet dem User dieses DBGrid zu :gruebel: ) 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 |
Re: Welche Tabelle gehört zum TField ????
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:
Ich möchte aber folgende WHERE-CLAUSEL haben:
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%' . . .
SQL-Code:
Wie Du siehst komme ich selbst an die Feldnamen. Mir Fehlt jedoch der Tabellenname.
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%' Ich hoffe DU kannst mir weiter helfen. Danke Gruss Samson |
Re: Welche Tabelle gehört zum TField ????
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... |
Re: Welche Tabelle gehört zum TField ????
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 |
Re: Welche Tabelle gehört zum TField ????
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:
|
Re: Welche Tabelle gehört zum TField ????
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:
Wenn der Benutzer nun über alle Attribute mit folgendem Begriff sucht: 'trecker'
select f.*, k.*, ft.* from faktura f, kunden k, faktura_typ ft
where f.NRFAKTURA_TYP = ft.id and f.NRKUNDE = f.id Entsteht folgendes SQL-Statement:
SQL-Code:
und und und.
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%') .. .. .. 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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:26 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 by Thomas Breitkreuz