showmessage(dbgrid2.Fields[0].AsString);//显示的结果是14
    
  with dm.Query1 do
    begin
        close;
        sql.Clear;
        sql.Add('select * from s_basic where id=''');
        sql.Add(dbgrid2.Fields[0].AsString+'''');
        //parambyname('aa').AsInteger:=dbgrid2.Fields[0].Asinteger;
        open;
    end;
如果将sql语句改成select * from s_basic where id=14这样的话则正确,没有错误,那么我的sql语句该如何写呀?期盼高手指点!

解决方案 »

  1.   

    用下面这个也不行!     
            sql.Add('select * from s_basic where id=:id1');
            //sql.Add(dbgrid2.Fields[0].Asinteger+'''');
            parambyname('id1').AsInteger:=dbgrid2.Fields[0].Asinteger;
    "id"这个字段是int型!
      

  2.   

    这样写:sql.Add('select * from s_basic where id='+dbgrid2.Fields[0].AsString);
      

  3.   

    你在where语句中给id赋了一个string型的,当然错了。用 mrfanghansheng(***Rocket***) 的
      

  4.   

    var
      sqlstr:string;
    sqlstr:=
      'select * from s_basic where id=' + inttostr(dbgrid2.Fields[0].AsInteger) ;
            
    with dm.Query1 do
      begin
        close;
        sql.Clear;
        sql.Add(sqlstr);
        open;
      end;//我习惯于用sqlstr保存sql语句,这样在with语句中会简洁些。
    //请试一试。
      

  5.   

    你的dbgrid2的dateset是不是query1呀
      

  6.   

    再求救各位一个问题:
    DBEdit1的text值是否修改不了数据库中对应字段的值呀?   
     with query1 do
        begin
            close;
            sql.Clear;
            sql.Add('select * from s_basic where username="aa"');
            open;
            edit;
            fieldbyname('s_class').AsString:=DBEdit1.Text;
            post;
    也没有出现错误,权限都具有,但是为什么不能修改数据库中对应字段的值呀?我用edit的text属性的值可以修改!这是为什么呀?
      

  7.   

    你要用DBedit的field属性。如:DBEdit1.Field.AsString := 'aa';