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

📄 outdata.pas

📁 一个很好的勤工助学管理系统
💻 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 + -