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'

解决方案 »

  1.   

    有可能是你的DBEDit4.text出现有非0~9的字符,其实你可以
    datamodule1.Query1.Params[3].AsString:= DBEDit4.text;还有datamodule1.query1.open;
    须改为datamodule1.query1.ExecSQL;
      

  2.   

    改成这样试试:
    datamodule1.Query1.Params[3].Asstring:= DBEDit4.text;
      

  3.   

    问题可能是因为DBEDit4中的内容是非法的.
    你看看DBEDit4.Text的初值是多少? 是不是为字母或为空了? 是不是为实数类型了.
    应该不是数据库的错误.
    你可以把其他代码都"注释"掉, 只留下一句
    var i: integer;
    begin
      i:= strtoint(DBEDit4.Text);
    end;
    看看是不是还出这个错误, 如果是的话, 那就一定是DBEDit4.Text的错了.
      

  4.   

    都是DBEDit了,为何还用SQL再添加一次????
    POST就可以了阿。
      

  5.   

    datamodule1.Query1.Params[3].AsInteger:= strtoint(DBEDit4.text);
    改成
    datamodule1.Query1.Params[3].AsInteger:= strtointdef(DBEDit4.text,0);
      

  6.   

    请教怎么么用post我刚才用了不行
      

  7.   

    1 DBEDit4.text对应的字段是否为int型?
    2 DBEDit4是否允许用户输入,如果是,需判断用户输入是否有效
    3 判断DBEDit4中是否为空值试一下:
     
    if DBEDit4.text<>'' then
    try
      datamodule1.Query1.Params[3].AsInteger:= strtoint(DBEDit4.text);
    except
      datamodule1.Query1.Params[3].AsInteger:= 0;
      

  8.   

    按上面的方法能够修改了,但是修改后就什么也没有而且 当我想再去把表中的数据显示出来时弹出对话框说table is read only  修改后的记录里就第四项里有一个数据为0 其它的都为空
      

  9.   

    谢谢大家给我的意见,我刚才用了一句 datamodule1.query1.Post;代替上面所有的代码可以对数据进行修改了,虽然可以,但是会不会不安全,或者有什么严重的后果,比如存在隐藏的错误,望大家给我指点一下
      

  10.   

    如果你处理的数据都在一张表里面的,不关联到其他的表,并且你录入数据的
    就已经是数据感应控件,用post其实挺好的。当然,如果要用post提交数据,数据集应当是处在insert或者edit状态,即你使用了
    append或者edit方法后,才用post提交当前数据,不然会报错。另外是在提交数据前,如果必要,可以先检查用户输入的数据类型是否正确,
    不然直接提交数据可能会出错。
    看情况,有的时候需要事先检查用户数据的数据的合法性,有的可以不需要。