📄 mrcpck.pas
字号:
bitbtn1.enabled:=true; bitbtn4.enabled:=true; //登记、退出按钮可用
bitbtn9.enabled:=false; bitbtn2.enabled:=false; bitbtn3.enabled:=false;//出库、取消出库、打印按钮不可用
bitbtn6.enabled:=false;bitbtn5.enabled:=false;bitbtn7.enabled:=false; // 添加、重新添加、修改按钮不可用
bitbtn8.enabled:=false; //删除按钮不可用
table1.First;
table1.edit;
table3.edit;
while not table1.Eof do begin
table3.locate('cpbh',table1.fieldbyname('cpbh').asstring,[lopartialkey]);
table3.edit;
if table1.FieldByName('shuliang').asinteger> table3.fieldbyname('shuliang').asinteger then begin //判断库存不够
showmessage('库中的('+table1.fieldbyname('cpmc').asstring+')没有那么多。');
table1.edit;
table1.fieldbyname('shuliang').asinteger:= table3.fieldbyname('shuliang').asinteger; //数量为库存数量
table1.fieldbyname('je').asinteger:=table1.fieldbyname('shuliang').asinteger* table1.fieldbyname('ling').asinteger; //重新计算金额
table1.fieldbyname('ying').asinteger:= table1.fieldbyname('je').asinteger;
end;
if table3.locate('cpbh',table1.fieldbyname('cpbh').asstring,[loCaseInsensitive]) then begin
table3.edit;
table3.fieldbyname('shuliang').asinteger:=table3.fieldbyname('shuliang').asinteger-table1.fieldbyname('shuliang').asinteger; //计算库存
table3.post;
end;
table4.insert;
table4.fieldbyname('cpbh').asstring:=table1.fieldbyname('cpbh').asstring;
table4.fieldbyname('cpmc').asstring:=table1.fieldbyname('cpmc').asstring;
table4.fieldbyname('cpxh').asstring:=table1.fieldbyname('cpxh').asstring;
table4.fieldbyname('cpbs').asstring:= table1.fieldbyname('cpbs').asstring;
table4.fieldbyname('cx').asstring:=table1.fieldbyname('cx').asstring;
table4.fieldbyname('cd').asstring:=table1.fieldbyname('cd').asstring;
table4.fieldbyname('jsr').asstring:= table1.fieldbyname('jsr').asstring;
table4.fieldbyname('rdate').asdatetime:= table1.fieldbyname('rdate').asdatetime;
table4.fieldbyname('ling').asinteger:=table1.fieldbyname('ling').asinteger;
table4.fieldbyname('khbh').asstring:=table1.fieldbyname('khbh').asstring;
table4.fieldbyname('khqc').asstring:= table1.fieldbyname('khqc').asstring;
table4.fieldbyname('lxdh').asstring:= table1.fieldbyname('lxdh').asstring;
table4.fieldbyname('je').asstring:=table1.fieldbyname('je').asstring;
table4.fieldbyname('ying').asstring:=table1.fieldbyname('ying').asstring;
table4.fieldbyname('dan').asstring:= table1.fieldbyname('dan').asstring;
table4.fieldbyname('shuliang').asstring:=table1.fieldbyname('shuliang').asstring;
table4.fieldbyname('piao').asstring:=combobox2.text;
table4.Post; //保存出库记录
table1.delete; //删除临时表记录
end;
table5.Insert;
table5.fieldbyname('piao').asstring:=combobox2.text;
combobox2.items.add(combobox2.text);
table5.post;//保存票号
combobox2.enabled:=true;
datasource1.DataSet:=table4;
table4.open;
table4.Filtered:=true;
table4.filter:=format('piao'+'='+'''%s''',[combobox2.text]);
except
showmessage('数据不能保存。');
end;
datasource1.DataSet:=table1;
table1.open; //显示库存
end;
procedure Tcpck.BitBtn7Click(Sender: TObject); //重新登记库存
begin
try
if application.MessageBox('是否保存当前信息?','提醒',mb_yesno)=idyes then begin
table1.First;
table1.edit;
table3.edit;
while not table1.Eof do begin
table3.locate('cpbh',table1.fieldbyname('cpbh').asstring,[lopartialkey]);
table3.edit;
if table1.FieldByName('shuliang').asinteger> table3.fieldbyname('shuliang').asinteger then begin //出库数量大余库存
showmessage('库中德('+table1.fieldbyname('cpmc').asstring+ ')没有那么多,系统将把它全部出库。');
table1.fieldbyname('shuliang').asinteger:=table3.fieldbyname('shuliang').asinteger;
end;
table3.fieldbyname('shuliang').asinteger:=table3.fieldbyname('shuliang').asinteger-table1.fieldbyname('shuliang').asinteger;
table3.post; //保存库存
table4.insert;
table4.fieldbyname('cpbh').asstring:=table1.fieldbyname('cpbh').asstring;
table4.fieldbyname('cpmc').asstring:=table1.fieldbyname('cpmc').asstring;
table4.fieldbyname('cpxh').asstring:=table1.fieldbyname('cpxh').asstring;
table4.fieldbyname('cpbs').asstring:=table1.fieldbyname('cpbs').asstring;
table4.fieldbyname('cx').asstring:=table1.fieldbyname('cx').asstring;
table4.fieldbyname('cd').asstring:=table1.fieldbyname('cd').asstring;
table4.fieldbyname('jsr').asstring:=table1.fieldbyname('jsr').asstring;
table4.fieldbyname('rdate').asdatetime:=table1.fieldbyname('rdate').asdatetime;
table4.fieldbyname('ling').asinteger:= table1.fieldbyname('ling').asinteger;
table4.fieldbyname('khbh').asstring:=table1.fieldbyname('khbh').asstring;
table4.fieldbyname('khqc').asstring:=table1.fieldbyname('khqc').asstring;
table4.fieldbyname('lxdh').asstring:=table1.fieldbyname('lxdh').asstring;
table4.fieldbyname('je').asstring:= table1.fieldbyname('je').asstring;
table4.fieldbyname('ying').asstring:=table1.fieldbyname('ying').asstring;
table4.fieldbyname('dan').asstring:=table1.fieldbyname('dan').asstring;
table4.fieldbyname('shuliang').asstring:= table1.fieldbyname('shuliang').asstring;
table4.Post; //保存出库记录
table1.delete; //删除临时记录
end;
table5.Insert;
table5.fieldbyname('piao').asstring:=combobox2.Text;
table5.post; //保存票号
combobox2.Items.add(combobox2.text);
end else begin
table1.first;
while not table1.Eof do begin
table1.delete;
end;
end;
edit6.text:=''; edit7.text:='0';edit9.text:='';edit8.text:='0';edit10.text:='0';
edit6.setfocus;
edit1.text:='0'; edit4.text:='0';edit5.text:='0'; listbox1.items.clear; //初始化出库数量、金额、应付、出库产品统计
except
showmessage('');
end;
end;
procedure Tcpck.BitBtn6Click(Sender: TObject); //删除出库记录
begin
try
if messagedlg('您确定要删除产品名称为(' +table1.fieldbyname('cpmc').asstring+')的产品吗?', mtConfirmation,[mbyes,mbno],0)=mryes then begin
edit1.text:=inttostr(strtoint(edit1.text)- table1.fieldbyname('shuliang').asinteger); //出库数量
edit4.text:=inttostr(strtoint(edit4.text)-table1.fieldbyname('je').asinteger); //出库金额
edit5.text:=inttostr(strtoint(edit5.text)-table1.fieldbyname('je').asinteger); //应付金额
table1.Delete; //删除记录
end;
listbox1.Clear; //清空
table1.First;
while not table1.Eof do begin //重新统计出库产品
listbox1.items.add('产品:('+table1.fieldbyname('cpmc').asstring+') 型号:('+table1.fieldbyname('cpxh').asstring+')');
table1.next;
end;
except
showmessage('数据无法连接。');
end;
end;
procedure Tcpck.BitBtn3Click(Sender: TObject); //取消出库登记
begin
try
table1.cancel; //取消保存临时记录
edit1.text:='0'; edit4.text:='0';edit5.text:='0'; listbox1.items.Clear; //初始化出库数量、金额、应付金额、统计列表
bitbtn1.enabled:=true; bitbtn4.enabled:=true; bitbtn9.enabled:=false;
bitbtn8.enabled:=false; bitbtn2.enabled:=false; bitbtn3.enabled:=false;bitbtn6.enabled:=false;
bitbtn5.enabled:=false; bitbtn7.enabled:=false;
datasource1.DataSet:=table4;
table4.open;
combobox2.enabled:=true;
combobox2.ItemIndex:=0;
table4.Filtered:=true;
table4.filter:=format('piao'+'='+'''%s''',[combobox2.text]);
except
showmessage('');
end;
end;
procedure Tcpck.ComboBox2Click(Sender: TObject);
begin
if combobox2.text='所有记录' then begin
table4.filtered:=false;
end else begin
table4.Filtered:=true;
table4.filter:=format('piao'+'='+'''%s''',[combobox2.text]);
end;
end;
procedure Tcpck.BitBtn8Click(Sender: TObject); //添加数据
begin
edit6.text:='';
edit7.text:='';
edit8.text:='';
edit6.setfocus;
end;
procedure Tcpck.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CPCK.release;
end;
procedure Tcpck.Edit5Exit(Sender: TObject);
begin
if edit5.text='' then edit5.text:='0'
end;
procedure Tcpck.ComboBox1Exit(Sender: TObject);
begin
if combobox1.text<>'' then begin
if table2.Locate('khbh',combobox1.text,[lopartialkey]) then begin //显示客户名称、电话
edit2.text:=table2.fieldbyname('khqc').asstring;
edit3.text:=table2.fieldbyname('lxdh').asstring;
end else begin
showmessage('库中无此记录');
combobox1.setfocus;
end;
end;
end;
procedure Tcpck.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then bitbtn1.setfocus; //回车焦点移到登记按钮
end;
procedure Tcpck.Edit6KeyPress(Sender: TObject; var Key: Char); //选择出库产品
begin
if key=#13 then begin //回车确认
if table3.locate('cpbh',edit6.text,[loCaseInsensitive]) then begin //如果库存存在出库商品
if table3.fieldbyname('bei').asstring<>'退货' then begin //如果此产品非退货产品
a1:=table3.fieldbyname('cpbh').asstring;
a2:=table3.fieldbyname('cpmc').asstring;
a3:=table3.fieldbyname('cpxh').asstring;
a4:=table3.fieldbyname('cpbs').asstring;
a5:=table3.fieldbyname('dan').asstring;
edit7.text:=inttostr(table3.fieldbyname('ling').asinteger); //显示产品价格
edit9.text:=table3.fieldbyname('cpmc').asstring; //显示产品名称
a7:=table3.fieldbyname('cx').asstring;
a8:=table3.fieldbyname('cd').asstring;
edit7.setfocus;
end;
end else begin
if application.MessageBox('库中没有此产品,是否强行出库?','提醒',mb_yesno)=idyes then begin
if table7.locate('cpbh',edit6.text,[loCaseInsensitive]) then begin
a1:=table7.fieldbyname('cpbh').asstring;
a2:=table7.fieldbyname('cpmc').asstring;
a3:=table7.fieldbyname('cpxh').asstring;
a5:=table7.fieldbyname('dan').asstring;
edit7.text:=inttostr(table7.fieldbyname('ling').asinteger);
a7:=table7.fieldbyname('cx').asstring;
a8:=table7.fieldbyname('cd').asstring;
edit7.setfocus;
end else begin
edit6.setfocus;
end;
end;
end;
end;
end;
procedure Tcpck.Edit7KeyPress(Sender: TObject; var Key: Char);
var shu:integer;
begin
try
if key=#13 then begin
table4.first;
table4.Filtered:=true;
table4.filter:=format('cpmc'+'='+'''%s''',[edit6.text]);
if table4.Locate('cpmc',edit6.text,[loCaseInsensitive]) then
begin
table4.Last;
shu:=table4.fieldbyname('ling').asinteger;
end Else begin
table7.locate('cpmc',edit6.text,[loCaseInsensitive]);
shu:=table7.fieldbyname('ling').asinteger;
end;
table4.filtered:=false;
If strtoint(edit7.Text) < shu Then begin
showmessage('本次出库单价低于平日,请三思后出库。');
end;
edit8.setfocus;
end;
except
showmessage('数据不合法。');
end;
if (key<'0') or (key>'9') then key:=chr(0);
end;
procedure Tcpck.Edit8KeyPress(Sender: TObject; var Key: Char); //确认数量
begin
try
if key=#13 then begin
edit1.text:=inttostr(strtoint(edit1.text)+strtoint(edit8.text)); //计算出库总数量
edit4.text:=inttostr(strtoint(edit4.text)+strtoint(edit10.text)); //计算出库金额
edit5.text:=edit4.text;
listbox1.items.add('产品:('+a2+') 型号:('+a3+')');
table1.AppendRecord([a1,a2,a3,a4,date,mrqp.label1.caption,a5,edit8.text,a7,a8,combobox1.Text,
edit2.text,edit3.text,strtoint(edit7.text), strtoint(edit10.text),strtoint(edit10.text)]);
edit6.text:='0'; edit7.text:='0'; edit8.text:='0'; edit9.text:='0'; edit10.text:='0'; //清空数据
edit6.setfocus;
end;
except
showmessage('数据连接有误。');
end;
if (key<'0') or (key>'9') then key:=chr(0); //如果数据不合法
end;
procedure Tcpck.Edit8Change(Sender: TObject);
begin
edit10.Text:=inttostr(strtoint(edit8.text)* strtoint(edit7.text)); //计算合计金额
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -