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

📄 ufrmreport.pas

📁 水电管理系统,介绍了水电管理系统的基本结构和基本功能,对进行这方面的开发人员有一定帮助
💻 PAS
字号:
unit ufrmReport;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Grids, DBGridEh, ComCtrls, Buttons, ExtCtrls, PrnDbgeh, Db,
  ADODB, XPMenu;

type
  TfrmReport = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    DateTimePicker1: TDateTimePicker;
    DateTimePicker2: TDateTimePicker;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    DBGDWorkshop: TDBGridEh;
    TabSheet2: TTabSheet;
    Panel2: TPanel;
    Label3: TLabel;
    ComboBox1: TComboBox;
    BitBtn5: TBitBtn;
    DBGridEh1: TDBGridEh;
    TabSheet3: TTabSheet;
    DBGridEh2: TDBGridEh;
    XPMenu1: TXPMenu;
    SaveDialog1: TSaveDialog;
    DataSource1: TDataSource;
    ADOQuery1: TADOQuery;
    DataSource2: TDataSource;
    ADOQuery2: TADOQuery;
    DataSource3: TDataSource;
    ADOQuery3: TADOQuery;
    PrintDBGridEh1: TPrintDBGridEh;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
  procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure DateTimePicker1CloseUp(Sender: TObject);
    procedure DateTimePicker2Change(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    TempQuery: TADOQuery;
  public
    { Public declarations }
    StartTime,
    EndTime: TDateTime;

    Procedure OpenDataSet(StrSQL: String; Temp: TADOQuery);   //打开数据集
    Procedure GetAllWorkshop;   //车间列表

    Function GetWorkshopID(WorkshopName: String): Integer;  //取车间ID

  end;

var
  frmReport: TfrmReport;
implementation

uses UCommon, uConst;


{$R *.DFM}

procedure TfrmReport.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action := caFree;
end;

procedure TfrmReport.FormDestroy(Sender: TObject);
begin
  TempQuery.Free;
  ADOQuery1.Free;
  ADOQuery2.Free;
  
  frmReport := nil;
end;

procedure TfrmReport.BitBtn2Click(Sender: TObject);
begin
  inherited;
  PrintDBGridEh1.PageHeader.CenterText.Text := PageControl1.ActivePage.Caption;
  PrintDBGridEh1.BeforeGridText.Text := '报表时间:自 '+ DateToStr(DateTimePicker1.Date)
                                      + ' 至 ' + DateToStr(DateTimePicker2.Date);
  case PageControl1.ActivePageIndex of
  0:
    begin
      PrintDBGridEh1.DBGridEh := DBGDWorkshop;

    end;
  1:
    begin
      PrintDBGridEh1.DBGridEh := DBGridEh1;
      PrintDBGridEh1.BeforeGridText.Text := '车间:' + ComboBox1.Items[ComboBox1.ItemIndex] +
                                            '   报表时间:自 '+ DateToStr(DateTimePicker1.Date) + 
                                            ' 至 ' + DateToStr(DateTimePicker2.Date);
    end;
  2:
    begin
      PrintDBGridEh1.DBGridEh := DBGridEh2;
    end;
  end;
  
  PrintDBGridEh1.Preview;
end;

procedure TfrmReport.BitBtn4Click(Sender: TObject);
begin
  Close;
end;

procedure TfrmReport.FormShow(Sender: TObject);
begin
  TempQuery := TADOQuery.Create(nil);
  Sdgl.SetConnectString(TempQuery);
  //车间列表
  GetAllWorkshop;

  DateTimePicker1.Date := Date;
  DateTimePicker2.Date := Date;
end;

procedure TfrmReport.BitBtn1Click(Sender: TObject);
var
  strSQL:   String;
  strSQL_1: String;
begin
  StartTime := DateTimePicker1.Date;
  EndTime   := DateTimePicker2.Date;

  //处理只取两位年的情况
  if Pos(DateToStr(StartTime), '-') = 3 then  //短时期格式
  begin
    strSQL := AllTotalSQL_Before + Format(AllTotalSQL_After, ['20' + DateToStr(StartTime), '20' + DateToStr(EndTime)]);
    strSQL_1 := Format(WorkshopSQLDatia, ['20' + DateToStr(StartTime), '20' + DateToStr(EndTime)]);
  end
  else
  begin
    strSQL := AllTotalSQL_Before + Format(AllTotalSQL_After, [DateToStr(StartTime), DateToStr(EndTime)]);
    strSQL_1 := Format(WorkshopSQLDatia, [DateToStr(StartTime), DateToStr(EndTime)]);
  end;

  OpenDataSet(strSQL, ADOQuery1);
  OpenDataSet(strSQL_1, ADOQuery3);
  
  If PageControl1.ActivePage <> TabSheet1 Then
    PageControl1.ActivePage := TabSheet1;
  MessageBox(Handle, '全部数据汇总完成!', '提示', MB_ICONINFORMATION or MB_OK);
end;

procedure TfrmReport.DateTimePicker1CloseUp(Sender: TObject);
begin
  //DateTimePicker2.Date := DateTimePicker1.Date;
end;

procedure TfrmReport.DateTimePicker2Change(Sender: TObject);
begin
  StartTime := DateTimePicker1.Date;
  EndTime := DateTimePicker2.Date;
  If EndTime < StartTime Then
  Begin
    ShowMessage('终止日期不能小于超始日期,请重新设置!');
    DateTimePicker2.Date := StartTime;
    Exit;
  End;
end;

procedure TfrmReport.OpenDataSet(StrSQL: String;
  Temp: TADOQuery);
begin
  With Temp Do
  Begin
    Close;
    SQL.Clear;
    SQL.Text := StrSQL;
    Try
      Open;
    Except
      ShowMessage('数据集打开错!不能生成报表');
      Exit;
    End;
  End;
end;

procedure TfrmReport.GetAllWorkshop;
var
  strSelectWorkshop: String;
begin
  strSelectWorkshop := 'Select WrokShopName from WorkShop Where WorkShopLevel = 2';
  OpenDataSet(strSelectWorkshop, TempQuery);
  TempQuery.First;
  while Not TempQuery.Eof Do
  Begin
    ComboBox1.Items.Add(TempQuery.FieldByName('WrokShopName').AsString);
    TempQuery.Next;
  End;
end;

function TfrmReport.GetWorkshopID(
  WorkshopName: String): Integer;
var
  strSQL: String;
begin
  Result := 0;

  strSQL := 'Select WrokShopID from Workshop where WrokShopName = ''' + WorkshopName + '''';
  OpenDataSet(strSQL, TempQuery);
  Result := TempQuery.FieldByName('WrokShopID').AsInteger;
end;

procedure TfrmReport.BitBtn5Click(Sender: TObject);
var
  WorkshopName: String;
  WorkshopID: Integer;
  strTotalString: String;
begin
  WorkshopName := Trim(ComboBox1.Items[ComboBox1.ItemIndex]);
  If WorkshopName = '' Then
  Begin
    MessageBox (handle, '请先选择汇总车间名称!', '提示', $00000040 or MB_OK);
    Exit;
  End;

  StartTime := DateTimePicker1.Date;
  EndTime := DateTimePicker2.Date;

  WorkshopID := GetWorkshopID(WorkshopName);
  //短日期格式
  if Pos(DateToStr(StartTime), '-') = 3 then  //短时期格式
    strTotalString := AllTotalSQL_Before + Format(WorkshopTotal, ['20'+DateToStr(StartTime), '20'+DateToStr(EndTime), WorkshopID])
  else
    strTotalString := AllTotalSQL_Before + Format(WorkshopTotal, [DateToStr(StartTime), DateToStr(EndTime), WorkshopID]);

  OpenDataSet(strTotalString, ADOQuery2);
  MessageBox(Handle, pchar(WorkshopName + ' 数据汇总完成!'), '提示', MB_ICONINFORMATION or MB_OK);
end;

procedure TfrmReport.BitBtn3Click(Sender: TObject);
var
  strExpFileName: String;
begin
  if SaveDialog1.Execute then
  begin
    strExpFileName := SaveDialog1.FileName;
    if not FileExists(strExpFileName) then
      FileCreate(strExpFileName)
    else
    begin
      if MessageBox(Handle, '指定的文件已经存在,要覆盖吗', '提示',
                    MB_ICONINFORMATION or MB_YESNO) = ID_YES then
      begin
        DeleteFile(strExpFileName);
        FileCreate(strExpFileName);
        ShowMessage('系统没有提供导出功能!等下一版吧!');
        Exit;
      end;
    end;
  end; //end if SaveDialog1.Execute
end;

procedure TfrmReport.FormCreate(Sender: TObject);
begin
  //todo
  Sdgl.SetConnectString(ADOQuery1);
  Sdgl.SetConnectString(ADOQuery2);
  Sdgl.SetConnectString(ADOQuery3);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -