with connClientDataSet do
begin
 Close;
 CommandText := 'Select * From T_area';
 Open;
 Append;
 FieldByName('Aserial').AsString := StrToInt(EditSerial.Text);
 FieldByName(AfullName).AsInteger := EditfullName.Text);
 Post;
 Ano := FieldByName('Ano').AsInteger;
end;
TClientDataSet控件和TAdoQuery使用上有没有区别,以上代码使用有没有问题,为什么不能把数据加入到数据库中的,请高手指教.

解决方案 »

  1.   

    FieldByName('Aserial').AsString := StrToInt(EditSerial.Text);
    FieldByName(AfullName).AsInteger := EditfullName.Text);
    这两句不对吧:第一句左边是String类型的,右边怎么转成Integer类型了。下面的也是,倒了过来!
      

  2.   

    应该是:
    FieldByName('Aserial').AsString := EditSerial.Text;
    FieldByName(AfullName).AsInteger := StrToInt(EditfullName.Text);
    该不会是楼主写错了吧!
      

  3.   

    with connClientDataSet do
    begin
     Close;
     CommandText := 'Select * From T_area';
     Open;
     Append;
     FieldByName('Aserial').AsString := EditSerial.Text;
     Post;
     Ano := FieldByName('Ano').AsInteger;
    end;
    写错了
      

  4.   

    你的connClientDataSet应该是在客户端的是吗,不然就没有必要用了
    帮你分析一下问题:
    1.ClientDataSet要用到CommandText,服务器应用程序端的DatesetProvider应该要设相应的属性,即Options里面的poAllowCommendText:=True;
    2.ClientDataSet在客户端更新数据,不能用post,这样不会传到数据库,更新完后要用
     他的ApplyUpdates方法,才能更新。另外如果你想做三层,最好看一个李维的多层系统编,这对你有很大的帮助
      

  5.   

    你这个我怎么感觉像2层,用TclientDataSet不一定就是三层
      

  6.   

    那三层是不是要把SQl语句放在应用层,通过过程调用,这样我如果想要把数据读出来不是也要用到SQL语句,本人是有点疑问.