Delphi-PRAXiS
Seite 7 von 8   « Erste     567 8      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem mit UNION Select (https://www.delphipraxis.net/113349-problem-mit-union-select.html)

mu8zeh 8. Mai 2008 18:56

Re: Problem mit UNION Select
 
Hallo mkinzler,

ein kleines Problem habe ich da doch noch gefunden.
Die Variable "kurz" bleibt gefüllt.
bsp.
beim 1. gefundenen Datensatz am 1 Tag = Kurzzeichen "T"
beim 2. gefundenen Datensatz am 1 Tag auch = Kurzzeichen "T" aber nur dann, wenn der wert gleich Null oder '' sein sollte.

wo müsste ich die Variable leeren?

mkinzler 8. Mai 2008 19:05

Re: Problem mit UNION Select
 
Wo auch die anderen Variablen geleert werden also
SQL-Code:
d1 = ''; ... kurz = '':

mu8zeh 8. Mai 2008 19:08

Re: Problem mit UNION Select
 
ups das habe ich übersehen :oops:

mkinzler 8. Mai 2008 19:13

Re: Problem mit UNION Select
 
Man sollte es aber eher in die innere Schleife verschieben.

mu8zeh 8. Mai 2008 19:14

Re: Problem mit UNION Select
 
ich versuche gerade mein glück

omata 9. Mai 2008 18:58

Re: Problem mit UNION Select
 
Zitat:

Zitat von mu8zeh
...Zeigen mir die Daten schon mal im Querformat an.
Einen Plan, wie ich das auf 2 Monate umsetzten kann hätte ich auch schon.

Und das verstehe ich schon wieder nicht! (ich scheine einfach zu doof zu sein, sorry)

Mein Vorschlag ist doch auch für mehrere Monate ausführbar und auch eingrenzbar. Allerdings kommt dort für jede Person eine Zeile pro Monat/Jahr heraus. Du willst doch wohl nicht alle Monate als Spalten realisieren? Was willst du den mit 365 Spalten? Was machst du in 10 Jahren -> 3650 Spalten?

Naja, wie auch immer: ich verstehe dich nicht.

Gruss
Thorsten

mu8zeh 9. Mai 2008 19:21

Re: Problem mit UNION Select
 
Hallo Thorsten

Nein Du hast alles super verstanden.

So wie Ihr die beiden Vorlagen erstellt habt ist es was ich wollte.
Ein kleines Problem habe ich aber bei der Anzeige auf Desktop.

Wenn Auflösung = 1024 x 768 ist, dann brauche ich nur einen Monat.
Ist aber Auflösung 1280 x 960 oder Monat = Februar, dann brauche ich zwei Monate.
Zum B. Aktuellen Monat und ca. die hälfte vom nächsten Monat.

Ich habe es noch nicht erstellt oder getestet. Aber ich denke mal, dass ich das mit zwei
DBGrids darstellen könnte.

Mit einem Monat geht es super. Konntest Du meiner Schilderung folgen?

omata 9. Mai 2008 22:27

Re: Problem mit UNION Select
 
Ok, dann hier nochmal ein neuer Vorschlag...

Delphi-Quellcode:
uses DateUtils;

function GetSQL(StartTag:TDate; Monat:byte):string;
var s:string;
    Datum, Ende:TDate;
begin
  Datum:=StartTag;
  Ende:=IncMonth(StartTag, Monat)-1;
  s:='';
  while Datum <= Ende do begin
    s:=s + Format(
      '      MAX(CASE WHEN datum = %s ' +
                   'THEN kurzzeichen ' +
                   'ELSE NULL ' +
                 'END) AS "%s",',
      [QuotedStr(DateToStr(Datum)), DateToStr(Datum)]) + #13;
    Datum:=IncDay(Datum, 1);
  end;
  if s <> '' then
    s:=copy(s, 1, length(s)-2);
  Result:=
    Format(
      'SELECT EXTRACT(YEAR FROM datum) jahr,'#13 +
      '      EXTRACT(MONTH FROM datum) monat,'#13 +
      '      personalnr,'#13 +
      '%s'#13 +
      'FROM temp2007'#13 +
      'WHERE datum BETWEEN %s AND %s'#13 +
      'GROUP BY EXTRACT(YEAR FROM datum),'#13 +
      '        EXTRACT(MONTH FROM datum), personalnr'#13 +
      'ORDER BY EXTRACT(YEAR FROM datum),'#13 +
      '        EXTRACT(MONTH FROM datum), personalnr',
      [s,
       QuotedStr(DateToStr(StartTag)),
       QuotedStr(DateToStr(Ende))]
    );
end;
Aufruf...

Ein Monat:
Delphi-Quellcode:
Query.SQL.Text:=GetSQL(StrToDate('1.5.2008'), 1);
Zwei Monate:
Delphi-Quellcode:
Query.SQL.Text:=GetSQL(StrToDate('1.5.2008'), 2);
Halb + Ganz + Halb:
Delphi-Quellcode:
Query.SQL.Text:=GetSQL(StrToDate('15.4.2008'), 2);
Gruss
Thorsten

mu8zeh 9. Mai 2008 22:39

Re: Problem mit UNION Select
 
Hallo Thorsten

vielen Dank. Ich werde es morgen einbauen und Rückinfo geben.

Ach ich konnte die Zeit nicht abwarten.
Was soll ich sagen. Ich bin sprachlos.
Ich entnehme aber daraus, dass Du etwas mit meiner Beschreibung anfangen konntest. :roll:

Nun wird es ein leichtes sein, die Daten entsprechend anzuzeigen.
Vielen Dank noch mal an alle die mir geholfen haben. :mrgreen:

Grüße
Detlef

mu8zeh 10. Mai 2008 09:15

Re: Problem mit UNION Select
 
Eine Frage hätte ich da mal noch.

Was macht das „%“ Zeichen?
Möchte gerne Verstehen, was ich in das Prog. Schreibe


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:37 Uhr.
Seite 7 von 8   « Erste     567 8      

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