PUHHHH
Ihr verlangt ganz schön viel von einem Blutigen ANFÄNGER (ironisch gemeint).
o.K. Jetzt bin ich schon so weit und werde ich nicht aufgeben.
Mit etwas Unterstützung bekomme ich das hin.
Momentan sieht meine Abfrage so aus und ich habe keinen blassen Schimmer, wie ich hier weitermachen kann.
P.s.: Ich weiß sauber Programmieren sieht sicher anders aus, aber ich lerne ja noch und für das, dass ich mir das selber bei bringe bin ich STOLZ auf mich.
Code: Alles auswählen
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
jahr:=Combobox1.Items[ComboBox1.ItemIndex];
EditSuchen.Visible:=True;
EditSuchen.Text:='';
suchen:= '';
ButtonSuchen.Visible:=True;
//Erst mal Verbindungen schliessen
SQLQuery1.Active:=False;
// SQLQuery1 leeren
SQLQuery1.SQL.Clear;
strQuery := Format('SUM( CASE WHEN YEAR(tz.dDatum) = '+jahr+' THEN tz.fBetrag ELSE 0 END) ['+jahr+'] ', [jahr, jahr]);
SQLQuery1.SQL.ADD(Format(sqlQuery, [strQuery, jahr]));
//Hier wird der Combobox Eintrag der gewählt wurde eingetragen
//Eintrag Betrag ändern Verbindungen wieder öffnen
DBGrid1.COLUMNS.Items[8].Title.Caption := '*Umsatz bezahlt '+ jahr;
DBGrid1.COLUMNS.Items[8].FieldName := jahr;
IF (jahr = 'Gesamt') Then
begin
//Erst mal Verbindungen schliessen
SQLQuery1.Active:=False;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.ADD(Format(sqlQuery, ['SUM(tz.fBetrag) AS [Gesamt]', 'Gesamt']));
end;
SQLQuery1.Active:= True;
// Jahres Gesamtumsatz berechnen
// Verhindern, dass die Anzeige ständig aktualisiert wird:
SQLQuery1.DisableControls;
SQLQuery1.first;
summe:=0;
while NOT SQLQuery1.eof do
begin
summe:=summe+SQLQuery1.FieldByName(jahr).AsFloat;
SQLQuery1.next;
end;
begin
SQLQuery1.EnableControls;
SQLQuery1.first;
Label3.Caption:= 'Umsatz für: ' +jahr;
EditGesUmsatz.Text:=FloatToStrF(summe, ffCurrency, 8, 2);
summeKunden:=0;
summeKunden:=SQLQuery1.RecordCount;
Label1.Caption:= 'Kunden Gesamt: '+IntToStr(summeKunden);
end;
end;
Das einzige was ich annähernd gefunden habe ist das hier.
Aber wie ich es auch versuche ein zu bauen, ich komme einfach nicht zum Ziel.
Code: Alles auswählen
procedure Tmain_form.prTDBGridUTF8ToAnsi(DBGrid1: TDBGrid);
var
i : Integer;
begin
//Disable Screen UPDATE
DBGrid1.DataSource.DataSet.DisableControls;
DBGrid1.DataSource.DataSet.First;
While NOT (DBGrid1.DataSource.DataSet.Eof) Do
Begin
FOR i := 0 TO DBGrid1.COLUMNS.Count -1 Do
Begin
DBGrid1.COLUMNS[i].FIELD.Value := UTF8ToAnsi(DBGrid1.COLUMNS[i].FIELD.AsString);
End;
DBGrid1.DataSource.DataSet.Next;
End;
DBGrid1.DataSource.DataSet.First;
//Enable Screen UPDATE
DBGrid1.DataSource.DataSet.EnableControls;
end;