procedure Tfrmwlbh.btnaddClick(Sender: TObject);
begin
if edtwlbh.Text='' then
begin
showmessage('物料编号不能为空!');
exit;
end;
with adoquery do
begin
close;
sql.Clear;
sql.Add('select * from bhb where 物料编号=:wlbh');
Parameters.ParamByName('wlbh').Value:=trim(edtwlbh.Text);
open;
if adoquery.RecordCount>0 then
begin
messagedlg('该编号已存在,请更改编号!',mtinformation,[mbyes],0);
edtwlmc.Text:='';
edtwlbh.Text:='';
edtwlzl.Text:='';
edtdwjg.Text:='';
edtkw.Text:='';
edtwlbh.SetFocus ;
end
else
//if (edtwlbh.Text ='') or (edtwlmc.Text ='') or(edtwlzl.Text ='')or(edtdwjg.Text ='')or(edtkw.Text ='') then
//begin
//showmessage('请输入完整信息!');
//exit;
//end; try
with adoquery do
begin
close;
sql.Clear;
sql.Add('insert into bhb (物料编号,物料名称,物料种类,单位价格,库位) values(:wlbh,:wlmc,:wlzl,:dwjg,:kw)');
Parameters.ParamByName('wlbh').Value:=trim(edtwlbh.Text);
Parameters.ParamByName('wlmc').Value:=trim(edtwlmc.Text);
Parameters.ParamByName('wlzl').Value:=trim(edtwlzl.Text);
Parameters.ParamByName('dwjg').Value:=edtdwjg.Text;//该类型是货币类型,
Parameters.ParamByName('kw').Value:=trim(edtkw.Text);
execsql;
showmessage('添加成功!');
with adoquery do
begin
close;
sql.Clear ;
sql.Add('insert into log (姓名,时间,操作内容)');
sql.Add('values(:name,:time,:cznr)');
Parameters.ParamByName('name').Value:=trim(frmmain.username);
parameters.ParamByName('time').Value:=now;
Parameters.ParamByName('cznr').Value:=trim(btnadd.Caption +'物料信息');
execsql;
end;
edtwlmc.Text:='';
edtwlbh.Text:='';
edtwlzl.Text:='';
edtdwjg.Text:='';
edtkw.Text:='';
edtwlbh.SetFocus ;
end;
except
showmessage('添加失败!');
end;
end;
with adoquery do
begin
close;
sql.Clear;
sql.Add('select * from bhb');
open;
end;
end;
在进行添加信息的时候,如果添加信息全部填写,则不会出错,如果只填写若干项,则出现 标准数据类型不匹配的错误 Parameters.ParamByName('dwjg').Value:=edtdwjg.Text;//该dwjg是货币类型 如果改成文本类型则不会出现上述错误 不知道应该如何写这句话,才能取出货币类型的值 请高手帮忙 十分感谢!!!!!!!!
begin
if edtwlbh.Text='' then
begin
showmessage('物料编号不能为空!');
exit;
end;
with adoquery do
begin
close;
sql.Clear;
sql.Add('select * from bhb where 物料编号=:wlbh');
Parameters.ParamByName('wlbh').Value:=trim(edtwlbh.Text);
open;
if adoquery.RecordCount>0 then
begin
messagedlg('该编号已存在,请更改编号!',mtinformation,[mbyes],0);
edtwlmc.Text:='';
edtwlbh.Text:='';
edtwlzl.Text:='';
edtdwjg.Text:='';
edtkw.Text:='';
edtwlbh.SetFocus ;
end
else
//if (edtwlbh.Text ='') or (edtwlmc.Text ='') or(edtwlzl.Text ='')or(edtdwjg.Text ='')or(edtkw.Text ='') then
//begin
//showmessage('请输入完整信息!');
//exit;
//end; try
with adoquery do
begin
close;
sql.Clear;
sql.Add('insert into bhb (物料编号,物料名称,物料种类,单位价格,库位) values(:wlbh,:wlmc,:wlzl,:dwjg,:kw)');
Parameters.ParamByName('wlbh').Value:=trim(edtwlbh.Text);
Parameters.ParamByName('wlmc').Value:=trim(edtwlmc.Text);
Parameters.ParamByName('wlzl').Value:=trim(edtwlzl.Text);
Parameters.ParamByName('dwjg').Value:=edtdwjg.Text;//该类型是货币类型,
Parameters.ParamByName('kw').Value:=trim(edtkw.Text);
execsql;
showmessage('添加成功!');
with adoquery do
begin
close;
sql.Clear ;
sql.Add('insert into log (姓名,时间,操作内容)');
sql.Add('values(:name,:time,:cznr)');
Parameters.ParamByName('name').Value:=trim(frmmain.username);
parameters.ParamByName('time').Value:=now;
Parameters.ParamByName('cznr').Value:=trim(btnadd.Caption +'物料信息');
execsql;
end;
edtwlmc.Text:='';
edtwlbh.Text:='';
edtwlzl.Text:='';
edtdwjg.Text:='';
edtkw.Text:='';
edtwlbh.SetFocus ;
end;
except
showmessage('添加失败!');
end;
end;
with adoquery do
begin
close;
sql.Clear;
sql.Add('select * from bhb');
open;
end;
end;
在进行添加信息的时候,如果添加信息全部填写,则不会出错,如果只填写若干项,则出现 标准数据类型不匹配的错误 Parameters.ParamByName('dwjg').Value:=edtdwjg.Text;//该dwjg是货币类型 如果改成文本类型则不会出现上述错误 不知道应该如何写这句话,才能取出货币类型的值 请高手帮忙 十分感谢!!!!!!!!
如果你没有写全,那么edtdwjg.text应该为'',是无法转换为货币类型的,所以报错。你可以在添加前,判断一下,用户是否填写了这个数据。
呵呵
在delphi中怎样将DBgrid中显示的数据导出到excel中? 请高手指点!!!!!!!!!!
if edtdwjg.Text='' then edtdwjg.Text:='0';
这样不就行了,不写的话,就是为0啊