Fehlende TDBLookupGrid Komponente

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Lorca
Beiträge: 196
Registriert: Di 3. Nov 2020, 12:25

Fehlende TDBLookupGrid Komponente

Beitrag von Lorca »

Hallo zusammen,

kennt jemand ein Package oder eine einzelne TDBLookUpGrid Komponente die man im Lazarus installieren kann?
Ich weis zwar das man über die TZQUERY (SQLite-3 mittels ZEOS) eine Verbindung zu einer MasterTable herstellen kann. Diese Funktionalität ist jedoch aus meiner Sicht fehlerhaft. Wenn man diese Verbindung löst, bekommt man sowohl im design Modus als auch während der Laufzeit eine EXCEPTION.
Außerdem benötige ich eine Datenübereinstimmung aus drei Tabellen. Ein Select Join ist ebenfalls mit sehr viel Aufwand verbunden, da in einem Dataset der durch einen Select Join entstanden ist, keine neuen Daten einfügen kann.
Die Komponente TDBLookUpListBox ist keine Alternative, da ich keine Möglichkeit sehe, einzelne Spalten anzufügen.

Vllt. bin ich auch nur zu Kurzsichtig und übersehe da eine Möglichkeit.
Wenn jemand helfen kann wäre ich dankbar.


Viele Grüße

Lorca

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: Fehlende TDBLookupGrid Komponente

Beitrag von charlytango »

ist da nicht in den RX-Controls etwas passendes drin?

TRxDBLookupCombo oder
TRxLookupEdit oder
TRxDBComboBox

die haben da einige fancy Controls drin

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Fehlende TDBLookupGrid Komponente

Beitrag von wp_xyz »

Ein DBLookupGrid habe ich noch nirgendwo gesehen. Was soll das tun? Die Detail-Datensätze anzeigen, die aus einer anderen Tabelle stammen und mit der Master-Tabelle in einem Schlüsselwert übereinstimmen? Aber ist das nicht ein Master-Detail-Problem, das über die DataSource-Eigenschaft jedes DataSet gelöst werden kann? Du schreibst das wäre fehlerhaft, aber das verstehe ich nicht. Poste ein Beispiel, an dem man sieht, dass da etwas nicht stimmt.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Fehlende TDBLookupGrid Komponente

Beitrag von af0815 »

doppelpost
Zuletzt geändert von af0815 am Mo 21. Jun 2021, 07:41, insgesamt 1-mal geändert.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Fehlende TDBLookupGrid Komponente

Beitrag von af0815 »

af0815 hat geschrieben:
Mo 21. Jun 2021, 07:40
Lorca hat geschrieben:
So 20. Jun 2021, 11:21
Außerdem benötige ich eine Datenübereinstimmung aus drei Tabellen. Ein Select Join ist ebenfalls mit sehr viel Aufwand verbunden, da in einem Dataset der durch einen Select Join entstanden ist, keine neuen Daten einfügen kann.
Das ist grundlegend richtig, das Joins (meist) RO sind. Woher soll der SQL-Parser auch erraten welche Tabellen mit welchen Daten befüllt/geändert/gelöscht werden sollen.

Die Änderungen sollten ja immer nur eine Tabelle aus dem Join betreffen, den Buchungsdaten, der Rest sollten ja Stammdaten sein. Damit kann man bei den Queries die entsprechenden Update, Delete und Insert Statements selbst ausfüllen. Damit erhält man einen 'updatebaren' Join. Wenn du allerdings Änderungen über mehreren Tabellen machst (eine Ausnahme ist das kaskadierte Löschen - ist aber nicht zu empfehlen), dann wirst du über eine programmierte Logik nicht hinwegkommen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Lorca
Beiträge: 196
Registriert: Di 3. Nov 2020, 12:25

Re: Fehlende TDBLookupGrid Komponente

Beitrag von Lorca »

Hallo zusammen,

erst einmal ganz herzlichen Dank an euch alle, für eure freundlichen Antworten. :)
@charlytango: Nein auch in den RX-Controls ist nichts passendes drin. Ich benötige eine GRID. Mit einer COMBO kann ich für diese Sache nichts anfangen

@wp_xyz: Ja natürlich. Es sollen M/D Daten angezeigt werden. Und um die ganze Sache noch ein wenig komplizierter zu machen ( ist nicht auf meinem Mist gewachsen), stehen dann die Texte in einer dritten, sprach abhängigen Tabelle. Solche Konstrukte sind im Business leben eines Entwicklers völlig normal. Nur in jeder Programmiersprache ist ist es unterschiedlich kompliziert solche Herausforderungen zu lösen. :?

@af0815: Leider habe ich den Satz nicht ganz verstanden: "Die Änderungen sollten ja immer nur eine Tabelle aus dem Join betreffen, den Buchungsdaten, der Rest sollten ja Stammdaten sein. Damit kann man bei den Queries die entsprechenden Update, Delete und Insert Statements selbst ausfüllen. Damit erhält man einen 'updatebaren' "

Sobald sich der Join auf 2 Tabellen bezieht, ist mir ein Insert in der Mastertabelle nicht mehr möglich.
Einen, wie von Dir beschriebenen 'updatebaren' Join, habe ich mit Lazarus und ZEOS (SQLITE3) noch nicht erlebt bzw. gesehen oder erkennen können.
Ich möchte eigentlich nur in EINER Tabelle Daten einfügen. Eine Löschfunktion ist derzeit noch nicht angedacht bzw. geplant.
Wie auch, wenn nicht einmal das Einfügen klappt.


@All
Vllt. mache ich auch etwas anderes falsch. Vllt. benötige ich ein TZUPDATE SQL oder eine TZTable Komponente. Ich bin am Testen.


Dennoch herzlichen Dank für eure Antworten.

Viele Grüße
Lorca

Antworten