📄 stat.pas
字号:
begin
msgbox(sMsgNothingError,sTitleError,1);
exit;
end;
try
xls:=CreateOleObject('Excel.Application'); //调用 Excel
except
Msgbox(sMsgNotInstallExcel,sTitleError,1);
exit;
end;
xls.WorkBooks.add; //增加一个表
xls.Visible:=true; //可见
xls.Caption:='调用 EXCEL 导出进仓统计表';
//以下为设置EXCEL各列的宽度
xls.Columns[1].ColumnWidth:=10;
xls.Columns[2].ColumnWidth:=15;
xls.Columns[3].ColumnWidth:=15;
xls.Columns[4].ColumnWidth:=15;
xls.Columns[5].ColumnWidth:=5;
xls.Columns[6].ColumnWidth:=8;
xls.Columns[7].ColumnWidth:=8;
xls.Cells(1,1):='[进仓统计]';
//画加框线 1-左 2-右 3-顶 4-底 5-斜( \ ) 6-斜( / )
for j:=1 to 4 do
xls.Range['A1:G1'].Borders[j].Weight:=2 ;
xls.Cells(1,2):='('+FormatDatetime('yyyy/mm/dd',DTInStatFrom.Date)+
') - ('+FormatDatetime('yyyy/mm/dd',DTInStatTo.Date)+')';
xls.Cells(1,5):='数据导出日期:'+DateToStr(now);
xls.Range['A1:G1'].Interior.ColorIndex := 37; //37 为天蓝色
//写入标题栏
for i:=1 to DBGrid1.FieldCount do
begin
xls.Cells[2,i].Value:=DBGrid1.Columns[i-1].Title.Caption ;
end;
xls.Range['A2:G2'].Interior.ColorIndex := 15; //15为灰色
//画加框线
for j:=1 to 4 do
xls.Range['A2:G2'].Borders[j].Weight:=2 ;
i:=3 ; //将循环写入数据,从第3行开始写入数据
with DM_Wjckgl.ADOQryInStat do
begin
first; //第一条
while not eof do
begin
xls.cells(i,1):=FieldByName(DBGrid1.Columns[0].FieldName).AsString ;
xls.cells(i,2):=FieldByName(DBGrid1.Columns[1].FieldName).AsString;
xls.cells(i,3):=FieldByName(DBGrid1.Columns[2].FieldName).AsString ;
xls.cells(i,4):=FieldByName(DBGrid1.Columns[3].FieldName).AsString ;
xls.cells(i,5):=FieldByName(DBGrid1.Columns[4].FieldName).AsString ;
xls.cells(i,6):=FieldByName(DBGrid1.Columns[5].FieldName).AsFloat ;
xls.cells(i,7):=FieldByName(DBGrid1.Columns[6].FieldName).AsInteger ;
//画加框线
for j:=1 to 4 do
xls.Range['A'+intToStr(i)+':G'+intToStr(i)].Borders[j].Weight:=2 ;
inc(i); //递增+1
next; //下一条数据
end;
end;
//保存EXCEL表格
if not xls.ActiveWorkBook.Saved then
xls.ActiveWorkBook.SaveAs(fn);
SetForegroundWindow(Application.Handle); //本语句是防止软件窗体被其它窗体覆盖
MsgBox(sMsgExportSucceed,sTitleHint,0);
// xls.quit; //退出EXCEL程序
end;
procedure TFrmStat.BitBtn5Click(Sender: TObject);
var
fn:string;
i,j:integer;
xls:OleVariant;
begin
if SaveDialog1.Execute then
fn:=SaveDialog1.FileName;
if trim(fn)='' then exit;
if (Dm_Wjckgl.ADOQryOutStat.Active =false) or
(DM_Wjckgl.ADOQryOutStat.RecordCount =0) then
begin
msgbox(sMsgNothingError,sTitleError,1);
exit;
end;
try
xls:=CreateOleObject('Excel.Application'); //调用 Excel
except
Msgbox(sMsgNotInstallExcel,sTitleError,1);
exit;
end;
xls.WorkBooks.add; //增加一个表
xls.Visible:=true; //可见
xls.Caption:='调用 EXCEL 导出出仓统计表';
//以下为设置EXCEL各列的宽度
xls.Columns[1].ColumnWidth:=10;
xls.Columns[2].ColumnWidth:=15;
xls.Columns[3].ColumnWidth:=15;
xls.Columns[4].ColumnWidth:=15;
xls.Columns[5].ColumnWidth:=5;
xls.Columns[6].ColumnWidth:=8;
xls.Columns[7].ColumnWidth:=8;
xls.Cells(1,1):='[出仓统计]';
//画加框线 1-左 2-右 3-顶 4-底 5-斜( \ ) 6-斜( / )
for j:=1 to 4 do
xls.Range['A1:G1'].Borders[j].Weight:=2 ;
xls.Cells(1,2):='('+FormatDatetime('yyyy/mm/dd',DTOutStatFrom.Date)+
') - ('+FormatDatetime('yyyy/mm/dd',DTOutStatTo.Date)+')';
xls.Cells(1,5):='数据导出日期:'+DateToStr(now);
xls.Range['A1:G1'].Interior.ColorIndex := 37; //37 为天蓝色
//写入标题栏
for i:=1 to DBGrid2.FieldCount do
begin
xls.Cells[2,i].Value:=DBGrid2.Columns[i-1].Title.Caption ;
end;
xls.Range['A2:G2'].Interior.ColorIndex := 15; //15为灰色
//画加框线
for j:=1 to 4 do
xls.Range['A2:G2'].Borders[j].Weight:=2 ;
i:=3 ; //将循环写入数据,从第3行开始写入数据
with DM_Wjckgl.ADOQryOutStat do
begin
first; //第一条
while not eof do
begin
xls.cells(i,1):=FieldByName(DBGrid2.Columns[0].FieldName).AsString ;
xls.cells(i,2):=FieldByName(DBGrid2.Columns[1].FieldName).AsString;
xls.cells(i,3):=FieldByName(DBGrid2.Columns[2].FieldName).AsString ;
xls.cells(i,4):=FieldByName(DBGrid2.Columns[3].FieldName).AsString ;
xls.cells(i,5):=FieldByName(DBGrid2.Columns[4].FieldName).AsString ;
xls.cells(i,6):=FieldByName(DBGrid2.Columns[5].FieldName).AsFloat ;
xls.cells(i,7):=FieldByName(DBGrid2.Columns[6].FieldName).AsInteger ;
//画加框线
for j:=1 to 4 do
xls.Range['A'+intToStr(i)+':G'+intToStr(i)].Borders[j].Weight:=2 ;
inc(i); //递增+1
next; //下一条数据
end;
end;
//保存EXCEL表格
if not xls.ActiveWorkBook.Saved then
xls.ActiveWorkBook.SaveAs(fn);
SetForegroundWindow(Application.Handle); //本语句是防止软件窗体被其它窗体覆盖
MsgBox(sMsgExportSucceed,sTitleHint,0);
// xls.quit; //退出EXCEL程序
end;
procedure TFrmStat.BitBtn9Click(Sender: TObject);
var
fn:string;
i,j:integer;
xls:OleVariant;
begin
if SaveDialog1.Execute then
fn:=SaveDialog1.FileName;
if trim(fn)='' then exit;
if (Dm_Wjckgl.ADOQryOutDept.Active =false) or
(DM_Wjckgl.ADOQryOutDept.RecordCount =0) then
begin
msgbox(sMsgNothingError,sTitleError,1);
exit;
end;
try
xls:=CreateOleObject('Excel.Application'); //调用 Excel
except
Msgbox(sMsgNotInstallExcel,sTitleError,1);
exit;
end;
xls.WorkBooks.add; //增加一个表
xls.Visible:=true; //可见
xls.Caption:='调用 EXCEL 导出部门领取统计表';
//以下为设置EXCEL各列的宽度
xls.Columns[1].ColumnWidth:=10;
xls.Columns[2].ColumnWidth:=10;
xls.Columns[3].ColumnWidth:=15;
xls.Columns[4].ColumnWidth:=15;
xls.Columns[5].ColumnWidth:=15;
xls.Columns[6].ColumnWidth:=5;
xls.Columns[7].ColumnWidth:=8;
xls.Columns[8].ColumnWidth:=8;
xls.Cells(1,1):='[部门领取统计]';
//画加框线 1-左 2-右 3-顶 4-底 5-斜( \ ) 6-斜( / )
for j:=1 to 4 do
xls.Range['A1:H1'].Borders[j].Weight:=2 ;
xls.Cells(1,3):='('+FormatDatetime('yyyy/mm/dd',DTOutDeptFrom.Date)+
') - ('+FormatDatetime('yyyy/mm/dd',DTOutDeptTo.Date)+')';
xls.Cells(1,5):='数据导出日期:'+DateToStr(now);
xls.Range['A1:H1'].Interior.ColorIndex := 37; //37 为天蓝色
//写入标题栏
for i:=1 to DBGrid3.FieldCount do
begin
xls.Cells[2,i].Value:=DBGrid3.Columns[i-1].Title.Caption ;
end;
xls.Range['A2:H2'].Interior.ColorIndex := 15; //15为灰色
//画加框线
for j:=1 to 4 do
xls.Range['A2:H2'].Borders[j].Weight:=2 ;
i:=3 ; //将循环写入数据,从第3行开始写入数据
with DM_Wjckgl.ADOQryOutDept do
begin
first; //第一条
while not eof do
begin
xls.cells(i,1):=FieldByName(DBGrid3.Columns[0].FieldName).AsString ;
xls.cells(i,2):=FieldByName(DBGrid3.Columns[1].FieldName).AsString ;
xls.cells(i,3):=FieldByName(DBGrid3.Columns[2].FieldName).AsString;
xls.cells(i,4):=FieldByName(DBGrid3.Columns[3].FieldName).AsString ;
xls.cells(i,5):=FieldByName(DBGrid3.Columns[4].FieldName).AsString ;
xls.cells(i,6):=FieldByName(DBGrid3.Columns[5].FieldName).AsString ;
xls.cells(i,7):=FieldByName(DBGrid3.Columns[6].FieldName).AsFloat ;
xls.cells(i,8):=FieldByName(DBGrid3.Columns[7].FieldName).AsInteger ;
//画加框线
for j:=1 to 4 do
xls.Range['A'+intToStr(i)+':H'+intToStr(i)].Borders[j].Weight:=2 ;
inc(i); //递增+1
next; //下一条数据
end;
end;
//保存EXCEL表格
if not xls.ActiveWorkBook.Saved then
xls.ActiveWorkBook.SaveAs(fn);
SetForegroundWindow(Application.Handle); //本语句是防止软件窗体被其它窗体覆盖
MsgBox(sMsgExportSucceed,sTitleHint,0);
// xls.quit; //退出EXCEL程序
end;
procedure TFrmStat.BitBtn13Click(Sender: TObject);
var
fn:string;
i,j:integer;
xls:OleVariant;
begin
if SaveDialog1.Execute then
fn:=SaveDialog1.FileName;
if trim(fn)='' then exit;
if (Dm_Wjckgl.ADOQryOutperson.Active =false) or
(DM_Wjckgl.ADOQryOutperson.RecordCount =0) then
begin
msgbox(sMsgNothingError,sTitleError,1);
exit;
end;
try
xls:=CreateOleObject('Excel.Application'); //调用 Excel
except
Msgbox(sMsgNotInstallExcel,sTitleError,1);
exit;
end;
xls.WorkBooks.add; //增加一个表
xls.Visible:=true; //可见
xls.Caption:='调用 EXCEL 导出个人领取统计表';
//以下为设置EXCEL各列的宽度
xls.Columns[1].ColumnWidth:=10;
xls.Columns[2].ColumnWidth:=10;
xls.Columns[3].ColumnWidth:=8;
xls.Columns[4].ColumnWidth:=15;
xls.Columns[5].ColumnWidth:=15;
xls.Columns[6].ColumnWidth:=15;
xls.Columns[7].ColumnWidth:=5;
xls.Columns[8].ColumnWidth:=8;
xls.Columns[9].ColumnWidth:=8;
xls.Cells(1,1):='[个人领取统计]';
//画加框线 1-左 2-右 3-顶 4-底 5-斜( \ ) 6-斜( / )
for j:=1 to 4 do
xls.Range['A1:I1'].Borders[j].Weight:=2 ;
xls.Cells(1,3):='('+FormatDatetime('yyyy/mm/dd',DTOutPersonFrom.Date)+
') - ('+FormatDatetime('yyyy/mm/dd',DTOutPersonTo.Date)+')';
xls.Cells(1,6):='数据导出日期:'+DateToStr(now);
xls.Range['A1:I1'].Interior.ColorIndex := 37; //37 为天蓝色
//写入标题栏
for i:=1 to DBGrid4.FieldCount do
begin
xls.Cells[2,i].Value:=DBGrid4.Columns[i-1].Title.Caption ;
end;
xls.Range['A2:I2'].Interior.ColorIndex := 15; //15为灰色
//画加框线
for j:=1 to 4 do
xls.Range['A2:I2'].Borders[j].Weight:=2 ;
i:=3 ; //将循环写入数据,从第3行开始写入数据
with DM_Wjckgl.ADOQryOutperson do
begin
first; //第一条
while not eof do
begin
xls.cells(i,1):=FieldByName(DBGrid4.Columns[0].FieldName).AsString ;
xls.cells(i,2):=FieldByName(DBGrid4.Columns[1].FieldName).AsString ;
xls.cells(i,3):=FieldByName(DBGrid4.Columns[2].FieldName).AsString ;
xls.cells(i,4):=FieldByName(DBGrid4.Columns[3].FieldName).AsString;
xls.cells(i,5):=FieldByName(DBGrid4.Columns[4].FieldName).AsString ;
xls.cells(i,6):=FieldByName(DBGrid4.Columns[5].FieldName).AsString ;
xls.cells(i,7):=FieldByName(DBGrid4.Columns[6].FieldName).AsString ;
xls.cells(i,8):=FieldByName(DBGrid4.Columns[7].FieldName).AsFloat ;
xls.cells(i,9):=FieldByName(DBGrid4.Columns[8].FieldName).AsInteger ;
//画加框线
for j:=1 to 4 do
xls.Range['A'+intToStr(i)+':I'+intToStr(i)].Borders[j].Weight:=2 ;
inc(i); //递增+1
next; //下一条数据
end;
end;
//保存EXCEL表格
if not xls.ActiveWorkBook.Saved then
xls.ActiveWorkBook.SaveAs(fn);
SetForegroundWindow(Application.Handle); //本语句是防止软件窗体被其它窗体覆盖
MsgBox(sMsgExportSucceed,sTitleHint,0);
// xls.quit; //退出EXCEL程序
end;
procedure TFrmStat.BitBtn17Click(Sender: TObject);
var
fn:string;
i,j:integer;
xls:OleVariant;
begin
if SaveDialog1.Execute then
fn:=SaveDialog1.FileName;
if trim(fn)='' then exit;
if (Dm_Wjckgl.ADOQryMonthSumup.Active =false) or
(DM_Wjckgl.ADOQryMonthSumup.RecordCount =0) then
begin
msgbox(sMsgNothingError,sTitleError,1);
exit;
end;
try
xls:=CreateOleObject('Excel.Application'); //调用 Excel
except
Msgbox(sMsgNotInstallExcel,sTitleError,1);
exit;
end;
xls.WorkBooks.add; //增加一个表
xls.Visible:=true; //可见
xls.Caption:='调用 EXCEL 导出个人领取统计表';
//以下为设置EXCEL各列的宽度
xls.Columns[1].ColumnWidth:=10;
xls.Columns[2].ColumnWidth:=15;
xls.Columns[3].ColumnWidth:=15;
xls.Columns[4].ColumnWidth:=15;
xls.Columns[5].ColumnWidth:=5;
xls.Columns[6].ColumnWidth:=8;
xls.Columns[7].ColumnWidth:=8;
xls.Columns[8].ColumnWidth:=8;
xls.Columns[9].ColumnWidth:=8;
xls.Columns[10].ColumnWidth:=8;
xls.Cells(1,1):='[月结存统计表]';
//画加框线 1-左 2-右 3-顶 4-底 5-斜( \ ) 6-斜( / )
for j:=1 to 4 do
xls.Range['A1:J1'].Borders[j].Weight:=2 ;
xls.Cells(1,6):='数据导出日期:'+DateToStr(now);
xls.Range['A1:J1'].Interior.ColorIndex := 37; //37 为天蓝色
//写入标题栏
for i:=1 to DBGrid5.FieldCount do
begin
xls.Cells[2,i].Value:=DBGrid5.Columns[i-1].Title.Caption ;
end;
xls.Range['A2:J2'].Interior.ColorIndex := 15; //15为灰色
//画加框线
for j:=1 to 4 do
xls.Range['A2:J2'].Borders[j].Weight:=2 ;
i:=3 ; //将循环写入数据,从第3行开始写入数据
with DM_Wjckgl.ADOQryMonthSumup do
begin
first; //第一条
while not eof do
begin
xls.cells(i,1):=FieldByName(DBGrid5.Columns[0].FieldName).AsString ;
xls.cells(i,2):=FieldByName(DBGrid5.Columns[1].FieldName).AsString ;
xls.cells(i,3):=FieldByName(DBGrid5.Columns[2].FieldName).AsString ;
xls.cells(i,4):=FieldByName(DBGrid5.Columns[3].FieldName).AsString;
xls.cells(i,5):=FieldByName(DBGrid5.Columns[4].FieldName).AsString ;
xls.cells(i,6):=FieldByName(DBGrid5.Columns[5].FieldName).AsFloat ;
xls.cells(i,7):=FieldByName(DBGrid5.Columns[6].FieldName).AsString ;
xls.cells(i,8):=FieldByName(DBGrid5.Columns[7].FieldName).AsString ;
xls.cells(i,9):=FieldByName(DBGrid5.Columns[8].FieldName).AsInteger ;
xls.cells(i,10):=FieldByName(DBGrid5.Columns[9].FieldName).AsInteger ;
//画加框线
for j:=1 to 4 do
xls.Range['A'+intToStr(i)+':J'+intToStr(i)].Borders[j].Weight:=2 ;
inc(i); //递增+1
next; //下一条数据
end;
end;
//保存EXCEL表格
if not xls.ActiveWorkBook.Saved then
xls.ActiveWorkBook.SaveAs(fn);
SetForegroundWindow(Application.Handle); //本语句是防止软件窗体被其它窗体覆盖
MsgBox(sMsgExportSucceed,sTitleHint,0);
// xls.quit; //退出EXCEL程序
end;
function TFrmStat.IsExistMonthStat(sYm: string): boolean;
begin
with DM_Wjckgl.ADOQry do
begin
close;
sql.Text :='select 年月 from 月结存表 where 年月=:pYm';
parameters.ParamByName('pYm').Value :=sYm;
open;
if RecordCount=0 then Result:=false else Result:=true;
close;
end;
end;
procedure TFrmStat.DeleteExistMonthStat(sYm: string);
begin
with DM_Wjckgl.ADOQry do
begin
close;
sql.Text :='Delete from 月结存表 where 年月=:pYm';
parameters.ParamByName('pYm').Value :=sYm;
execsql;
end;
end;
procedure TFrmStat.BitBtn4Click(Sender: TObject);
begin
FrInStat.FindObject('Memo13').Memo.Text :='打印日期:'+DateToStr(Now);
frDBDataSet1.DataSet :=DM_Wjckgl.ADOQryInStat;
FrInStat.ShowReport;
end;
procedure TFrmStat.BitBtn7Click(Sender: TObject);
begin
FrOutStat.FindObject('Memo13').Memo.Text :='打印日期:'+DateToStr(Now);
frDBDataSet1.DataSet :=DM_Wjckgl.ADOQryOutStat;
FrOutStat.ShowReport;
end;
procedure TFrmStat.BitBtn11Click(Sender: TObject);
begin
FrOutDept.FindObject('Memo13').Memo.Text :='打印日期:'+DateToStr(Now);
frDBDataSet1.DataSet :=DM_Wjckgl.ADOQryOutDept;
FrOutDept.ShowReport;
end;
procedure TFrmStat.BitBtn19Click(Sender: TObject);
begin
FrMonthSumup.FindObject('Memo13').Memo.Text :='打印日期:'+DateToStr(Now);
frDBDataSet1.DataSet :=DM_Wjckgl.ADOQryMonthSumup;
FrMonthSumup.ShowReport;
end;
procedure TFrmStat.CmbYearChange(Sender: TObject);
var
sYm:string;
begin
sYm:=CmbYear.Text +'年'+CmbMonth.Text +'月';
with DM_Wjckgl.ADOQryMonthSumup do
begin
close;
sql.Text :='select 年月,物品种类,物品名称.物品名称,月结存表.物品名称,规格,单位,单价,'+
'上月结存,本月进仓数,本月出仓数,本月结存 '+
'from 物品名称,月结存表 '+
'where 物品名称.物品名称=月结存表.物品名称 and 年月=:pYm '+
'order by 年月';
parameters.ParamByName('pYm').Value :=sYm;
open;
end;
end;
procedure TFrmStat.TabSheet5Show(Sender: TObject);
begin
with DM_Wjckgl.ADOQryMonthSumup do
begin
close;
open;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -