AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Ein Query auf drei Grids verteilen
Thema durchsuchen
Ansicht
Themen-Optionen

Ein Query auf drei Grids verteilen

Ein Thema von Mike_on_Tour · begonnen am 5. Jun 2008 · letzter Beitrag vom 6. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
Mike_on_Tour

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

Ein Query auf drei Grids verteilen

  Alt 5. Jun 2008, 17:30
Datenbank: ADS • Version: 8 • Zugriff über: ADS-Komponenten
Hallo zusammen,

ich habe ein Query und möchte die Datenmenge auf drei DBGrids aufteilen. Als Kennzeichen für die Aufteilung soll ein Feld in der Datenmenge dienen. Da ich jetzt schon ein paar erfolglose Versuche hinter mir habe, hier die Frage, ob das überhaupt geht.

mfG
Mike
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Ein Query auf drei Grids verteilen

  Alt 5. Jun 2008, 17:37
Da wäre es ja sinnvoller 3 Queries zu verwenden
Markus Kinzler
  Mit Zitat antworten Zitat
Mike_on_Tour

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

Re: Ein Query auf drei Grids verteilen

  Alt 5. Jun 2008, 17:59
Ist das nicht etwas viel Aufwand für eine "einfache" Aufteilung der Daten ?
Könnte man nicht einen Filter auf das DBGrid setzen ?
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Ein Query auf drei Grids verteilen

  Alt 6. Jun 2008, 09:07
Du kannst dem DBGrid schon irgendwie mitteilen, welche Spalten es anzeigen soll.

Aber das mit den drei Queries finde ich auch besser.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
679 Beiträge
 
Delphi 12 Athens
 
#5

Re: Ein Query auf drei Grids verteilen

  Alt 6. Jun 2008, 09:19
Zitat von Mike_on_Tour:
ich habe ein Query und möchte die Datenmenge auf drei DBGrids aufteilen. Als Kennzeichen für die Aufteilung soll ein Feld in der Datenmenge dienen. Da ich jetzt schon ein paar erfolglose Versuche hinter mir habe, hier die Frage, ob das überhaupt geht.
Eine vertikale Aufteilung bekommst du relativ einfach hin, indem du auf dem Grid mit einem Doppelklick in die Feldliste gehst und nur ein paar Felder davon auswählst.
So wie ich dein Posting aber verstehe, willst du eine horizontale Aufteilung (keine Selektion der Felder, sondern der Datensätze) anhand des Inhaltes eines der Felder!? In diesem Fall folge dem Rat der anderen und schreib 3 Queries.

Nachtrag: Du kannst auf eine AdsQuery auch einen Filter anlegen, aber das betrifft dann alle drei Grids gleichermaßen. Ein Grid kann nicht filtern, nur die zugrundeliegende Datenmenge.
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
Mike_on_Tour

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

Re: Ein Query auf drei Grids verteilen

  Alt 6. Jun 2008, 09:32
Zitat von RavenIV:
Du kannst dem DBGrid schon irgendwie mitteilen, welche Spalten es anzeigen soll.
Du meinst sicherlich "Zeilen" ?

Zitat von joachimd:
So wie ich dein Posting aber verstehe, willst du eine horizontale Aufteilung (keine Selektion der Felder, sondern der Datensätze) anhand des Inhaltes eines der Felder!?
Genau SO hatte ich das vor.

Zitat von joachimd:
Du kannst auf eine AdsQuery auch einen Filter anlegen, aber das betrifft dann alle drei Grids gleichermaßen. Ein Grid kann nicht filtern, nur die zugrundeliegende Datenmenge.
Ja, das habe ich auch ausprobiert, aber der Filter gilt dann auch für alle Grids.

Meine Lösung sieht jetzt so aus: Ich habe das EINE Query und durchlaufe die gesamte Datenmenge (WHILE ...). In einer Spalte der Datenmenge steht ein Wert. In Abhängigkeit von diesem Wert befülle ich dann drei StringGrids. Da die Daten nur angezeigt werden sollen, ist das sicher einfacher, als drei fast gleiche Queries mit drei anhängenden DBGrids und drei DataSources zu verwenden. Man stelle sich mal vor, ich müßte die SQL-Abfrage (so etwa 100 Zeilen mit Parameter und Unions) ändern. So habe ich nur eine Änderung statt drei zu machen.

Mike
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Ein Query auf drei Grids verteilen

  Alt 6. Jun 2008, 09:34
Richtig.
StringGrid selber befüllen ist auch ne gute Alternative.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Ein Query auf drei Grids verteilen

  Alt 6. Jun 2008, 10:45
How to cook drei Grids aus einer Query.

1x query
3x TProvider (an die query beppseln)
3x TClientDataset (mit individuellen filtern)

3x Tdatasource an die TClientDatasets
3x TDBGrid an die TDatasourcen

Tipp: Die Reihenfolge, wie man die Clientdatasets und die Query öffnet und schließt ist entscheidend. WEnn man zur Designzeit damit rumspielt, immer wieder die TClientdatasets per Rechte-Maus-Taste leeren (Clear Data oder so)

3 Queries wären zwar einfacher, aber wenn die Query an sich schon aufwändig ist, ist meine Lösung performanter.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
679 Beiträge
 
Delphi 12 Athens
 
#9

Re: Ein Query auf drei Grids verteilen

  Alt 6. Jun 2008, 11:04
Zitat von Mike_on_Tour:
Meine Lösung sieht jetzt so aus: Ich habe das EINE Query und durchlaufe die gesamte Datenmenge (WHILE ...). In einer Spalte der Datenmenge steht ein Wert. In Abhängigkeit von diesem Wert befülle ich dann drei StringGrids. Da die Daten nur angezeigt werden sollen, ist das sicher einfacher, als drei fast gleiche Queries mit drei anhängenden DBGrids und drei DataSources zu verwenden. Man stelle sich mal vor, ich müßte die SQL-Abfrage (so etwa 100 Zeilen mit Parameter und Unions) ändern. So habe ich nur eine Änderung statt drei zu machen.
Sicherlich einfacher in der Anwendung, aber auch performanter? Bei großen Ergebnismengen musst du mit deiner Methode alle Datensätze abholen, bevor du etwas anzeigen kannst. Mit drei Queries siehst du schon was, wenn die ersten 10-20 Datensätze bereit sind. Der Rest wird eh nach Bedarf ermittelt (Ausnahmen bestätigen die Regel).
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Ein Query auf drei Grids verteilen

  Alt 6. Jun 2008, 13:50
Hallo,

das mit 100 Zeilen ändern -> grosser Aufwand kann ich nicht so gelten lassen.
Du kannst ja eine CreateQuery(TheQuery: TAbsQuery) schreiben.
Die erzeugt den Query-Text (per SQL.Add) für die 3 Queries.


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:23 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