TDBGrid Anzeigen aus einer Anderen Tabelle
-
- Beiträge: 65
- Registriert: Mi 27. Feb 2013, 18:24
- OS, Lazarus, FPC: Linux (L 0.9.30.4-1.1 FPC 2.6.0)
- CPU-Target: 32Bit
TDBGrid Anzeigen aus einer Anderen Tabelle
Ich habe eine TDBGrid und möchte eine Spalte aus einer Anderen Tabelle anzeigen. Kann man eine Spalte im DBGrid erzeugen, die so etwas enthält wie:
select AField1 from ATable1, ATable2 where ATable1.AField1=AField2.AField2;
Versteht ihr was ich meine?
select AField1 from ATable1, ATable2 where ATable1.AField1=AField2.AField2;
Versteht ihr was ich meine?
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: TDBGrid Anzeigen aus einer Anderen Tabelle
Ja, geht. Lese mal in der SQL Syntax unter JOIN
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 65
- Registriert: Mi 27. Feb 2013, 18:24
- OS, Lazarus, FPC: Linux (L 0.9.30.4-1.1 FPC 2.6.0)
- CPU-Target: 32Bit
Re: TDBGrid Anzeigen aus einer Anderen Tabelle
danke für die Antwort MmVisual. Ich habe mich aber schlecht ausgedrückt. Nicht der SQL-Befehl ist mein Problem, sondern wie ich dem Grid klarmache, dass in einer speziellen Spalte nicht nur Felder einer speziellen Tabelle (die aus ZTable) sondern eben auch eine Spalte aus einer anderen Tabelle, die mit meiner verknüpft ist.MmVisual hat geschrieben:Ja, geht. Lese mal in der SQL Syntax unter JOIN
Vielleicht doch noch zur Erhelleung: Ich habe einen TZTable "Geworfen", darin eine Tabelle definiert und darauf ein Grid um diese Tabelle bearbeiten zu können. Anzeigen in dem Grid möchte ich aber ncht nur die Felder dieser Tabelle, sondern eben auch verknüpfte Felder. Wohl so ziemlich das Üblichste bei normierten Tabellen einer Datenbank. Bei einem TZQuery klappt das bei mir wunderbar,weil man dort von vornherein eine SQL-Abfrage definiert, aber bei Tables geht das so nicht.
Entschuldigt meine Unwissenheit. Vielleicht habe ich ja eine völlig doofe Startegie der Datenbehandlung gewählt?
Re: TDBGrid Anzeigen aus einer Anderen Tabelle
Moin,
es gibt ein OnDraw-Ereigniss. Dort zeichnest Du Dein Grid selbst und kannst auf beliebige Daten zugreifen.
Oder Du läßt Dir das Feld mit dem Befehl "AS" umbenennen. "SELECT feld1, feld2, joinfeld AS neuerfeldname FROM ..."
Gruß
Baba.
es gibt ein OnDraw-Ereigniss. Dort zeichnest Du Dein Grid selbst und kannst auf beliebige Daten zugreifen.
Oder Du läßt Dir das Feld mit dem Befehl "AS" umbenennen. "SELECT feld1, feld2, joinfeld AS neuerfeldname FROM ..."
Gruß
Baba.
-
- Beiträge: 65
- Registriert: Mi 27. Feb 2013, 18:24
- OS, Lazarus, FPC: Linux (L 0.9.30.4-1.1 FPC 2.6.0)
- CPU-Target: 32Bit
Re: TDBGrid Anzeigen aus einer Anderen Tabelle
Danke für die Antwort, lieber Freund aus dem Norden.
Aha. Hast du vielleicht ein Beispiel? Damit ich mir ncicht alles aus den Fingern saugen muss?baba hat geschrieben: es gibt ein OnDraw-Ereigniss. Dort zeichnest Du Dein Grid selbst und kannst auf beliebige Daten zugreifen.
Aber wo trage ich diesen SQL-Befehl im ZTable ein? Oder im Grid?baba hat geschrieben: Oder Du läßt Dir das Feld mit dem Befehl "AS" umbenennen. "SELECT feld1, feld2, joinfeld AS neuerfeldname FROM ..."
Re: TDBGrid Anzeigen aus einer Anderen Tabelle
ein Table kann man nicht so einfach selecten aber filtern.
aber warum nimmst du denn ZTable statt ZSQL?
und wenn du es halt kompliziert willst muss man etwas mehr programmieren, dann ist es mit "werfen" nicht getan.
hde
aber warum nimmst du denn ZTable statt ZSQL?
und wenn du es halt kompliziert willst muss man etwas mehr programmieren, dann ist es mit "werfen" nicht getan.

hde
-
- Beiträge: 65
- Registriert: Mi 27. Feb 2013, 18:24
- OS, Lazarus, FPC: Linux (L 0.9.30.4-1.1 FPC 2.6.0)
- CPU-Target: 32Bit
Re: TDBGrid Anzeigen aus einer Anderen Tabelle
Ja, das habe ich auch schon bemerkt.hde hat geschrieben:ein Table kann man nicht so einfach selecten aber filtern.
Weil ich in die Tabelle schreiben wollte. Der Benutzer wählt eine Zeile aus dem Grid, und diese Zeile will ich "updaten". Nur soll er in einer Spalte nicht den tatsächlichen Wert, sondern den einer Verknüpften Tabelle sehen. Dachte, das geht irgnwie in dem Editierteil, das erscheint, wenn man auf die table doppelklickt.hde hat geschrieben:aber warum nimmst du denn ZTable statt ZSQL?
Was ist denn daran kompliziert? Und ich habe schon ziemlich viel an dem Programm programmiert. Wenn das nicht geht, muss ich wohl eine Zsql "schmeißen" und mit dierektem SQL-Statement UPDATE ... arbeiten. Ja, ich taste mich halt so ran an die OOP.hde hat geschrieben:und wenn du es halt kompliziert willst muss man etwas mehr programmieren, dann ist es mit "werfen" nicht getan.![]()
Danke jedenfalls für die Hinweise (auch wenn sie nicht wirklich hilfrech waren

Re: TDBGrid Anzeigen aus einer Anderen Tabelle
ich arbeite halt grundsätzlich anders, beim Doppelcklick auf eine Gridzeile erscheint bei mir ein komplettes Editfenster.
wenn du es anders willst, versuch's mit lookup. aber es gibt für Lazarus diverse Zusatzpakete und da mag auch ein DBGrid bei sein dass mehr kann als das standard.
musst du dir halt die zeit nehmen und etwas experimentieren oder was selbst schreiben.
jde
wenn du es anders willst, versuch's mit lookup. aber es gibt für Lazarus diverse Zusatzpakete und da mag auch ein DBGrid bei sein dass mehr kann als das standard.
musst du dir halt die zeit nehmen und etwas experimentieren oder was selbst schreiben.
jde
-
- Beiträge: 65
- Registriert: Mi 27. Feb 2013, 18:24
- OS, Lazarus, FPC: Linux (L 0.9.30.4-1.1 FPC 2.6.0)
- CPU-Target: 32Bit
Re: TDBGrid Anzeigen aus einer Anderen Tabelle
Aber genauso habe ich das auch gemacht. Hmm.. und beruht dein Grid auf eine Table oder eine Query?hde hat geschrieben:ich arbeite halt grundsätzlich anders, beim Doppelcklick auf eine Gridzeile erscheint bei mir ein komplettes Editfenster.
Re: TDBGrid Anzeigen aus einer Anderen Tabelle
das kommt natürlich ganz darauf an was ich zeigen und zur Auswahl stellen will, in aller Regel zqueries, oft mit joins aus mehreren Tabellen. Grids bei mir nur zur Auswahl, nie zum direkten editieren oder erfassen.paulderfinne hat geschrieben:beruht dein Grid auf eine Table oder eine Query?
hde
-
- Beiträge: 725
- Registriert: Do 27. Sep 2012, 00:07
- OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
- CPU-Target: x86_64-win64
- Wohnort: Hamburg
Re: TDBGrid Anzeigen aus einer Anderen Tabelle
Was du beschreibst hört sich nach Lookup-Felder an. z.B. Du hast in einer Adressentabelle nur PLZ und in der 2. TAbelle zu der PLZ veknüpfte Ort. Du kannst dann in eine Tabelle (TZTable) mit Lookup-Feld Ort auch zeigen und bearbeiten lassen.
-
- Beiträge: 65
- Registriert: Mi 27. Feb 2013, 18:24
- OS, Lazarus, FPC: Linux (L 0.9.30.4-1.1 FPC 2.6.0)
- CPU-Target: 32Bit
Re: TDBGrid Anzeigen aus einer Anderen Tabelle
Ja, Soner, so dachte ich mir das. Danke für deine Antwort. Kannst du ein bisschen näher erklären, was lookup-Felder sind? Hat es was mit dem kleinen Editierfenster zu tun das aufpoppt wenn einen Doppelklick auf die Table macht? Da habe ich auch schon rumgefuhrwerkt. Allerdings kläglich erfolglos.
Re: TDBGrid Anzeigen aus einer Anderen Tabelle
das hat dir doch Soner schon gut erklärt und auf lookup hab ich dich auch schon mal hingewiesen.paulderfinne hat geschrieben:näher erklären, was lookup-Felder sind?
Wenn du Werte aus 2 Tabellen in einer Grid darstellen willst, dann hat das ja (hoffentlich) einen Grund?

Meist ist es der, wo Soner dir ein gutes Beispiel gegebe hat, du hast eine Kennzahl in der Haupttabelle z.B. die Postleitzahl, willst aber im Grid nicht die kennzahl anzeigen, sondern das was sich dahiner verbirgt, z B. den Namen des Ortes.
Sowas macht man Über Lookups
hde
-
- Beiträge: 725
- Registriert: Do 27. Sep 2012, 00:07
- OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
- CPU-Target: x86_64-win64
- Wohnort: Hamburg
Re: TDBGrid Anzeigen aus einer Anderen Tabelle
Weitere Erklärung findest du im Netz. Such nach "delphi lookup feld".paulderfinne hat geschrieben:..Kannst du ein bisschen näher erklären, was lookup-Felder sind? ...
Ja genau das. Ich habe immer mit der rechten Maustaste geklickt und aus der Menü "Felde bearbeiten" gewählt.paulderfinne hat geschrieben:... Hat es was mit dem kleinen Editierfenster zu tun das aufpoppt wenn einen Doppelklick auf die Table macht? Da habe ich auch schon rumgefuhrwerkt. Allerdings kläglich erfolglos.
1. Im neuen Fenster fügst du erst reale Felder was schon in der Tabelle vorhanden ist. (Button mit "+"-Bild)
2. Dann klicke auf "Neues Feld ... hinzufügen. (Buttom mit Helftblatt-Bild).
3. In neuen Dialogfenster klicke auf Lookup und "Lookupdefinition" schreibst du das:
Schlüsselfelder: Verknüpfungsfeld aus der Haupttabelle bei unserem Beispiel PLZ.
Dataset: Tabellenname von der Nebentabelle, hier Ortetabelle.
Lookupkeys: Mit der Haupttabelle Verknüpftesfeld in der Nebentabelle
Ergebnisfelder: Feld auswählen das angezeigt werden soll, z.b. ORtname. Du kannst auch mehrere Felder angeben die mit Semikola ";" getrennt sind.
Bei der Benutzung muss man beachten, dass nebentabellen zuerst geöffnet werden. D.h. Nach dem Formulardesign beide Tabellen schließen (Eigenschaft--> Active:=false) und beim Starten des Programms erst Nebentabelle dann Haupttabelle aktivsetzen. Sonst gibt"s Exception wegen nicht gefundenes Feld.
Wenn du TZTable bei der Firebird-DB benutzt, dann muss man für "Autoinc"-Felder immer TZSequence-Komponente verwenden. Du kannst mit Zeos-Komponenten und Lazarus-Datacontrols genauso wie mit Delphis BDE arbeiten, mann vermißt nichts. Mann muß nur einige Kleinigkeiten wie TZSequence beachten.
Viel Glück.