📄 unitstockzz.~pas
字号:
setlength(listDept,recordcount);
setlength(listDeptName,recordcount);
cbbDept.Items.clear;
for i:=0 to recordcount - 1 do
begin
listDept[i]:=fieldbyname('Dept_id').asstring;
listDeptName[i]:=fieldbyname('Dept_name').asstring;
cbbDept.items.Add(listDept[i]+' '+listDeptName[i]);
next;
end;
//添加供应商代码
close;
sql.Clear;
sql.add('select * from GysArchives order by Gys_code');
open;
setlength(listGys,recordcount);
setlength(listGysName,recordcount);
cbbGys.Items.clear;
for i:=0 to recordcount - 1 do
begin
listGys[i]:=fieldbyname('Gys_code').asstring;
listGysName[i]:=fieldbyname('Gys_name').asstring;
cbbGys.items.Add(listGys[i]+' '+listGysName[i]);
Next;
end;
//添加库房代码
close;
sql.Clear;
sql.add('select * from StoreRoom order by Storeroom_zip');
open;
setlength(listKf,recordcount);
setlength(listKfmc,recordcount);
cbbKf.Items.clear;
for i:=0 to recordcount - 1 do
begin
listKf[i]:=fieldbyname('Storeroom_zip').asstring;
listKfmc[i]:=fieldbyname('Storeroom_name').asstring;
cbbKf.items.Add(listKf[i]+' '+listKfmc[i]);
next;
end;
//添加库位代码
close;
sql.Clear;
sql.add('select * from Storeposition order by Storeroom_zip,Storeplace_zip');
open;
setlength(listKw,recordcount);
setlength(listKwmc,recordcount);
cbbKw.Items.clear;
for i:=0 to recordcount - 1 do
begin
listKw[i]:=fieldbyname('Storeplace_zip').asstring;
listKwmc[i]:=fieldbyname('Storeplace_name').asstring;
cbbKw.items.Add(listKw[i]+' '+listKwmc[i]);
next;
end;
end;
end;
procedure TfrmStockZz.FormShow(Sender: TObject);
var
str:string;
begin
//dtpRk.Date:=now;
str:=' select a.Xh,a.In_Bill,a.Pr_No,a.Plan_id, '+
' a.Mate_Code,b.Mate_Name,b.Mate_Type, '+
' a.Gys,a.Dept_id,a.In_Date, '+
' a.KfNo,a.KwNo,a.In_Type, '+
' b.Stoc_Amount,b.Mate_TotalPrice, '+
' a.In_Amount,a.In_Price,a.In_Zj,a.In_Post, '+
' a.In_man,a.Exam_man,a.Oper_id,a.Rk_memo '+
' from Mate_ZzRk a '+
' left outer join Mate_Basic b on a.Mate_Code=b.Mate_Code order by a.Xh ';
with dm.qry_Zz do
begin
close;
sql.Clear;
sql.Add(str);
open;
end;
end;
procedure TfrmStockZz.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)+''') and (mate_class like ''CCC'' )');
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);
edtPrice.text:=trim(ADOQuery_sql.fieldByName('Mate_Price').asstring);
edtStockNum.text:=trim(ADOQuery_sql.fieldByName('Stoc_Amount').asstring);
edtStockZJ.text:=trim(ADOQuery_sql.fieldByName('Mate_TotalPrice').asstring);
end else
begin
application.messagebox(' 基础物料中不存在该物料编码, '#13#10'或该物料不是零部件,请重新输入!','提示',mb_ok+mb_iconwarning);
edtWlbm.text:='';
edtWlbm.setfocus;
exit;
end;
end;
procedure TfrmStockZz.cbbKfExit(Sender: TObject);
var
// s_kf:string;
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 TfrmStockZz.cbbKwEnter(Sender: TObject);
var
str:string;
i:integer;
begin
{ if cbbkf.ItemIndex=-1 then
begin
cbbkw.clear;
exit;
end;
with DM.qry_kw do
begin
str:='select Storeplace_zip,Storeplace_name from storeposition where ltrim(rtrim(Storeroom_zip))='''+
listkf[cbbkf.ItemIndex]+''''+' order by Storeplace_zip';
close;
SQL.clear;
sql.add(str);
open;
setlength(listkw,dm.qry_kw.recordcount);
setlength(listkwmc,dm.qry_kw.recordcount);
cbbkw.Items.clear;
//填充出入库类别的下拉组合框
for i:=0 to dm.qry_kw.recordcount - 1 do
begin
listkw[i]:=dm.qry_kw.fieldbyname('Storeplace_zip').asstring;
listkwmc[i]:=dm.qry_kw.fieldbyname('Storeplace_name').asstring;
cbbkw.items.Add(listkw[i]+' '+dm.qry_kw.fieldbyname('Storeplace_name').asstring);
dm.qry_kw.next;
end;//end for
end;//end with }
end;
procedure TfrmStockZz.edtPriceExit(Sender: TObject);
begin
edtTotalPrice.text:=FloatToStr(StrToFloat(edtNum.text)*StrToFloat(edtPrice.text));
edtTotalPrice.enabled:=false;
edtTotalPrice.color:=clInfoBk;
end;
procedure TfrmStockZz.dsZzRkDataChange(Sender: TObject; Field: TField);
var
str:string;
i:integer;
begin
//----------Gys -----------Dept_id
edtRkdh.text:=dm.qry_Zz.fieldbyname('In_Bill').asstring;
edtHtbh.text:=dm.qry_Zz.fieldbyname('Pr_No').asstring;
edtJhbh.text:=dm.qry_Zz.fieldbyname('Plan_id').asstring;
edtwlbm.text:=dm.qry_Zz.fieldbyname('Mate_Code').asstring;
edtWlmc.text:=dm.qry_Zz.fieldbyname('Mate_Name').asstring;
edtType.text:=dm.qry_Zz.fieldbyname('Mate_Type').asstring;
if dm.qry_Zz.fieldbyname('In_Date').IsNull then
dtpRk.DateTime:=now
else
dtpRk.date:=dm.qry_Zz.fieldbyname('In_Date').asdatetime;
edtStockNum.text:=dm.qry_Zz.fieldbyname('Stoc_Amount').asstring;
edtStockZJ.text:=dm.qry_Zz.fieldbyname('Mate_TotalPrice').asstring;
edtNum.text:=dm.qry_Zz.fieldbyname('In_Amount').asstring;
edtPrice.text:=dm.qry_Zz.fieldbyname('In_Price').asstring;
edtTotalPrice.text:=dm.qry_Zz.fieldbyname('In_Zj').asstring;
edtJsr.text:=dm.qry_Zz.fieldbyname('In_man').asstring;
edtJyr.text:=dm.qry_Zz.fieldbyname('Exam_man').asstring;
edtZdr.text:=dm.qry_Zz.fieldbyname('Oper_id').asstring;
edtBz.text:=dm.qry_Zz.fieldbyname('Rk_memo').asstring;
//---------部门-----------------------
cbbDept.itemindex:=-1;
str:=DM.qry_Zz.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;
//---------供应商-----------------------
cbbGys.itemindex:=-1;
str:=DM.qry_Zz.FieldByName('gys').asstring;
if high(listGys)>=0 then
begin
for i:=0 to high(listgys) do
begin
if listgys[i]=str then
begin
cbbGys.itemindex:=i;
break;
end;
end;
end;
//---------库房-----------------------
cbbKf.itemindex:=-1;
str:=DM.qry_Zz.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_Zz.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;
//库存数量、库存总价--这里的代码影响基础物料打开后的数据显示
{ 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
edtStockNum.text:=ADOQuery_sql.fieldbyname('Stoc_Amount').asstring;
edtStockZJ.text:=ADOQuery_sql.fieldbyname('Mate_TotalPrice').asstring;
end; }
end;
procedure TfrmStockZz.btnGzClick(Sender: TObject);
var
seltotal,i:integer;
myprocess:Tfrmprocess;
//strdjh:string;
begin
//根据入库单号、入库标志可直接判断出该单据是否已经过帐
with dm.qry_ZzRkGz do
begin
close;
sql.Clear;
sql.Add('select * from mate_ZzRk where (in_bill='''+trim(edtRkdh.text)+''') and (in_post=''Y'') ');
open;
end;
if dm.qry_ZzRkGz.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_Zz.Bookmark:=DBGrid1.SelectedRows.Items[i];
//-------------------过帐--------------------------
with dm.sp_ZzRkGz do
begin
dm.sp_ZzRkGz.ProcedureName:='Zz_Rkgz;1';
Parameters.Refresh;
Parameters.ParamByName('@Rkdh').value:=edtRkdh.Text;
ExecProc;
end;
myprocess.closeprocess;
DBGrid1.SelectedRows.Clear;
DM.qry_Zz.close;
DM.qry_Zz.open;
application.MessageBox('所选入库单已全部过帐成功!!','提示',mb_ok+mb_iconinformation);
end ;//end for
finally
myprocess.Free;
end; //end try
end;
end;
dm.qry_Zz.Close;
dm.qry_Zz.Open;
end;
procedure TfrmStockZz.edtRkdhExit(Sender: TObject);
begin
if dm.qry_Zz.Locate('In_Bill',edtRkdh.text ,[loCaseInsensitive]) then
begin
application.MessageBox('注意:'+#13+' 入库单号重复,请重新输入!','警告',mb_ok+mb_iconwarning);
edtRkdh.text:='';
clear(frmStockZz);
edtRkdh.SetFocus;
exit;
end;
end;
procedure TfrmStockZz.sbtncodeClick(Sender: TObject);
begin
frmSelectCodeNameType:=TfrmSelectCodeNameType.create(self);
frmSelectCodeNameType.show;
end;
procedure TfrmStockZz.edtNumExit(Sender: TObject);
begin
edtTotalPrice.text:=FloatToStr(StrToFloat(edtNum.text)*StrToFloat(edtPrice.text));
edtTotalPrice.enabled:=false;
edtTotalPrice.color:=clInfoBk;
end;
procedure TfrmStockZz.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if trim(dm.qry_Zz.FieldByName('In_Post').AsString)='N' then
begin
DBGrid1.Canvas.Font.Color:=clGreen;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
//以突出显示当前选中的行
if ((state=[gdSelected]) or (State=[gdSelected,gdFocused])) then
begin
DBGrid1.Canvas.Brush.Color:=clSkyBlue;
DBGrid1.Canvas.Pen.Mode:=pmmask;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -