📄 ubasereport.~pas
字号:
unit ubasereport;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGridEh, StdCtrls, Buttons, PDJComEdit, wwdblook, MDIbase,inifiles,
comobj, Excel2000,wwdbdatetimepicker, Mask, wwdbedit, ExtCtrls, DB, DBTables, DBClient,
ADODB;
type
Tfrmbasereport = class(TfrmMDIbase)
paneltitle: TPanel;
formTitle: TLabel;
spbtnprint: TSpeedButton;
spbtnprior: TSpeedButton;
SpeedButton1: TSpeedButton;
Label3: TLabel;
refno: TwwDBEdit;
paneledit: TPanel;
Label1: TLabel;
Label2: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label4: TLabel;
Label11: TLabel;
wwDBDateTimePicker1: TwwDBDateTimePicker;
wwDBEdit1: TwwDBEdit;
wwDBEdit4: TwwDBEdit;
wwDBEdit5: TwwDBEdit;
wwDBEdit8: TwwDBEdit;
billno: TwwDBEdit;
wwDBLookupCombo1: TwwDBLookupCombo;
wwDBDateTimePicker2: TwwDBDateTimePicker;
wwDBEdit3: TwwDBEdit;
CDSselectsub: TClientDataSet;
Con1: TADOConnection;
ADOQuery1: TADOQuery;
conSource: TDataSource;
DBGridEh1: TDBGridEh;
Edit1: TEdit;
Label15: TLabel;
Label16: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Label10: TLabel;
Edit6: TEdit;
Edit5: TEdit;
Edit4: TEdit;
Label13: TLabel;
Label14: TLabel;
Label12: TLabel;
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormCreate(Sender: TObject);
procedure spbtnpriorClick(Sender: TObject);
procedure DBGridEh1TitleBtnClick(Sender: TObject; ACol: Integer;
Column: TColumnEh);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmbasereport: Tfrmbasereport;
implementation
{$R *.dfm}
procedure Tfrmbasereport.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
canclose:=true;
end;
procedure Tfrmbasereport.FormCreate(Sender: TObject);
var
s:string;
ini:Tinifile;
usercode:string;
serverIP:string;
begin
inherited;
dbgrideh1.RowHeight:=24;
// creastoredata;
s:=Extractfilepath(application.ExeName);
if s[length(s)]<>'\' then
s:=s+'\'+'Default.ini'
else
s:=s+'Default.ini';
try
ini:=Tinifile.Create(s);
serverIP:=ini.ReadString('ADO','FILE NAME','');
finally
ini.Free;
end;
if Serverip<>'' then
con1.ConnectionString:='FILE NAME='+serverip
else
con1.ConnectionString:='FILE NAME=\kc.udl';
con1.Connected:=true;
end;
procedure Tfrmbasereport.spbtnpriorClick(Sender: TObject);
var
excelid, mybook: variant;
row, col, i, j, colcount, frow: integer;
excelflg: boolean;
rpstr: string;
per_count, datasum, dsum1, dsum2: integer;
datas1, datas2, datas3: string;
begin
adoquery1.DisableControls;
try
excelid := createoleobject('excel.application');
mybook := createoleobject('excel.sheet');
mybook := excelid.workbooks.add;
row := 1;
col := 1;
excelflg := true;
except
excelflg := false;
application.MessageBox('请确定EXCEL是否正确安装!', '提示信息', mb_ok);
end;
if excelflg then
begin
colcount :=adoquery1.FieldCount;
excelid.range['A' + inttostr(row), chr(64 + colcount) +
inttostr(row)].merge();
mybook.worksheets[1].cells.item[row, col] := '基本报表';
mybook.worksheets[1].cells.item[row, col].font.size := 18;
mybook.worksheets[1].cells.item[row, col].font.bold := true;
mybook.worksheets[1].cells.item[row, col].HorizontalAlignment := xlcenter;
row := row + 1;
excelid.range['A' + inttostr(row), chr(64 + colcount) +
inttostr(row)].merge();
mybook.worksheets[1].cells.item[row, col] := '报表日期:' +
datetostr(date);
row := row + 1;
frow := row;
adoquery1.First;
for i := 1 to colcount do
begin
excelid.columns[i].ColumnWidth := dbGrideh1.Columns[i - 1].Width /
8;
excelid.columns[i].NumberFormatLocal := '@';
mybook.worksheets[1].cells.item[row, i] := dbgrideh1.Columns[i -
1].Title.Caption;
mybook.worksheets[1].cells.item[row, i].HorizontalAlignment := xlcenter;
end;
row := row + 1;
while not adoquery1.Eof do
begin
for i := 1 to colcount do
mybook.worksheets[1].cells.item[row, i] := adoquery1.Fields[i -1].AsString;
row := row + 1;
adoquery1.Next;
end;
excelid.range['A' + inttostr(row), chr(64 + colcount) +
inttostr(row)].merge();
mybook.worksheets[1].cells.item[row, col].font.size := 12;
mybook.worksheets[1].cells.item[row, col].font.bold := true;
mybook.worksheets[1].cells.item[row, col].HorizontalAlignment := xlcenter;
mybook.worksheets[1].cells.item[row, col] := '总记录数:' +
inttostr(adoquery1.RecordCount) + '条';
row := row + 1;
rpstr := '报表条件:';
excelid.range['A' + inttostr(row), chr(64 + colcount) +
inttostr(row)].merge();
mybook.worksheets[1].cells.item[row, col] := rpstr;
row := row + 1;
excelid.range[chr(65) + inttostr(frow), chr(64 + colcount) + inttostr(row
- 1)].Borders[1].LineStyle := xlContinuous;
excelid.range[chr(65) + inttostr(frow), chr(64 + colcount) + inttostr(row
- 1)].Borders[2].LineStyle := xlContinuous;
excelid.range[chr(65) + inttostr(frow), chr(64 + colcount) + inttostr(row
- 1)].Borders[3].LineStyle := xlContinuous;
excelid.range[chr(65) + inttostr(frow), chr(64 + colcount) + inttostr(row
- 1)].Borders[4].LineStyle := xlContinuous;
excelid.visible := true;
end;
adoquery1.EnableControls;
end;
procedure Tfrmbasereport.DBGridEh1TitleBtnClick(Sender: TObject;
ACol: Integer; Column: TColumnEh);
var
sortstring:string; //排序列
begin
//进行排序
with Column do
begin
if FieldName = '' then
Exit;
case Title.SortMarker of
smNoneEh:
begin
Title.SortMarker := smDownEh;
sortstring := Column.FieldName + ' ASC';
end;
smDownEh: sortstring := Column.FieldName + ' ASC';
smUpEh: sortstring := Column.FieldName + ' DESC';
end;
//进行排序
try
adoquery1.Sort := sortstring //dataset为实际数据集变量名
except
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -