📄 outdata.pas
字号:
unit outdata;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, CheckLst, ExtCtrls, Buttons, DB, ADODB, Grids, DBGrids,
ComCtrls;
type
Tfrm_outdata = class(TForm)
Panel1: TPanel;
CheckListBox1: TCheckListBox;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
RadioGroup1: TRadioGroup;
ADOQuery1: TADOQuery;
ADOTable1: TADOTable;
SaveDialog1: TSaveDialog;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
ProgressBar1: TProgressBar;
ADOTable2: TADOTable;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure PrintClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
procedure AllRecords;
procedure TodayRecords;
function CreateTmpTable(TmpTable:TADOTable):Integer;
{ Private declarations }
public
{ Public declarations }
end;
var
frm_outdata: Tfrm_outdata;
implementation
uses data, main, report;
{$R *.dfm}
procedure Tfrm_outdata.AllRecords;
begin
with ADOQuery1,CheckListBox1 do
begin
SQL.Clear;
SQL.Add('select * from 助学申请');
Prepared;
Open;
//////////////////////////////////
Clear;
First;
while not eof do
begin
Items.Add(Format('表号[%s] 姓名[%s]',[Fields[0].AsString,Fields[1].AsString]));
Next;
end;
end;
end;
procedure Tfrm_outdata.TodayRecords;
begin
with ADOQuery1,CheckListBox1 do
begin
SQL.Clear;
SQL.Add('select * from 助学申请 where(日期=#');
SQL.Add(DateToStr(Date));
SQL.Add('#) order by 日期');
Prepared;
Open;
//================================================
Clear;
First;
while not eof do
begin
Items.Add(Format('表号[%s] 姓名[%s]',[Fields[0].AsString,Fields[1].AsString]));
Next;
end;
end;
end;
procedure Tfrm_outdata.FormCreate(Sender: TObject);
begin
ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
MyPath+'mdb\勤工助学.mdb;Jet OLEDB:Database Password='+
MyPassW+';Persist Security Info=False';
end;
procedure Tfrm_outdata.FormShow(Sender: TObject);
begin
RadioGroup1Click(Sender);
end;
procedure Tfrm_outdata.RadioGroup1Click(Sender: TObject);
begin
case RadioGroup1.ItemIndex of
0:AllRecords;
1:TodayRecords;
end;
ProgressBar1.Max:=ADOQuery1.RecordCount;
ProgressBar1.Position:=0;
end;
procedure Tfrm_outdata.BitBtn2Click(Sender: TObject);
var
I: Integer;
begin
for I := 0 to CheckListBox1.Items.Count - 1 do
CheckListBox1.Checked[I] := True;
end;
procedure Tfrm_outdata.BitBtn3Click(Sender: TObject);
var
I: Integer;
begin
for I := 0 to CheckListBox1.Items.Count - 1 do
CheckListBox1.Checked[I] := False;
end;
{
procedure FileCopy(const SourceFileName,TargetFileName:String);
var
S,T:TFileStream;
begin
S:=TFileStream.Create(SourceFileName,fmOpenRead);
try
T:=TFileStream.Create(TargetFileName,fmOpenWrite or fmCreate);
try
T.CopyFrom(S,S.Size);
finally
T.Free;
end;
finally
S.Free;
end;
end;
}
function Tfrm_outdata.CreateTmpTable(TmpTable:TADOTable):Integer;
const
FieldConst=21;
var
i,j:Integer;
RecData:array of Variant;
procedure DeleteAllRecords(TmpTable:TADOTable);
begin
TmpTable.First;
if TmpTable.RecordCount>0 then
while not TmpTable.Eof do TmpTable.Delete;
end;
begin
SetLength(RecData,FieldConst);
DeleteAllRecords(TmpTable);
ADOQuery1.First;
j:=0;
while not ADOQuery1.Eof do
begin
Application.ProcessMessages;
if CheckListBox1.Checked[ADOQuery1.RecNo-1] then
begin
for i:=0 to FieldConst-1 do
RecData[i]:=ADOQuery1.Fields[i].AsVariant;
TmpTable.InsertRecord([RecData[0],RecData[1],RecData[2],
RecData[3],RecData[4],RecData[5],
RecData[6],RecData[7],RecData[8],
RecData[9],RecData[10],RecData[11],
RecData[12],RecData[13],RecData[14],
RecData[15],RecData[16],RecData[17],
RecData[18],RecData[19],RecData[20]]);
inc(j);
end;
ADOQuery1.Next;
ProgressBar1.Position:=ProgressBar1.Position+1;
end;
Result:=j;
end;
procedure Tfrm_outdata.BitBtn1Click(Sender: TObject);
var
i:Integer;
sFrom,sTo:string;
AnyRec:Boolean;
begin
AnyRec:=False;
for i:=0 to CheckListBox1.Count-1 do
if CheckListBox1.Checked[i] then AnyRec:=True;
if not AnyRec then
begin
MessageBox(Handle,'没有操作的记录!','信息',MB_OK or MB_ICONSTOP);
Exit;
end;
if not SaveDialog1.Execute then Exit;
//===================================================
Caption:='导出或打印记录 [正在生成记录...]';
ADOTable1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
MyPath+'mdb\导出记录.mdb;Jet OLEDB:Database Password='+
MyPassW+';Persist Security Info=False';
ADOTable1.TableName:='助学申请';
///////////////////////////////////////////
ADOTable1.Open;
i:=CreateTmpTable(ADOTable1);
ADOTable1.Close;
ADOTable1.ConnectionString:='';
///////////////////////////////////////////
sFrom:=MyPath+'mdb\导出记录.mdb';
sTo:=SaveDialog1.FileName;
Caption:='导出或打印记录 [正在拷贝文件...]';
if not CopyFile(PChar(sFrom),PChar(sTo),False) then
begin
MessageBox(Handle,'文件复制错误','错误',MB_OK or MB_ICONERROR);
exit;
end;
Application.ProcessMessages;
///////////////////////////////////////////
Caption:='导出或打印记录';
ProgressBar1.Position:=0;
MessageBox(Handle,PChar(Format('记录导出完成!共导出%d条记录。',[i])),'信息',MB_OK or MB_ICONINFORMATION);
end;
procedure Tfrm_outdata.PrintClick(Sender: TObject);
begin
ADOTable2.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
MyPath+'mdb\打印记录.mdb;Jet OLEDB:Database Password='+
MyPassW+';Persist Security Info=False';
ADOTable2.TableName:='助学申请';
///////////////////////////////////////////
ADOTable2.Open;
CreateTmpTable(ADOTable2);
if Sender=BitBtn5 then
QuickReport1.PreviewModal;
if Sender=BitBtn6 then
QuickReport1.Print;
ADOTable2.Close;
///////////////////////////////////////////
ProgressBar1.Position:=0;
end;
procedure Tfrm_outdata.FormDestroy(Sender: TObject);
begin
ADOQuery1.Close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -