datamodule1.query1.Close;
datamodule1.Query1.SQL.Clear;datamodule1.Query1.SQL.Add('INSERT INTO DAFLML (LMBH, LMMC, JBFW,ZLCS,DAXZ)');
datamodule1.Query1.SQL.Add('VALUES (:LMBH, :LMMC, :JBFW,:ZLCS,:DAXZ)');datamodule1.Query1.Params[0].AsString := DBEDIT1.text;
datamodule1.Query1.Params[1].AsString := DBEDIT2.text;
datamodule1.Query1.Params[2].AsString := DBEDIT3.text;
datamodule1.Query1.Params[3].AsInteger:= strtoint(DBEDit4.text);
datamodule1.Query1.Params[4].AsString:=DBEdit5.text;
datamodule1.query1.open;问题总是出现在datamodule1.Query1.Params[3].AsInteger:= strtoint(DBEDit4.text); 出错提示是' is not a valid integer value'
datamodule1.Query1.SQL.Clear;datamodule1.Query1.SQL.Add('INSERT INTO DAFLML (LMBH, LMMC, JBFW,ZLCS,DAXZ)');
datamodule1.Query1.SQL.Add('VALUES (:LMBH, :LMMC, :JBFW,:ZLCS,:DAXZ)');datamodule1.Query1.Params[0].AsString := DBEDIT1.text;
datamodule1.Query1.Params[1].AsString := DBEDIT2.text;
datamodule1.Query1.Params[2].AsString := DBEDIT3.text;
datamodule1.Query1.Params[3].AsInteger:= strtoint(DBEDit4.text);
datamodule1.Query1.Params[4].AsString:=DBEdit5.text;
datamodule1.query1.open;问题总是出现在datamodule1.Query1.Params[3].AsInteger:= strtoint(DBEDit4.text); 出错提示是' is not a valid integer value'
datamodule1.Query1.Params[3].AsString:= DBEDit4.text;还有datamodule1.query1.open;
须改为datamodule1.query1.ExecSQL;
datamodule1.Query1.Params[3].Asstring:= DBEDit4.text;
你看看DBEDit4.Text的初值是多少? 是不是为字母或为空了? 是不是为实数类型了.
应该不是数据库的错误.
你可以把其他代码都"注释"掉, 只留下一句
var i: integer;
begin
i:= strtoint(DBEDit4.Text);
end;
看看是不是还出这个错误, 如果是的话, 那就一定是DBEDit4.Text的错了.
POST就可以了阿。
改成
datamodule1.Query1.Params[3].AsInteger:= strtointdef(DBEDit4.text,0);
2 DBEDit4是否允许用户输入,如果是,需判断用户输入是否有效
3 判断DBEDit4中是否为空值试一下:
if DBEDit4.text<>'' then
try
datamodule1.Query1.Params[3].AsInteger:= strtoint(DBEDit4.text);
except
datamodule1.Query1.Params[3].AsInteger:= 0;
就已经是数据感应控件,用post其实挺好的。当然,如果要用post提交数据,数据集应当是处在insert或者edit状态,即你使用了
append或者edit方法后,才用post提交当前数据,不然会报错。另外是在提交数据前,如果必要,可以先检查用户输入的数据类型是否正确,
不然直接提交数据可能会出错。
看情况,有的时候需要事先检查用户数据的数据的合法性,有的可以不需要。