adoquery + dsp + clientdataset + dbgrideh 数据排序的问题;
2013-12-24 15:27
274 查看
在维护COM+结构的三层结构的软件时,如果在服务端使用adoquery 查询后由 DSP 打包再传到客户端。
这种方式,效率很低,,通常查询结果,是不再需要 apply 到服务器的。
所以,我自己采用的方式,是在服务器端用 adoquery 查询,然后直接将 ADO结果直接传到客户端(不再经过DSP),然后再在客户端使用 adoquery 来接收数据;这样数据高效。
但是在客户端直接使用datasource 去连接 adouqery ,再使用 dbgrideh 来显示数据,在使用 dbgrideh 的数据排序就不能简单的使用ehlib 提供的简单的排序功能;
因为客户端的adoquery组件是没有设置 connection 及 connectioinstring 属性。所以,会出错错误;
所以,客户端的结构改为:
服务器 adoqery -> 客户 adoquery + dsp + clientdataset + dbgrideh 。
由于 clientdataset 是一个很优秀的数据集,但是仍然有些问题,所以我使用了 wwclientdataset 组件。
就算这样,仍然不能简单的使用Ehlib简单的排序功能,所以要自己写代码去支持它;
在 DBGRIDEH的 onTitleBtnClick 中写代码
这种方式,效率很低,,通常查询结果,是不再需要 apply 到服务器的。
所以,我自己采用的方式,是在服务器端用 adoquery 查询,然后直接将 ADO结果直接传到客户端(不再经过DSP),然后再在客户端使用 adoquery 来接收数据;这样数据高效。
但是在客户端直接使用datasource 去连接 adouqery ,再使用 dbgrideh 来显示数据,在使用 dbgrideh 的数据排序就不能简单的使用ehlib 提供的简单的排序功能;
因为客户端的adoquery组件是没有设置 connection 及 connectioinstring 属性。所以,会出错错误;
所以,客户端的结构改为:
服务器 adoqery -> 客户 adoquery + dsp + clientdataset + dbgrideh 。
由于 clientdataset 是一个很优秀的数据集,但是仍然有些问题,所以我使用了 wwclientdataset 组件。
就算这样,仍然不能简单的使用Ehlib简单的排序功能,所以要自己写代码去支持它;
procedure TDM.PubP_OnTitleBtnClick(Sender: TObject; ACol: Integer; Column: TColumnEh;C:TwwClientDataSet); var OldIndex,NewIndex: string; begin C.DisableControls; OldIndex:= C.IndexName; NewIndex:= Column.FieldName; if OldIndex <> '' then begin C.IndexName:= ''; C.DeleteIndex(OldIndex); end; case Column.Title.SortMarker of smNoneEh, smDownEh: begin C.AddIndex('px', NewIndex, [ixPrimary]); Column.Title.SortMarker:= smDownEh; end; smUpEh : begin C.AddIndex('px', NewIndex, [ixDescending]); Column.Title.SortMarker:= smUpEh; end; end; C.IndexName:= 'px'; C.First; C.EnableControls; end;调用:
在 DBGRIDEH的 onTitleBtnClick 中写代码
dm.PubP_OnTitleBtnClick(Sender,ACol,Column ,CDS_QueryPOSat);
相关文章推荐
- Delphi:ClientDataset+TDataSetProvider的数据保存问题
- 动态将ADOQuery数据移植到ClientDataSet通用函数
- 动态将ADOQuery数据移植到ClientDataSet通用函数
- ClientDataSet加上TDataSetProvider的数据保存问题
- ClientDataset+TDataSetProvider的数据保存问题
- ClientDataSet加上TDataSetProvider的数据保存问题
- DELPHI +ClientDataSet+DBGRIDEH 进行排序
- 排序问题(后台数据)
- mysql分页加排序数据重复问题解决方案
- MFC CListCtrl的用法.Style/插入、删除、选中数据及排序问题等
- 转:ADOQuery代替ClientDataSet做3-Tier系统
- MFC CListCtrl的用法.Style/插入、删除、选中数据及排序问题等
- [工具]利用EasyRTSPClient工具检查摄像机RTSP流不能播放原因以及排查音视频数据无法播放问题
- ASTACLIENTDATASET 排序
- access中,有无将文本类型的数据格式转化成数值型的函数?(解决 order by 的非数字排序问题)
- Set剔除重复数据和List的排序问题
- C\S结构中成批保存CLIENTDATASET中的数据
- DataSet的排序的问题
- DBGridEh数据不能左对齐问题
- 2.数据检索|模糊查询|数据排序|数据分组| 常见问题0726