运行后,当所有的edit里面都有值时能通过,但是当edtshl.Text,edtxl.text,edtcq.text里面不给值时报错说"从varchar到float类型转换时出错",请问是什么原因?哪位高手帮我修改一下程序,当我用table控件时,edtshl.Text,edtxl.text,edtcq.text不给值时能通过,为什么用query不行?在所有的字段里面除KCBM,KCMC不允许为空外,其它的都允许空的.在这个问题上我发了好多个贴子了,到现在还没有解决,有人知道原因吗?
procedure TfrmNew.btnOKClick(Sender: TObject);
var
a:variant;
begin
a:=NULL;
with KCDM.qryNew do
begin
close;
sql.Clear;
sql.Add('insert into KC0(KCBM,KCMC,KCLB,KCDW,KCSHL,KCXL,KCGG,KCCQ,科目名,科目号)');
sql.Add('values(:BM,:MC,:LB,:DW,:SHL,:XL,:GG,:CQ,:KMMC,:KMDM)');
Params.ParamByName('BM').Value:=edtBM.Text;
Params.ParamByName('MC').Value:=edtMC.Text;
Params.ParamByName('LB').Value:=edtLB.Text;
Params.ParamByName('DW').Value:=edtDW.Text;
Params.ParamByName('GG').Value:=edtGG.Text;
Params.ParamByName('KMMC').Value:=edtKMMC.Text;
if trim(edtSHL.Text)='' then
Params.ParamByName('SHL').Value:=a
else
Params.ParamByName('SHL').Value:=strtofloat(edtshl.Text);
if trim(edtXL.Text)='' then
Params.ParamByName('XL').Value:=a
else
Params.ParamByName('XL').Value:=strtofloat(edtxl.Text);
if trim(edtKMDM.Text)='' then
Params.ParamByName('KMDM').Value:=a
else
Params.ParamByName('KMDM').Value:=strtoint(edtKMDM.Text);
if trim(edtCQ.Text)='' then
Params.ParamByName('CQ').Value:=a
else
Params.ParamByName('CQ').Value:=strtoint(edtCQ.Text);
ExecSQL;
end; // with
end;
end;
procedure TfrmNew.btnOKClick(Sender: TObject);
var
a:variant;
begin
a:=NULL;
with KCDM.qryNew do
begin
close;
sql.Clear;
sql.Add('insert into KC0(KCBM,KCMC,KCLB,KCDW,KCSHL,KCXL,KCGG,KCCQ,科目名,科目号)');
sql.Add('values(:BM,:MC,:LB,:DW,:SHL,:XL,:GG,:CQ,:KMMC,:KMDM)');
Params.ParamByName('BM').Value:=edtBM.Text;
Params.ParamByName('MC').Value:=edtMC.Text;
Params.ParamByName('LB').Value:=edtLB.Text;
Params.ParamByName('DW').Value:=edtDW.Text;
Params.ParamByName('GG').Value:=edtGG.Text;
Params.ParamByName('KMMC').Value:=edtKMMC.Text;
if trim(edtSHL.Text)='' then
Params.ParamByName('SHL').Value:=a
else
Params.ParamByName('SHL').Value:=strtofloat(edtshl.Text);
if trim(edtXL.Text)='' then
Params.ParamByName('XL').Value:=a
else
Params.ParamByName('XL').Value:=strtofloat(edtxl.Text);
if trim(edtKMDM.Text)='' then
Params.ParamByName('KMDM').Value:=a
else
Params.ParamByName('KMDM').Value:=strtoint(edtKMDM.Text);
if trim(edtCQ.Text)='' then
Params.ParamByName('CQ').Value:=a
else
Params.ParamByName('CQ').Value:=strtoint(edtCQ.Text);
ExecSQL;
end; // with
end;
end;
那就
edtshl.Text:='0';
edtxl.text:='0';
edtcq.text:='0';
if trim(edtSHL.Text)='' then
Params.ParamByName('SHL').Clear