UDF Skripte
Kundenstatistik Top/Down
Script Beispiel für Kundenstatistik Top/Down.
Ausgabe nach Excel.
program statistik_ausgabe; var oDialog:TUDFDialog; XlsApp, XlsWorkBook, XlsWorkSheet: Variant; von,bis:TDateTime; nReihe,nIst,nGesamt:integer; nJahr,i :integer; function GetYear(dDate:TDateTime):integer; var Year, Month, Day: Word; begin DecodeDate(dDate, Year, Month, Day); result := year; end; begin oDialog := TUdfDialog.Create; try oDialog.AddField('Jahr','Jahr',ftInteger,True,True,'',0); nJahr := GetYear(date); oDialog.AddAuswahl('Jahr', inttostr(nJahr), nJahr,True); oDialog.SetFieldValue('Jahr', nJahr); for i := 1 to 5 do begin nJahr := nJahr-1; oDialog.AddAuswahl('Jahr', inttostr(nJahr), nJahr,True); end; if oDialog.Execute then begin XlsApp := CreateOleObject('Excel.Application'); XlsApp.Workbooks.Add; XlsApp.Visible := False; XlsWorkbook := XlsApp.Workbooks[1]; XlsWorksheet := Xlsworkbook.Worksheets[1]; nJahr := oDialog.GetFieldValue('Jahr'); von := EncodeDate(nJahr,1,1); bis := EncodeDate(nJahr,12,31); XlsWorksheet.Cells[1,'A'].Value := 'Auswertung '+inttostr(nJahr); XlsWorksheet.Cells[2,'A'].Value := 'Knd.Nr.'; XlsWorksheet.Cells[2,'B'].Value := 'Match'; XlsWorksheet.Cells[2,'C'].Value := 'Netto'; XlsWorksheet.Cells[2,'D'].Value := 'Brutto'; XlsApp.Columns('B').ColumnWidth := 40; XlsApp.Range('A2:D2').Select; XlsApp.Selection.Font.Bold := true; XlsApp.Selection.Interior.ColorIndex := 1; XlsApp.Selection.Interior.Pattern := 1; //xlSolid XlsApp.Selection.Font.ColorIndex := 2; XlsApp.Columns('C').select; XlsApp.Selection.NumberFormat := '0,00'; XlsApp.Columns('D').select; XlsApp.Selection.NumberFormat := '0,00'; XlsApp.Columns('A').select; XlsApp.Selection.NumberFormat := '@'; XlsApp.Columns('B').select; XlsApp.Selection.NumberFormat := '@'; // auf Anfang positionieren XlsWorksheet.Cells[1,'A'].Select; nReihe := 2; oQuery.SQL.Text := 'SELECT SUM(IF(k.art=3,k.VK_BRUTTO,0-k.VK_BRUTTO)) AS VK_BRUTTO'+ ',SUM(IF(k.art=3,k.VK_Netto,0-k.VK_Netto)) AS VK_Netto,'+ 'k.svnr,k.svadrid,k.svmatch'+ ' FROM kopf k '+ ' WHERE (k.art IN (3,4))'+ ' AND (k.datum BETWEEN '+DateString(von)+' AND '+DateString(bis)+')'+ ' GROUP BY k.svadrid '+ ' ORDER BY "VK_Netto" DESC, k.svnr'; oQuery.Open; nGesamt := oQuery.RecordCount; nIst := 0; while not oQuery.eof do begin nIst := nIst +1; ShowProgress(nIst,nGesamt,'Lese Daten..'); nReihe := nReihe + 1; // Excel schreiben XlsWorksheet.Cells[nReihe,'A'].Value := oQuery.FieldByname('svnr').AsString; XlsWorksheet.Cells[nReihe,'B'].Value := oQuery.FieldByname('svmatch').AsString; XlsWorksheet.Cells[nReihe,'C'].Value := oQuery.FieldByname('vk_netto').AsFloat; XlsWorksheet.Cells[nReihe,'D'].Value := oQuery.FieldByname('vk_brutto').AsFloat; application.processmessages; oQuery.Next; end; end; XlsApp.Visible := True; finally oDialog.Free; end; end.