AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Grid mit gruppierter Darstellung
Thema durchsuchen
Ansicht
Themen-Optionen

Grid mit gruppierter Darstellung

Ein Thema von NetSonic · begonnen am 26. Nov 2009 · letzter Beitrag vom 30. Nov 2009
Antwort Antwort
Seite 2 von 3     12 3      
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#11

Re: Grid mit gruppierter Darstellung

  Alt 26. Nov 2009, 15:27
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!
  Mit Zitat antworten Zitat
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#12

Re: Grid mit gruppierter Darstellung

  Alt 26. Nov 2009, 15:34
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
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#13

Re: Grid mit gruppierter Darstellung

  Alt 26. Nov 2009, 15:55
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...
  Mit Zitat antworten Zitat
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#14

Re: Grid mit gruppierter Darstellung

  Alt 26. Nov 2009, 16:03
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...
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 ?
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#15

Re: Grid mit gruppierter Darstellung

  Alt 26. Nov 2009, 16:10
Ja das Grid funktioniert!

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.

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

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#16

Re: Grid mit gruppierter Darstellung

  Alt 26. Nov 2009, 16:38
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.
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#17

Re: Grid mit gruppierter Darstellung

  Alt 27. Nov 2009, 05:39
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.
Angehängte Grafiken
Dateityp: png liste_gruppiert_877.png (67,6 KB, 51x aufgerufen)
Dateityp: png liste_127.png (100,3 KB, 41x aufgerufen)
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#18

Re: Grid mit gruppierter Darstellung

  Alt 27. Nov 2009, 12:03
Es funktioniert jetzt mit dieser Abfrage:

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

FROM tblorder, tblpos

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

UNION ALL

SELECT DISTINCT
tblorder."OrderID",
tblorder_pos."OrderDate",
'aAS "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:
Miniaturansicht angehängter Grafiken
smdbgrid_grouping_232.jpg  
  Mit Zitat antworten Zitat
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#19

Re: Grid mit gruppierter Darstellung

  Alt 27. Nov 2009, 12:38
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
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#20

Re: Grid mit gruppierter Darstellung

  Alt 27. Nov 2009, 12:50
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.

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.

Danke dafür!

  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 11:51 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