Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Grid mit gruppierter Darstellung (https://www.delphipraxis.net/143937-grid-mit-gruppierter-darstellung.html)

NetSonic 26. Nov 2009 15:27

Re: Grid mit gruppierter Darstellung
 
Jetzt habe ich da mehr ein SQL-technisches Problem...
Ich frage meine beiden Tabellen (Bestellverwaltung) bisher wie folgt ab:

SQL-Code:
SELECT
  tblorder."ID",
  tblorder."BestDatum",
  tblorder."Lieferant",
  tblpos."ArtikelNummer",
  tblpos."ArtikelName",
  tblpos."EK",
  tblpos."VK",
  tblpos."Anzahl"
FROM
  public.tblorder,
  public.tblpos
WHERE
  tblorder."ID" = tblpos."ID"
In "tblorder" steht der Bestellvorgang, in "tblpos" die entsprechenden Positionen...
Wie muss ich diese Abfrage jetzt umstellen, damit ich das mit den "flags" hinbekomme?
Irgendwie hats da bei mir noch nicht "klick" gemacht!

Mike_on_Tour 26. Nov 2009 15:34

Re: Grid mit gruppierter Darstellung
 
Versuch mal folgendes (für eine Gruppierung nach "Lieferant"):
SQL-Code:
SELECT
  tblorder."ID",
  tblorder."BestDatum",
  tblorder."Lieferant",
  tblpos."ArtikelNummer",
  tblpos."ArtikelName",
  tblpos."EK",
  tblpos."VK",
  tblpos."Anzahl",

  2 as flag

FROM
  public.tblorder,
  public.tblpos
WHERE
  tblorder."ID" = tblpos."ID"

UNION ALL

SELECT DISTINCT
  tblorder."ID",
  tblorder."BestDatum",
  tblorder."Lieferant",
  tblpos."ArtikelNummer",
  tblpos."ArtikelName",
  tblpos."EK",
  tblpos."VK",
  tblpos."Anzahl",

  1 as flag

FROM
  public.tblorder,
  public.tblpos
WHERE
  tblorder."ID" = tblpos."ID"

ORDER BY tblorder."Lieferant", flag

NetSonic 26. Nov 2009 15:55

Re: Grid mit gruppierter Darstellung
 
Das sieht ganz gut aus, allerdings schmeißt mir PostgreSQL immer als Fehler "fehlender Eintrag in FROM-Klausel für Tabelle tblorder"!
Es gibt für diesen Fehler zwar ein "Workaround", weil man ihn in der Konfiguration unterdrücken kann, aber das kann es ja wohl auch nicht sein. Es muss ja einen Grund dafür geben... :gruebel:

Mike_on_Tour 26. Nov 2009 16:03

Re: Grid mit gruppierter Darstellung
 
Zitat:

Zitat von NetSonic
Das sieht ganz gut aus, allerdings schmeißt mir PostgreSQL immer als Fehler "fehlender Eintrag in FROM-Klausel für Tabelle tblorder"!
Es gibt für diesen Fehler zwar ein "Workaround", weil man ihn in der Konfiguration unterdrücken kann, aber das kann es ja wohl auch nicht sein. Es muss ja einen Grund dafür geben... :gruebel:

D.h., das Grid funktioniert. Gut gemacht. ;-)

Mit PostgreSQL kenne ich mich nicht aus. Das SQL sieht für mich aber erst mal gut aus. Kommt der Fehler denn erst seit der Änderung ?

NetSonic 26. Nov 2009 16:10

Re: Grid mit gruppierter Darstellung
 
Ja das Grid funktioniert! :thumb:

Allerdings nur mit der alten Abfrage. Er zeichnet mir aber die Gruppierung usw. Das ist alles "schön". Nur diese Sache mit dem aktuellen SQL-Statement raubt mir gerade den Nerv... Ich komme aber ja auch nicht um "UNION" herum, oder? Alles mit einem "SELECT" über beide Tabellen wäre toll, nur dann nützen mir die "flags" wiederum nichts. :wall:

EDIT: Ohne "UNION" und beim select von nur einer Tabelle, kommt dieser Fehler nicht.

Mike_on_Tour 26. Nov 2009 16:38

Re: Grid mit gruppierter Darstellung
 
Zitat:

Zitat von NetSonic
Ich komme aber ja auch nicht um "UNION" herum, oder? Alles mit einem "SELECT" über beide Tabellen wäre toll, nur dann nützen mir die "flags" wiederum nichts.

Also mit PostgreSQL kenne ich mich nicht aus. Da gibt es aber im Forum sicher auch Experten. Eventuell mal einen neuen Thread starten.

Wenn ich die Funktionsweise des Grids richtig deute, braucht das Grid für die Darstellung der Gruppenzeile einen Datensatz extra. Dieser Datensatz wird mit der UNION möglich gemacht. Zur Unterscheidung wird dann das 'flag' verwendet. Wenn Du also einen zusätzlichen (Gruppen-)Datensatz ohne UNION erzeugen kannst, müßte es auch ohne UNION gehen.

Möglicherweise kommt PostgreSQL nicht mit dem UNION ALL klar. Vielleicht gibt es hier andere Möglichkeiten.
Nachtrag: Evtl. kann das auch am SELECT DISTINCT liegen.

chaosben 27. Nov 2009 05:39

Re: Grid mit gruppierter Darstellung
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Zitat von hoika
Beweise, Screenshots ...
Und bitte nicht auf die Galerie verweisen.

Du willst mich veralbern, oder?
Aber gut ich bin mal nicht so ... siehe Anhang. Das ist ein VirtualStringTree.

NetSonic 27. Nov 2009 12:03

Re: Grid mit gruppierter Darstellung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Es funktioniert jetzt mit dieser Abfrage:

SQL-Code:
SELECT DISTINCT
tblorder."ID",
tblorder."OrderDate",
tblorder."Lieferant",
'a' AS "ArtikelNummer",
'a' AS "ArtikelName",
'a' AS "EK",
'a' AS "VK",
1 as "flag"

FROM tblorder, tblpos

WHERE tblpos."OrderID" = tblorder."OrderID"

UNION ALL

SELECT DISTINCT
tblorder."OrderID",
tblorder_pos."OrderDate",
'a' AS "Lieferant",
tblorder_pos."ArtikelNummer",
tblorder_pos."ArtikelName",
tblorder_pos."EK",
tblorder_pos."VK",
2 as "flag"

FROM tblorder, tblpos

WHERE tblpos."OrderID" = tblorder."OrderID"

ORDER BY "OrderID", "flag"
Allerdings zeigt mir die SMDBGrid die Felder "ArtikelNummer", "ArtikelName", "EK" und "VK" jetzt als (MEMO) an?!?!
Es handelt sich aber um "varchar" Felder in der Datenbank. Kann man da etwas einstellen bzw. verändern?
Wobei dieses Problem erst aufgetreten ist, nachdem die SQL-Anweisung entsprechend verändert wurde...

Habe mal einen Screenshot angehangen:

Mike_on_Tour 27. Nov 2009 12:38

Re: Grid mit gruppierter Darstellung
 
Zitat:

Zitat von NetSonic
... Allerdings zeigt mir die SMDBGrid die Felder "ArtikelNummer", "ArtikelName", "EK" und "VK" jetzt als (MEMO) an?!?!
Es handelt sich aber um "varchar" Felder in der Datenbank. Kann man da etwas einstellen bzw. verändern?
Wobei dieses Problem erst aufgetreten ist, nachdem die SQL-Anweisung entsprechend verändert wurde ...

Ich glaube nicht, daß Du im Grid etwas einstellen mußt. Ich stelle meine Datentypen, wenn überhaupt, in der Query-Komponente ein.

Da Du die Reihenfolge der SELECTS getauscht hast, werden wahrscheinlich die Datentypen des ersten SELECTs für die Gridspalten verwendet. Eventuell mußt Du die Datentypen mit CAST in einen Datentyp zwingen.

In meinem Testprogramm liefert mir das Query 538 Datensätze (inkl. der Gruppensätze). Das Scrollen geht in normaler Geschwindigkeit.

Mike

NetSonic 27. Nov 2009 12:50

Re: Grid mit gruppierter Darstellung
 
Zitat:

Da Du die Reihenfolge der SELECTS getauscht hast, werden wahrscheinlich die Datentypen des ersten SELECTs für die Gridspalten verwendet. Eventuell mußt Du die Datentypen mit CAST in einen Datentyp zwingen.
:wall:
Ich hab "mal eben" die Reihenfolge geändert und... "tadaaaa" - jetzt zeigt er mir wieder alle Informationen korrekt an. Du hast mit Deinem Tipp also mal wieder den Nagel auf den Kopf getroffen. :thumb:

Danke dafür!

:dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:17 Uhr.
Seite 2 von 3     12 3      

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