?? ufrmreport.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); //打開數(shù)據(jù)集
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, '全部數(shù)據(jù)匯總完成!', '提示', 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('數(shù)據(jù)集打開錯!不能生成報表');
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 + ' 數(shù)據(jù)匯總完成!'), '提示', 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('系統(tǒng)沒有提供導出功能!等下一版吧!');
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 + -