说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

请教各位高手关于:clientdataset

编辑:说三道四文库 发布时间:2018-08-20 04:49
HTML文档下载 WORD文档下载 PDF文档下载
在ClientDataSet1的记录进行循环中,另一个ClientDataSet2是否可以进行多次打开关闭。

本人在测试时,总是出现ClientDataSet1处于非edit或者insert状态。
比如 
  while not ClientDataSet1.eof do 
  begin 
    ClientDataSet2.close; 
    ClientDataSet2.fetchparams;
    ClientDataSet2.Params.ParamByName  ('@pt_id').asinteger:=ClientDataSet1.FieldByName('pt_id').asinteger;     
    ClientDataSet2.open;
    ClientDataSet1.edit; 
   ClientDataSet1['print_qty']:=ClientDataSet2['qty'];  
   ClientDataSet1.next;
 end;
>>在ClientDataSet1的记录进行循环中,另一个ClientDataSet2是否可以进行多次打开关闭。
我覺得是沒問題的, 除非是主從關系的表!!
但是总是提示,clientdataset1为非编辑或者插入状态,所以不能对其进行付值操作,也就是运行到ClientDataSet1['print_qty']:=ClientDataSet2['qty'];  就出错误提示。
应该是没问题的,你可以先把 Clientdataset2 注释掉再试试,以确定它们是否相互影响
ClientDataSet1['print_qty']:=ClientDataSet2['qty'];之后应该要ClientDataSet1.post吧,怎么会不要这句呢?
问题找到了。
    因为在给ClientDataSet1的字段'print_qty'付值时,触发了一个change事件,关键在于此事件中包含ClientDataSet1.post,把这行注释掉就可以。
    也就是说post事件相当于把ClientDataSet1关闭了,所以不能再付值。


多谢大家的关心。
近期强制结贴  如有疑问  请发消息咨询  
 
此贴强制被结
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘