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

📄 check.pas

📁 家庭收支管理
💻 PAS
字号:
unit check;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, GridsEh, DBGridEh;

type
  TCheckForm = class(TForm)
    GroupBox1: TGroupBox;
    DBGridEh: TDBGridEh;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    ProgressBar1: TProgressBar;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure WMNCHitTest(var Msg:TMessage);message WM_NCHITTEST;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  CheckForm: TCheckForm;

implementation

{$R *.dfm}

uses DataModule;

procedure TCheckForm.WMNCHitTest(var Msg:TMessage);
begin
  inherited;
  Msg.Result:=HTCLIENT;
end;

procedure TCheckForm.Button1Click(Sender: TObject);
begin
  progressbar1.Min:=0;
  progressbar1.Step:=1;
  progressbar1.Position:=0;
  DataForm.ABSQuery1.SQL.Clear;
  DataForm.ABSQuery1.SQL.Add('Create Table MEMORY lsk (Account String(10),AccountName String(30),Present Float,Calculate Float,chae Float)');
  DataForm.ABSQuery1.ExecSQL;
  DataForm.ABSQuery1.SQL.Clear;
  DataForm.ABSQuery1.SQL.Add('select Account,AccountName,Original,Present from zhanghu');
  DataForm.ABSQuery1.Open;
  if DataForm.ABSQuery1.RecordCount=0 then
    application.MessageBox('目前不存在核算帐户,不需要数据一致性检查!','提示信息',mb_ok+MB_ICONINFORMATION)
  else begin
    ProgressBar1.Max:=DataForm.ABSQuery1.RecordCount;
    DataForm.ABSQuery2.SQL.Clear;
    DataForm.ABSQuery2.SQL.Add('insert into MEMORY lsk (Account,AccountName,Present,Calculate) values (:cs1,:cs2,:cs3,:cs4)');
    DataForm.ABSQuery3.SQL.Clear;
    DataForm.ABSQuery3.SQL.Add('select Account,sum(income) as income,sum(payout) as payout from szData where Account=:cs group by Account');
    DataForm.ABSQuery1.First;
    while not DataForm.ABSQuery1.Eof do
    begin
      DataForm.ABSQuery3.Close;
      DataForm.ABSQuery3.ParamByName('cs').AsString:=DataForm.ABSQuery1.FieldByName('Account').AsString;
      DataForm.ABSQuery3.Open;
      DataForm.ABSQuery2.ParamByName('cs1').AsString:=DataForm.ABSQuery1.FieldByName('Account').AsString;
      DataForm.ABSQuery2.ParamByName('cs2').AsString:=DataForm.ABSQuery1.FieldByName('AccountName').AsString;
      DataForm.ABSQuery2.ParamByName('cs3').AsFloat:=DataForm.ABSQuery1.FieldByName('Present').AsFloat;
      DataForm.ABSQuery2.ParamByName('cs4').AsFloat:=DataForm.ABSQuery1.FieldByName('Original').AsFloat+DataForm.ABSQuery3.FieldByName('Income').AsFloat-DataForm.ABSQuery3.FieldByName('Payout').AsFloat;
      DataForm.ABSQuery2.ExecSQL;
      ProgressBar1.StepIt;
      DataForm.ABSQuery1.Next;
    end;
    DataForm.ABSQuery1.SQL.Clear;
    DataForm.ABSQuery1.SQL.Add('update MEMORY lsk set chae=Calculate-Present');
    DataForm.ABSQuery1.ExecSQL;
    DataForm.CheckQuery.SQL.Clear;
    DataForm.CheckQuery.SQL.Add('select * from MEMORY lsk');
    DataForm.CheckQuery.Open;
    DataForm.ABSQuery1.SQL.Clear;
    DataForm.ABSQuery1.SQL.Add('Drop Table MEMORY lsk');
    DataForm.ABSQuery1.ExecSQL;
  end;
end;

procedure TCheckForm.Button2Click(Sender: TObject);
begin
  close
end;

procedure TCheckForm.FormCreate(Sender: TObject);
begin
  DataForm.DataSource.DataSet:=DataForm.CheckQuery;
  DBGridEh.DataSource:=DataForm.DataSource;
end;

procedure TCheckForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  DataForm.DataSource.DataSet:=nil;
  DBGridEh.DataSource:=nil;
  Action:=CaFree;
end;

end.

⌨️ 快捷键说明

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