我用三层结构,客户端通过Tclientdataset访问中间层的
DataSetProvider1来访问数据库,但现在问题是我客户端的多个窗体用同一个provider ,如果某个窗体通过查询,但数据没有浏览完毕,再打开另一个窗体的查询就会出现"cannot perform this operation on an open dataset"错误
请高手帮忙!

解决方案 »

  1.   

       我想你还是没有理解PROVIDER的功能,每个PROVIDER对应一个与其对应的一个DATESET,也就是说,他实际上就是在操作1个DATESET,你可能让1个DATESET保留多个SQL的数据吗?显然不行。
        一般来说,对于客户端的DATESET如果遇到此类问题需要创建多个PROVIDER,以便于同时共用多种交互数据。没有其他更好的方法,因为DELPHI本身的局限就是如此
      

  2.   

    你试试这样,每个窗体对应一个Tclientdataset
    clientdataset1.data=datasetProvider1.data; 
    clientdataset2.data=clientdataset1.data; 
    clientdatase3.data=clientdataset1.data; 这样应该可以