⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stat.pas

📁 文具仓库管理系统2.0(源码)delphi+access main in Mainmain.pas {FrmMain}, Login in LoginLogin.pas {FrmLogin},
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    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 + -