loginform.SQLClientDataSet1.Active:=true;
改成:
loginform.SQLClientDataSet1.execute;

解决方案 »

  1.   

    update是不需有还回结果的,所以写成Active:=True的话,相当于.Open
    而Open是需有返回结果的,Execute不需返回结果
      

  2.   

    这样update的话是不是没有在服务器中修改?
      

  3.   

    删除:
    loginform.SQLClientDataSet1.Active:=true;
    只留
    loginform.SQLClientDataSet1.ApplyUpdates(-1);
    就够了
      

  4.   

    sqlquery := 'update XT_SJJHJH set CZXK='+''''+ls_czxk+''''+',QDSJ='+''''+ls_qdsj+''''+',XCYXSJ='+''''+datetimetostr(ldt_xcyxsj)+''''+',SM='+''''+ls_sm+''''+' where ID='+''''+ls_id+'''';
      loginform.SQLClientDataSet1.Close;
      loginform.SQLClientDataSet1.CommandType:=ctquery;
      loginform.SQLClientDataSet1.CommandText:=sqlquery;
      loginform.SQLClientDataSet1.Active:=true;
      loginform.SQLClientDataSet1.open;
      loginform.SQLClientDataSet1.ApplyUpdates(-1);
      上面的代码,出现错误提示,但是修改成功.
      

  5.   

    是可以成功呀,如果再在后面加一句
    select *from XT_SJJHJH 
    就不会出错了,就是说 用OPEN或active,一寂要返回东东,
      

  6.   

    可是我不用loginform.SQLClientDataSet1.open;这一句,为什么不成功?
      

  7.   

    用open和excute都是执行,只是open要有数据集返回,而excute不要返回数据集。所以用open会出现错误,而excute不会。如果没有调用这两个方法中的一个就不会在数据库中执行。
      

  8.   

    还是不是,如果我只用open或者excute都出现错误,但是我
    loginform.SQLClientDataSet1.Execute;
    loginform.SQLClientDataSet1.Active :=true;
    这两句同时用,或者将第二局换成open都将修改成功,但是出现错误提示