Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Probelm !!! -> Group by ? (https://www.delphipraxis.net/82440-sql-probelm-group.html)

mkinzler 13. Dez 2006 11:08

Re: SQL Probelm !!! -> Group by ?
 
'Dezember' ist ja auch ein String. Case geht nur mit Ordinalzahlen. Zeig mal deinen Code.

HolgerCW 13. Dez 2006 11:10

Re: SQL Probelm !!! -> Group by ?
 
Hier der Code:

SQL-Code:
SELECT CASE MONTH(ABLESEDATUM) WHEN 10 then 'Oktober' WHEN 11 then 'November' WHEN 12 then 'Dezember' END AS MONAT, COUNT(AUFTRAG_ID) AS ANZAHL FROM SYSSIGMA.ZST_2BMOBIL
WHERE AUFTRAGSARTEN_TEXT LIKE '%Turnuswechsel%' AND
ABLESEDATUM <= '31.12.2006' AND ABLESEDATUM >= '01.01.2006'
GROUP BY CASE MONTH(ABLESEDATUM) WHEN 10 THEN 'Oktober' WHEN 11 then 'November' WHEN 12 then 'Dezember' END

marabu 13. Dez 2006 11:22

Re: SQL Probelm !!! -> Group by ?
 
Eigentlich müsste doch das hier genügen:

Delphi-Quellcode:
procedure TDemoForm.ChartGetAxisLabel(Sender: TChartAxis;
  Series: TChartSeries; ValueIndex: Integer; var LabelText: String);
begin
  LabelText := ShortMonthNames[Trunc(Series.XValue[ValueIndex])];
end;
Freundliche Grüße

HolgerCW 13. Dez 2006 11:35

Re: SQL Probelm !!! -> Group by ?
 
Jetzt komme ich da schon weiter:

oben stand nämlich

Zitat:

MonthShortName
So konnte das ja nicht klappen, wenn es eigentlich

Zitat:

ShortMonthNames
heissen muss.

Leider klappt es mit

Zitat:

LabelText := ShortMonthNames[Trunc(Series.XValue[ValueIndex])];
nicht. Kommt eine Speicherzugriffsverletzung. Vielleicht eine Idee ???

Gruss

Holger

marabu 13. Dez 2006 11:40

Re: SQL Probelm !!! -> Group by ?
 
Sorry für den Dreher. Wenn deine Monatswerte alle im Ergebnis vorkommen, dann geht es auch einfacher:

Delphi-Quellcode:
LabelText := ShortMonthNames[Succ(ValueIndex)];
Gruß

HolgerCW 13. Dez 2006 11:55

Re: SQL Probelm !!! -> Group by ?
 
Bei der Lösung steht dann überall hh:mm:ss

Habe es jetzt so gelöst:

Delphi-Quellcode:
if LabelText = '1' then LabelText := 'Januar';
if LabelText = '2' then LabelText := 'Februar';
if LabelText = '3' then LabelText := 'März';
if LabelText = '4' then LabelText := 'April';
if LabelText = '5' then LabelText := 'Mai';
if LabelText = '6' then LabelText := 'Juni';
if LabelText = '7' then LabelText := 'Juli';
if LabelText = '8' then LabelText := 'August';
if LabelText = '9' then LabelText := 'September';
if LabelText = '10' then LabelText := 'Oktober';
if LabelText = '11' then LabelText := 'November';
if LabelText = '12' then LabelText := 'Dezember';
Wie kriege ich das hin das er das nur Beschriftet wenn die X-Achse dran ist.

Gruss

Holger

marabu 13. Dez 2006 13:39

Re: SQL Probelm !!! -> Group by ?
 
Das hier funktioniert bei mir:

Delphi-Quellcode:
procedure TDemoForm.ChartGetAxisLabel(Sender: TChartAxis;
  Series: TChartSeries; ValueIndex: Integer; var LabelText: String);
begin
  if (ValueIndex in [0..11]) and (Sender = Sender.ParentChart.BottomAxis) then
    LabelText := ShortMonthNames[Trunc(Series.XValue[ValueIndex])];
end;
Series ist die einzige bzw. relevante Serie im Chart. Den Namen musst du natürlich an deine Verhältnisse anpassen.

Freundliche Grüße

HolgerCW 13. Dez 2006 14:40

Re: SQL Probelm !!! -> Group by ?
 
Das macht Probleme bei mir:

Delphi-Quellcode:
LabelText := ShortMonthNames[Trunc(Series.XValue[ValueIndex])];
Kommt immer eine Speicherverletzung

Dieser Zusatnd tritt nie ein:

Delphi-Quellcode:
if (ValueIndex in [0..11]) then
Habe es jetzt aber so gelöst, und das reicht mir jetzt erstmal:

Delphi-Quellcode:
if Sender = Sender.ParentChart.BottomAxis then
 begin
  if LabelText = '1' then LabelText := 'Januar';
  if LabelText = '2' then LabelText := 'Februar';
  if LabelText = '3' then LabelText := 'März';
  if LabelText = '4' then LabelText := 'April';
  if LabelText = '5' then LabelText := 'Mai';
  if LabelText = '6' then LabelText := 'Juni';
  if LabelText = '7' then LabelText := 'Juli';
  if LabelText = '8' then LabelText := 'August';
  if LabelText = '9' then LabelText := 'September';
  if LabelText = '10' then LabelText := 'Oktober';
  if LabelText = '11' then LabelText := 'November';
  if LabelText = '12' then LabelText := 'Dezember';
 end;
Habe noch den Sender verwendet. Jetzt habe ich das was ich wollte.

Danke nochmal

Gruss

Holger

marabu 13. Dez 2006 14:47

Re: SQL Probelm !!! -> Group by ?
 
Hallo Holger,

Delphi-Quellcode:
procedure TDemoForm.ChartGetAxisLabel(Sender: TChartAxis;
  Series: TChartSeries; ValueIndex: Integer; var LabelText: String);
var
  iMonth: Integer;
begin
  if TryStrToInt(LabelText, iMonth)
  and (iMonth in [1..12])
  and (Sender = Sender.ParentChart.BottomAxis) then
    LabelText := LongMonthNames[iMonth];
end;
sieht irgendwie hübscher aus - findest du nicht?

Freundliche Grüße

HolgerCW 13. Dez 2006 16:36

Re: SQL Probelm !!! -> Group by ?
 
Das ist sie.

Deine Lösung ist gut. Kurz und Präzise. Klappt.

Danke ...

Gruss

Holger


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:05 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz