![]() |
Re: DevExpress Summe
Liste der Anhänge anzeigen (Anzahl: 1)
Jetzt aber .... :-D
Ab jetzt brauchst du keine Gruppe mehr vorgeben, d. h. ob du die Summarys änderst oder löscht wird immer bei einer Summe (skSum) die formatierte Zeit angezeigt. Dazu brauchst du wieder meine Prozedure GetText und das Event vom Grid [Tableview].DataController.SummaryDefaultGroup.SummaryItems.O nSummary. Sobald eine Gruppierungsfunktion angezeigt werden soll wird das Event aufgerufen. Dabei prüfe ich ob es die korrekten Spalten sind (Es wird bei jeder Spalte in jedem Record ausgelöst).Dann ob es eine Footer ist und die Gruppierungsfunktion skSum. Wenn das der Fall ist, dann verbinde ich vom SummaryItem das Event OnGetText mit der Prozedure GetText. Diese Event wird nach der Summary Berechnung aufgerufen. Einen kleinen Tipp habe ich noch. Hast du die Help Dateien runtergeladen, mir haben sie (fast) immer geholfen. Hier in diesem Fall aber nicht :wink: , dafür aber DevExpress Support, der ist sehr gut. Der Eintrag war das was wir brauchten .... ![]() Gruß Matthias
Delphi-Quellcode:
procedure TForm1.cxGridDBTV1DataControllerSummaryDefaultGroupSummaryItemsSummary(
ASender: TcxDataSummaryItems; Arguments: TcxSummaryEventArguments; var OutArguments: TcxSummaryEventOutArguments); var AItem: TcxGridTableSummaryItem; AValue: Variant; begin AItem := TcxGridTableSummaryItem(Arguments.SummaryItem); // Prüfe ob es die gewünschte Spalte ist if (AItem.Column = cxGridDBColZeit1) or (AItem.Column = cxGridDBColZeit2) or (AItem.Column = cxGridDBColZeit3) then begin // Bedingung : es ist ein Footer und soll die Summe angezeigt werden if (AItem.Position = spFooter) and (AItem.Kind = skSum) then // Event OnGetText einschalten AItem.OnGetText := GetText else begin // Event OnGetText ausschalten und Exit AItem.OnGetText := nil; Exit; end; //Entnehme die Werte aus der korrekten Spalte if AItem.Column = cxGridDBColZeit1 then AValue := cxGridDBTV1.DataController.Values[ Arguments.RecordIndex, cxGridDBColZeit1.Index] else if AItem.Column = cxGridDBColZeit2 then AValue := cxGridDBTV1.DataController.Values[ Arguments.RecordIndex, cxGridDBColZeit2.Index] else if AItem.Column = cxGridDBColZeit3 then AValue := cxGridDBTV1.DataController.Values[ Arguments.RecordIndex, cxGridDBColZeit3.Index]; // Nachfolgende Abfrage auskommentiert, da weiterhin gerechnet wird. // Nur wenn man bestimmte Datensätze berechnet haben möchte // könnte man die DS filtern und in SummaryValue addieren. //nur als Beispiel // if not VarIsNull(AValue) then // begin // OutArguments.SummaryValue := AValue + OutArguments.SummaryValue; // OutArguments.Done := true; // end; end; end; procedure TForm1.GetText(Sender: TcxDataSummaryItem; const AValue: Variant; AIsFooter: Boolean; var AText: string); begin if AValue <> Null then AText := FormatDateTime('hh:mm', AValue); end; |
Re: DevExpress Summe
Hi, vielen vielen Dank. Funktioniert - wie gewünscht. :corky:
:hi: bis demnächst. |
Re: DevExpress Summe
Das freut mich ... :)
Bis dann Gruß Matthias |
Re: DevExpress Summe
Hallo alle zusammen,
ich belebe das Thema wieder zum Leben... Bei mir klappt das alles nicht so wie es bei mir sein soll. Entweder habe ich es einfach nicht verstanden oder habe ein anderes Problem. Ich möchte ein Colum was folgendes Format hat: "Time Edit" - "tfHourMin" Unter Summary habe ich dann das Column ausgesucht das entsprechende FiueldName ausgewählt und als Kind skSum gesetzt, aber komischer weise kann mein Grid nur "Max, Min und Count" bei Summ passiert einfach nichts wisst ihr woran es liegen könnte? Einmal hat er irgendwie eine Summe "addiert", aber da kam dann ein Datum und dann eine falsche Zeit raus. Soweit ich es richtig verstanden habe, kann DevExpress bzw. Allgemein kann die Zeit nicht addiert werden, wie kann ich für das einzelne lösen? Vielen Dank für eure hilfe |
Re: DevExpress Summe
Herzlich Willkommen (dass ich das mal als erster sage ... Cool) :-D
Ich denke dein Problem ist das Datenbankfeld, das wird vom Typ DateTime sein. Stelle es um auf Float, was letzendlich ein DateTime Field ja ist, dann hast du den Durchschnitt, sowie die Summe als Auswahl. Die Column zeigst du als TimeEdit an (+ tfHourMin). Das sollte klappen. Gruß Matze |
Re: DevExpress Summe
Vielen Dank.
Aber leider kommt folgendes Problem: die Zeitzen sind z.B. alle auf "0" und mein Grid hat als "Summe" 31 und wenn ich dann z.B. als Zeit 01:22 angebe dann rechnet er das auch ganz komisch zusammen nicht so wie als "Zeit". Hoffentlich habe ich das jetzt gut genug erklärt. |
Re: DevExpress Summe
Hallo,
nach meiner Meinung ist nur scheinbar überall der Wert 0, ansonsten würde das Grid nicht die Summe 31 anzeigen. Überschreibe mal alle Wert der Spalte mit 0. Das mit der Gruppensumme ist korrekt, die mußt du bei der Ausgabe natürlich formatieren, da das Grid sonst die Summe in Float anzeigt, es orientiert sich an den Typ vom DB Feld, was ja Float ist. Versuche es mal mit OnGetText Zitat:
Delphi-Quellcode:
if AValue <> Null then
AText := FormatDateTime('hh:mm', AValue); |
Re: DevExpress Summe
hmm soweit ich es richtig verstanden habe muss ich nur folgendes machen:
Delphi-Quellcode:
Also beim Ergebnis "OnGetText" wird geprüft, ob der Wert "nicht NULL" ist und dann wird im Footer das Format in 'hh:mm' geändert und als "AValue" gespcihert?
procedure TfrmStundenMA.cxGrid1DBBandedTableView1TcxGridDBDataControllerTcxDataSummaryFooterSummaryItems0GetText(
Sender: TcxDataSummaryItem; const AValue: Variant; AIsFooter: Boolean; var AText: string); begin if AValue <> Null then AText := FormatDateTime('hh:mm', AValue); end; Bei mir kommen immernoch die komischen Zahlen raus also statt ca. 8 Stunden sagt mein Grid im Footer 0,89 oder so. ini Dateien habe ich natürlich auch gelöscht danach. Vielen Dank |
Re: DevExpress Summe
mit den Beispielprojekten habe ich dieselben Probleme, wenn ich z.B. von "Zeit1" die Summe berechnen lasse kommt 0,16 raus statt.... ca.98 oder so hmm
|
Re: DevExpress Summe
Ok Problem gelöst, ich habe einfach in MySQL die Stunde - Minute errechnet und dann unter OnGetText anzeigen lassen.
Vielen Dank für die Hilfe :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:39 Uhr. |
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-2025 by Thomas Breitkreuz