我写错了 TPrevider 应该是TdataPrevider

解决方案 »

  1.   

    条条大路通罗马,你可以根据需要来选择。您如果使用Delphi5,也可以使用TClientDataset.CommandText属性来代替上面的代码。不过服务器的TProvider需加一个Options:AllowCommandText.
      

  2.   

    1.如果客户端需要(并不是所有的表都需要传至客户端),则用TDATAPREVIDER控件.
    2.如果你设置了主从表关系,则从表可以不用TDATAPREVIDER.
    3.按照你的思路,能体现三层结构的优点?可能不见得吧!为什么只用Tquery?好多方法的,你可以参考些资料看看!
      

  3.   

    有两种办法,一种就是在服务器端设置好相应参数,客户端取得它的参数后给服务器传参数值(右击ClientDataset,选Fields Params就能取得服务器参数)。
    另一种方法,就是在客户端动态设置ClientDataset的CommandText(服务器端的DataSetProvider的Option属性要设置好poAllowCommandText的属于为True),或动态设置它的Filter属性(Filtered为True)!最后提醒你一句,三层结构服务器端最好不要用ADODataSet(客户端有主从表的话),它有许多Bug,就用ADOQuery!!