📄 unitpypk.pas
字号:
else
begin
Parameters.ParamByName('@kw').value:=listkw[cbbkw.itemindex];//库位代码
end;
ExecProc;
end;
//---------------------------------------
if isAdd then isAdd:=false;
if isMod then isMod:=false;
Panel2.Enabled:=false;
btnadd.enabled:=true;
btnadd.SetFocus;
btnErase.enabled:=true;
btnMod.enabled:=true;
btnSave.enabled:=false;
btnCancel.enabled:=false;
Dm.qry_PyPk.EnableControls;
Dm.qry_PyPk.close;
Dm.qry_PyPk.open;
end;
procedure TfrmPyPk.btncancelClick(Sender: TObject);
begin
if isAdd then isadd:=false;
if isMod then isMod:=false;
dm.qry_PyPk.enableControls;
if btnCancel.caption='取消(&C)' then
begin
panel2.enabled:=false;
edtStockNum.Enabled:=false;
edtStockZJ.Enabled:=false;
btnMx.Enabled:=true;
btnGz.Enabled:=true;
btnAdd.enabled:=true;
btnErase.enabled:=true;
btnMod.enabled:=true;
btnSave.enabled:=false;
btnCancel.enabled:=false;
end;
DM.qry_PyPk.EnableControls;
DM.qry_PyPk.close;
DM.qry_PyPk.open;
end;
procedure TfrmPyPk.cbbKfExit(Sender: TObject);
var
i:integer;
begin
if cbbkf.text='' then begin
cbbKw.items.Clear;
cbbKw.Text:='';
exit;
end;
if btnCancel.Focused then
begin
btnCancel.onclick(sender);
exit;
end;
if btnClose.focused then
begin
btnClose.OnClick(Sender);
exit;
end;
//
with ADOQuery_sql do
begin
close;
sql.clear;
sql.add('select * from Storeposition where Storeroom_zip='+quotedstr(copy(cbbkf.text,1,2)));
sql.add('order by StorePlace_zip');
open;
setlength(listKw,recordcount);
cbbKw.Items.clear;
for i:=0 to recordcount - 1 do
begin
listKw[i]:=fieldbyname('Storeplace_zip').asstring;
cbbKw.items.Add(listKw[i]+' '+fieldbyname('Storeplace_name').asstring);
next;
end;
end;
end;
procedure TfrmPyPk.edtPddhKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
key:=#0;
perform(cm_dialogkey,vk_tab,0);
end;
end;
procedure TfrmPyPk.edtBzKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
key:=#0;
btnSave.setfocus;
end;
end;
procedure TfrmPyPk.edtWlbmExit(Sender: TObject);
begin
if btnCancel.Focused then
begin
btnCancel.onclick(sender);
exit;
end;
if btnClose.focused then
begin
btnClose.OnClick(Sender);
exit;
end;
//
with ADOQuery_sql do
begin
close;
sql.Clear;
sql.Add('select * from mate_basic where mate_code='''+trim(edtWlbm.text)+''' ');
Open;
end;
if ADOQuery_sql.recordcount>0 then
begin
edtWlmc.text:=trim(ADOQuery_sql.fieldByName('Mate_Name').asstring);
edtType.text:=trim(ADOQuery_sql.fieldByName('Mate_Type').asstring);
edtStoreNum.text:=trim(ADOQuery_sql.fieldByName('Stoc_Amount').asstring);
end else
begin
application.messagebox(' 基础物料中不存在该物料编码, '#13#10'请录入该数据!','提示',mb_ok+mb_iconwarning);
edtWlbm.text:='';
edtWlbm.setfocus;
exit;
end;
end;
procedure TfrmPyPk.sbtncodeClick(Sender: TObject);
begin
frmSelectCodeNameType:=TfrmSelectCodeNameType.create(self);
frmSelectCodeNameType.show;
end;
procedure TfrmPyPk.dsPyPkDataChange(Sender: TObject; Field: TField);
var
str:string;
i:integer;
begin
//----------Gys -----------Dept_id
edtPddh.text:=dm.qry_PyPk.fieldbyname('Pd_Bill').asstring;
edtwlbm.text:=dm.qry_PyPk.fieldbyname('Mate_Code').asstring;
edtWlmc.text:=dm.qry_PyPk.fieldbyname('Mate_Name').asstring;
edtType.text:=dm.qry_PyPk.fieldbyname('Mate_Type').asstring;
edtStoreNum.text:=dm.qry_PyPk.fieldbyname('Stoc_Amount').asstring;
if dm.qry_PyPk.fieldbyname('Pd_date').IsNull then
dtpPd.Date:=now
else
dtpPd.date:=dm.qry_PyPk.fieldbyname('Pd_date').asdatetime;
edtNum.text:=dm.qry_PyPk.fieldbyname('Pd_Amount').asstring;
edtYkNum.text:=dm.qry_PyPk.fieldbyname('Yk_Amount').asstring;
edtPdr.text:=dm.qry_PyPk.fieldbyname('pd_man').asstring;
edtZdr.text:=dm.qry_PyPk.fieldbyname('Oper_id').asstring;
edtBz.text:=dm.qry_PyPk.fieldbyname('Pd_Memo').asstring;
//---------盘点类别-----------------------
cbbPd.itemindex:=-1;
str:=trim(DM.qry_PyPk.FieldByName('Pd_ClassNo').asstring);
if high(listPd)>=0 then
begin
for i:=0 to high(listPd) do
begin
if listPd[i]=str then
begin
cbbPd.itemindex:=i;
break;
end;
end;
end;
//---------部门-----------------------
cbbDept.itemindex:=-1;
str:=DM.qry_PyPk.FieldByName('Dept_id').asstring;
if high(listDept)>=0 then
begin
for i:=0 to high(listDept) do
begin
if listDept[i]=str then
begin
cbbDept.itemindex:=i;
break;
end;
end;
end;
//---------库房-----------------------
cbbKf.itemindex:=-1;
str:=DM.qry_PyPk.FieldByName('KfNo').asstring;
if high(listKf)>=0 then
begin
for i:=0 to high(listKf) do
begin
if listKf[i]=str then
begin
cbbKf.itemindex:=i;
break;
end;
end;
end;
//---------库位-----------------------
cbbKw.itemindex:=-1;
str:=DM.qry_PyPk.FieldByName('KwNo').asstring;
if high(listKw)>=0 then
begin
for i:=0 to high(listKw) do
begin
if listKw[i]=str then
begin
cbbKw.itemindex:=i;
break;
end;
end;
end;
end;
procedure TfrmPyPk.FormShow(Sender: TObject);
var
str:string;
begin
str:=' select a.Pd_Bill,a.Pd_ClassNo,a.Pd_date, '+
' a.mate_code,b.mate_name,b.mate_type,a.Dept_id, '+
' a.KfNo,a.KwNo,b.Stoc_Amount,a.Pd_Amount,a.Yk_Amount,a.Pd_Post,a.pd_man,a.Oper_id,a.Pd_Memo '+
' from Mate_PyPk a '+
' left outer join mate_basic b on a.mate_code=b.mate_code ';
with dm.qry_PyPk do
begin
close;
sql.clear;
sql.add(str);
open;
end;
end;
procedure TfrmPyPk.edtNumExit(Sender: TObject);
begin
edtYkNum.text:=floattostr(strtofloat(edtStoreNum.text)-strtofloat(edtNum.text));
end;
procedure TfrmPyPk.btnGzClick(Sender: TObject);
var
seltotal,i:integer;
myprocess:Tfrmprocess;
//strdjh:string;
begin
//根据入库单号、入库标志可直接判断出该单据是否已经过帐
with dm.qry_PyPkGz do
begin
close;
sql.Clear;
sql.Add('select * from mate_PyPk where (Pd_bill='''+trim(edtPddh.text)+''') and (pd_post=''Y'') ');
open;
end;
if dm.qry_PyPkGz.recordcount>0 then
begin
application.MessageBox('该单据已经过帐!','警告',mb_ok+mb_iconwarning);
exit;
end else //下面是没有过帐
begin
//用1个存储过程进行过帐,更新对应的入库单号的数量、核算价格、和入库单的过帐标志
if not btnadd.Enabled then
begin
application.MessageBox('注意:'+#13#10+' 请先保存或取消当前未完成的工作!','警告',mb_ok+mb_iconwarning);
exit;
end;
seltotal:=DBGrid1.SelectedRows.Count;
if seltotal=0 then
begin
application.MessageBox('注意:'+#13#10+' 请先选择要过帐的单据记录!','提示',mb_ok+mb_iconinformation);
exit;
end else//选项不为空
begin
//显示进度条
myprocess:=Tfrmprocess.create(application);
try
myprocess.show;
myprocess.setposition(0);
//获得选中的记录
for i:=0 to seltotal - 1 do
begin
DM.qry_PyPk.Bookmark:=DBGrid1.SelectedRows.Items[i];
//-------------------过帐--------------------------
with dm.sp_PyPkGz do
begin
dm.sp_PyPkGz.ProcedureName:='Pd_gz;1';
Parameters.Refresh;
Parameters.ParamByName('@pddh').value:=edtpddh.Text;
ExecProc;
end;
myprocess.closeprocess;
DBGrid1.SelectedRows.Clear;
DM.qry_PyPk.close;
DM.qry_PyPk.open;
application.MessageBox('所选入库单已全部过帐成功!!','提示',mb_ok+mb_iconinformation);
end ;//end for
finally
myprocess.Free;
end; //end try
end;
end;
dm.qry_PyPk.Close;
dm.qry_PyPk.Open;
end;
procedure TfrmPyPk.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
//未盘点的内容显示红色
if trim(dm.qry_PyPk.FieldByName('Pd_Post').AsString)='N' then
begin
DBGrid1.Canvas.Font.Color:=clGreen;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -