代码如下
  SQl.Add('update materia set mno=:mno where id =:id');
  Parameters.ParamByName('id').Value:='1';
  Parameters.ParamByName('mno').Value:=edit1.Text;
  ExecSQL;其中mno是数字类型,如果换成字符型就能执行,请问怎么回事啊,怎么修改,谢谢

解决方案 »

  1.   

    对了,报的错是“update附近有语法错误”
      

  2.   

    Parameters.ParamByName('mno').Value:=edit1.Text;
    改为:
    Parameters.ParamByName('mno').Value:=StrToInt( edit1.Text );
      

  3.   

    SQl.Add('update materia set mno=mno where id =id');
    Parameters.ParamByName('id').Value:='1';
    Parameters.ParamByName('mno').Value:=StrToInt( edit1.Text );
    ExecSQL;
      

  4.   

    mno如果是数字类型的话,你必须在更新时确保它不是为空,最好加个判断,确定它不是为空时再更新
      

  5.   

    我在测试的时候mno的值当然不会是空的,这里好像就是数据类型的问题,我以前一直用bde,它在使用的时候可以加AsInteger来表明数据类型,不知道ado怎么弄,唉,水平太差了,大家帮忙
      

  6.   

    SQl.Add('update materia set mno=mno where id =id');
    Parameters.ParamByName('id').Value:='1';
    Parameters.ParamByName('mno').Value:=StrToInt( Trim(edit1.Text) );
    ExecSQL;
      

  7.   

    楼上的有问题,试试我的:
     SQl.Add('update materia set mno=:mno where id =:id');
      Parameters.ParamByName('id').Value:=1;
      Parameters.ParamByName('mno'。
      

  8.   

    你先试试  SQl.Add('update materia set mno=' + inttostr(mno) +' where id =:id');
      Parameters.ParamByName('id').Value:='1';
      Parameters.ParamByName('mno').Value:=strtoint(trim(edit1.Text));
      ExecSQL;
    如果还是不行,请你说清楚一点
      

  9.   

    很谢谢大家,我晕死了,可能是其他地方出问题,对了,很抱歉,我忘了说了我用的是access,不知道这个会不会有影响,我把以前的程序拿出来对比,也没什么 地方不对的,数据库也重新建了,真不知道怎么办了,再次感谢大家,晚上结贴!!如果谁有这方面的例子能不能给我看看,谢谢了!!
    我的mail:[email protected]
      

  10.   

    Parameters.ParamByName('id').Value
    后面的value有时看程序用的是asstring为什么呢?
    什么时候用value什么时候用asstring?