📄 startbalance.pas
字号:
unit StartBalance;
interface
uses
Windows, Graphics, Controls, Forms, DB, ADODB, SysUtils,
Dialogs, StdCtrls, ExtCtrls, SUIButton, SUIEdit,
SUIDBCtrls, SUIURLLabel, jpeg, Classes, SUIForm, Grids, DBGridEh;
type
TFrmStartBalance = class(TForm)
suiForm1: TsuiForm;
btnCancel: TsuiButton;
btnOK: TsuiButton;
g: TDBGridEh;
DataSource1: TDataSource;
Label1: TLabel;
editState: TsuiEdit;
q: TADOQuery;
qc: TADOQuery;
btnCheck: TsuiButton;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnOKClick(Sender: TObject);
procedure gKeyPress(Sender: TObject; var Key: Char);
procedure gDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
procedure btnCheckClick(Sender: TObject);
procedure qAfterScroll(DataSet: TDataSet);
private
{ Private declarations }
public
procedure CheckBalance;
end;
var
FrmStartBalance: TFrmStartBalance;
implementation
uses DataModule;
{$R *.dfm}
procedure TFrmStartBalance.CheckBalance;
var
J,D:Currency;
begin
qc.Close;
qc.SQL.Clear;
qc.SQL.Add('select sum(Balance) as J from #TempBalance where J_D_Type=''借''');
qc.Open;
J:=qc.FieldByName('J').AsCurrency;
qc.Close;
qc.SQL.Clear;
qc.SQL.Add('select sum(Balance) as D from #TempBalance where J_D_Type=''贷''');
qc.Open;
D:=qc.FieldByName('D').AsCurrency;
qc.Close;
if J<>D then
editState.Text:='未平衡。'
else
editState.Text:='已平衡。';
end;
procedure TFrmStartBalance.FormShow(Sender: TObject);
begin
q.Connection:=DM.adoc;
qc.Connection:=DM.adoc;
q.Close;
q.SQL.Clear;
q.SQL.Add('select V_Subject.*,a.Balance into #TempBalance from V_Subject LEFT OUTER JOIN (select * from Balance where [year]='+IntToStr(DM.AccountYear)+' and [Month]='+IntToStr(DM.AccountMonth)+') as a on V_Subject.id=a.Subject_id');
q.ExecSQL;
q.Close;
q.SQL.Clear;
q.SQL.Add('select * from #TempBalance order by Code');
q.Open;
CheckBalance;
end;
procedure TFrmStartBalance.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
q.Close;
q.SQL.Clear;
q.SQL.Add('drop table #TempBalance');
q.ExecSQL;
q.Close;
end;
procedure TFrmStartBalance.btnOKClick(Sender: TObject);
var
t_q:TAdoQuery;
begin
t_q:=TAdoQuery.Create(self);
t_q.Connection:=q.Connection;
t_q.Close;
t_q.SQL.Clear;
t_q.SQL.Add('delete from Balance where [Year]='+IntToStr(DM.AccountYear)+' and [Month]='+IntToStr(DM.AccountMonth));
t_q.ExecSQL;
t_q.Close;
t_q.SQL.Clear;
t_q.SQL.Add('insert into Balance select '+IntToStr(DM.AccountYear)+' as [Year],'+IntToStr(DM.AccountMonth)+' as [Month],id as Subject,Balance from #TempBalance where Balance<>0');
t_q.ExecSQL;
t_q.Close;
t_q.Destroy;
end;
procedure TFrmStartBalance.gKeyPress(Sender: TObject; var Key: Char);
begin
if q.FieldByName('IsHasSubSubject').AsBoolean then Key:=#0;
end;
procedure TFrmStartBalance.gDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
var
oldcolor:TColor;
oldpm:TPenMode;
oldFontColor:TColor;
begin
oldpm:= g.Canvas.pen.mode;
oldcolor:= g.Canvas.Brush.color;
oldFontColor:=g.Canvas.Font.Color;
if (q.FieldByName('IsHasSubSubject').AsBoolean) then {设定变色的行的条件}
begin
g.Canvas.Brush.color:=$00E8E8E8;//RGB(233,154,240);
g.Canvas.pen.mode:=pmmask;
end;
if (Column.FieldName='Balance') and (q.FieldByName('Balance').AsCurrency<0) then
g.Canvas.Font.Color:=RGB(255,0,0);
g.DefaultDrawColumnCell (Rect,DataCol, Column, State);
g.Canvas.Brush.color:=oldcolor;
g.Canvas.pen.mode:=oldpm;
g.Canvas.Font.Color:=oldFontColor;
end;
procedure TFrmStartBalance.btnCheckClick(Sender: TObject);
begin
CheckBalance;
end;
procedure TFrmStartBalance.qAfterScroll(DataSet: TDataSet);
begin
CheckBalance;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -