📄 bxpzlr.pas
字号:
if bxpz_bjzt <> '' then
SaveButton.Enabled := True;
end;
procedure Tfrmbxpzlr.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
frmbxpzlr := nil;
end;
procedure Tfrmbxpzlr.bxryDBEditEhEditButtons0Click(Sender: TObject;
var Handled: Boolean);
begin
selecttext1 := '';
selecttext2 := '';
frmygzlxz := Tfrmygzlxz.Create(Self);
with frmygzlxz do
begin
fwrycx_data := '';
ShowModal;
end;
if selecttext1 <> '' then
begin
bxpztable.FieldByName('pz_rybh').AsString := selecttext1;
bxryDBEditEh.Text := selecttext2;
end
else
begin
//bxryDBEditEh.SetFocus;
end;
end;
procedure Tfrmbxpzlr.FormShow(Sender: TObject);
begin
SaveButton.Enabled := False;
DBNavigator.OnClick(Sender, nbLast);
end;
procedure Tfrmbxpzlr.FormCreate(Sender: TObject);
begin
bxpz_bjzt := '';
if bxpztable.Active = False then bxpztable.Active := True;
bxpztable.Last;
end;
procedure Tfrmbxpzlr.DBNavigatorBeforeAction(Sender: TObject;
Button: TNavigateBtn);
var
lsbl_save: Boolean;
begin
if SaveButton.Enabled = True then
begin
BUMessageBox.Text := '数据已修改,是否保存修改';
BUMessageBox.style := bsYesNo;
BUMessageBox.Display := bdIconQuestion;
if BUMessageBox.Execute = brYes then
begin
lsbl_save := dataverify('111');
if lsbl_save = True then
begin
lsbl_save := datasave();
if lsbl_save = True then
begin
ygdatable.CancelUpdates;
bmmltable.CancelUpdates;
SaveButton.Enabled := False;
bxpz_bjzt := '';
Editenabled(False);
end;
end;
end
else
begin
bxpztable.CancelUpdates;
bxpzmxtable.CancelUpdates;
end;
end;
bxpz_bjzt := '';
end;
procedure Tfrmbxpzlr.BxbmDBEditEhExit(Sender: TObject);
var
lsbl_bxbmcxdata, lsbl_bxbm: string;
begin
if bxpz_bjzt <> '' then
begin
lsbl_bxbm := Trim(bxbmDBEditEh.Text);
if lsbl_bxbm <> '' then
begin
case Getbmfunction(lsbl_bxbm) of
0: lsbl_bxbmcxdata := '';
1:
begin
bxpztable.FieldByName('pz_bmbh').AsString := selecttext1;
Exit;
end;
2: lsbl_bxbmcxdata := lsbl_bxbm;
end;
selecttext1 := '';
selecttext2 := '';
frmbmmlcx := Tfrmbmmlcx.Create(Self);
with frmbmmlcx do
begin
bmmlcx_data := lsbl_bxbmcxdata;
ShowModal;
end;
if selecttext1 <> '' then
begin
bxpztable.FieldByName('pz_bmbh').AsString := selecttext1;
end
else
begin
bxbmDBEditEh.SetFocus;
Exit;
end;
end
else
begin
BUMessageBox.Text := '【报销部门】不能为空,请选择【报销部门】';
BUMessageBox.style := bsOk;
BUMessageBox.Display := bdIconWarning;
BUMessageBox.Execute;
bxbmDBEditEh.SetFocus;
Exit;
end;
end;
end;
function Tfrmbxpzlr.dataverify(Verify_lx: string): Boolean; //数据校验函数
begin
if (copy(Verify_lx, 1, 1) = '1') then
begin
if BxbmDBEditEh.Text = '' then
begin
BUMessageBox.Text := '【报销部门】不能为空,请选择【报销部门】';
BUMessageBox.style := bsOk;
BUMessageBox.Display := bdIconWarning;
BUMessageBox.Execute;
bxbmDBEditEh.SetFocus;
Result := False;
Exit;
end;
selecttext1 := Trim(bxbmDBEditEh.Text); //将部门名称赋值全局临时变量selecttext1
with cxQuery do //下面进行部门名称的查询,如果没有找到则不能进行数据保存
begin
SQL.clear;
SQL.Add('select Count(*) as cxbmsl from bmmlk where Trim(bm_mc)=:lsbl_bmmc');
ParamByName('lsbl_bmmc').AsString := selecttext1;
Prepare;
open;
if FieldByName('cxbmsl').AsInteger = 0 then
begin
Close;
BUMessageBox.Text := '没有找到报销部门【' + selecttext1 + '】,请重新选择';
BUMessageBox.style := bsOk;
BUMessageBox.Display := bdIconWarning;
BUMessageBox.Execute;
bxbmDBEditEh.SetFocus;
Result := False;
Exit;
end;
Close;
end;
end;
if (copy(Verify_lx, 2, 1) = '1') then
begin
if BxryDBEditEh.Text = '' then
begin
BUMessageBox.Text := '【报销人员】不能为空,请选择【报销人员】';
BUMessageBox.style := bsOk;
BUMessageBox.Display := bdIconWarning;
BUMessageBox.Execute;
bxryDBEditEh.SetFocus;
Result := False;
Exit;
end;
selecttext1 := Trim(bxryDBEditEh.Text); //将报销人员姓名赋值全局临时变量selecttext1
with cxQuery do //下面进行报销人员姓名的查询,如果没有找到则不能进行数据保存
begin
SQL.clear;
SQL.Add('select Count(*) as cxrysl from ygdasjk where Trim(yg_xm)=:lsbl_ryxm');
ParamByName('lsbl_ryxm').AsString := selecttext1;
Prepare;
open;
if FieldByName('cxrysl').AsInteger = 0 then
begin
Close;
BUMessageBox.Text := '没有找到报销人员【' + selecttext1 + '】,请重新选择';
BUMessageBox.style := bsOk;
BUMessageBox.Display := bdIconWarning;
BUMessageBox.Execute;
bxryDBEditEh.SetFocus;
Result := False;
Exit;
end;
Close;
end;
end;
if (copy(Verify_lx, 3, 1) = '1') then
begin
if BxrqDBEditEh.Text = '' then
begin
BUMessageBox.Text := '【报销日期】不能为空,请重新输入';
BUMessageBox.style := bsOk;
BUMessageBox.Display := bdIconWarning;
BUMessageBox.Execute;
bxrqDBEditEh.SetFocus;
Result := False;
Exit;
end;
end;
Result := True;
end;
function Tfrmbxpzlr.datasave: Boolean; //数据保存函数
var
lsbl_pzbh: string;
lsbl_jlbh: Integer;
begin
try
if bxpz_bjzt = 'New' then
begin
lsbl_pzbh := Getmaxbxpzdh();
bxpztable.FieldByName('pz_bh').AsString := lsbl_pzbh;
end
else
lsbl_pzbh := bxpztable.FieldByName('pz_bh').AsString;
bxpztable.Post;
bxpztable.ApplyUpdates;
bxpztable.CommitUpdates;
lsbl_jlbh := 0;
with bxpzmxtable do
begin
First;
while not eof do
begin
Edit;
lsbl_jlbh := lsbl_jlbh + 1;
FieldByName('pz_bh').AsString := lsbl_pzbh;
FieldByName('pz_jlbh').AsInteger := lsbl_jlbh;
First;
end;
end;
bxpzmxtable.ApplyUpdates;
bxpzmxtable.CommitUpdates;
Result := True;
except
BUMessageBox.Text := '数据保存失败';
BUMessageBox.style := bsOk;
BUMessageBox.Display := bdIconError;
BUMessageBox.Execute;
Result := False;
end;
end;
function Tfrmbxpzlr.Getmaxbxpzdh: string; //凭证单编号生成器;
var
lsbl_pzbh: string;
lsbl_bhcd: Integer;
begin
with cxQuery do
begin
SQL.Clear;
SQL.Add('select max(pz_bh) as maxpzbh from bxpzsjk');
Prepare;
open;
lsbl_pzbh := FieldByName('maxpzbh').AsString;
if lsbl_pzbh <> '' then
begin
lsbl_bhcd := Length(lsbl_pzbh);
lsbl_pzbh := Inttostr(strtoint(lsbl_pzbh) + 1);
lsbl_pzbh := copy('0000000000', 1, lsbl_bhcd - length(lsbl_pzbh)) + lsbl_pzbh;
end
else
begin
lsbl_pzbh := '00000001';
end;
Close;
end;
Result := lsbl_pzbh;
end;
function Tfrmbxpzlr.DataSummary(Summarylx: string): string; //合计统计函数
var
sbookmark: TBookMark;
summarycount: Integer;
summaryje: Currency;
begin
if Summarylx = 'Count' then
begin
summarycount := 0;
with bxpzmxtable do
begin
sbookmark := GetBookMark;
disablecontrols;
First;
while not eof do
begin
summarycount := summarycount + 1;
Next;
end;
gotobookmark(sbookmark);
freebookmark(sbookmark);
enablecontrols;
Result := inttostr(summarycount);
end;
end
else
begin
summaryje := 0.00;
with bxpzmxtable do
begin
sbookmark := GetBookmark;
disablecontrols;
First;
while not eof do
begin
summaryje := summaryje + FieldByName('pz_bxje').AsCurrency;
Next;
end;
gotobookmark(sbookmark);
freebookmark(sbookmark);
enablecontrols;
Result := FormatFloat('0.00', summaryje);
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -