with ClientDataSet1 do
  begin
  commandtext:='';
  close;
  commandtext:='select * from yonghu where id='+edit_id.text+'';
  open;
 // fieldbyname('username').AsString:=edit_name.Text;
edit;
 Fieldbyname('userpsw').AsString:=edit_psw.Text;
  Fieldbyname('lastdate').AsDateTime:=edit_rq.Date;
  Fieldbyname('userinfo').AsString:=edit_pcinfo.Text;
  Fieldbyname('bz').AsString:=edit_bz.Text;
  post;
  ApplyUpdates(0);
这个写法有问题吗/?为什么我修改完又变回来了
在学习三层。服务端是socket +aoquery +DataSetProvider1+access新增可以。删除一记录也无效
if not ClientDataSet1.eof then
if MessageDlg('真的要删除这一行吗?',mtinformation,[mbyes,mbno],0)=idyes then
ClientDataSet1.Delete;

解决方案 »

  1.   

    with ClientDataSet1 do 
      begin 
      commandtext:=''; 
      close; 
      commandtext:='select * from yonghu where id='+edit_id.text+''; 
      open; 
    // fieldbyname('username').AsString:=edit_name.Text; 
    edit; 
    Fieldbyname('userpsw').AsString:=edit_psw.Text; 
      Fieldbyname('lastdate').AsDateTime:=edit_rq.Date; 
      Fieldbyname('userinfo').AsString:=edit_pcinfo.Text; 
      Fieldbyname('bz').AsString:=edit_bz.Text; 
      post; 
      ApplyUpdates(0); 提交过程中有没有错误?
    ApplyUpdates(-1);试下 
      

  2.   

    另外commandtext:='select * from yonghu where id='+edit_id.text+''; 
    有没有这条记录?
      

  3.   

      有的。这个是access里面的id  自动序列号。我怕错。特地加的这一行
      

  4.   

       还是不行。比如说。我先select * from 所有的表。所有数据都出来了。
    如果我点第一行。用第一行的ID号进行select
    然后更新是可以的但是修改其它行就不行了
      

  5.   

       我用过 commandtext:='update yonghu set username='''+edit_name.text+''' where id='''+edit_id.Text+'''';
     execute;  但是一点效果也没有。用post.最起码我界面上变了。虽然再查询就恢复。用update直接变都不变。
      

  6.   

    我认为中间层的设置可能有问题.
    可以先确定ApplyUpdates返回值是多少,如果大于0,那么就需要中间层的设置了.
      

  7.   

      是我的错。原来update 后。要重新查询一下才能发现改变了。对不住楼上几位了。谢谢