在做一个三层的MIS,现在中间层用ADO取出了数据,交给客户端使用。
问题是,中间层取数据的过程是被封装的了,而且数据集的列结构不确定(用户定义过程)
但我需要在这个结果集的基础上做汇总以及分组小计等其他操作
分组条件和汇总条件也是自定义的,无法预置,只能在运行期生成
现在感到很难办,我不想遍历数据集一条一条地判断,然后汇总
这样效率太低而且程序写起来麻烦维护也有问题
所以我想在中间层的结果的基础上再做一次SQL查询,这样能解决大部分问题
比如说,能不能把ADOQuery或者ClientDataSet的结果存成本地文件DBF,或者XML之类
然后用对应的数据库引擎在这之上再做一次查询
希望我表达清楚了我的意思,分不够可以加,希望大家帮忙
问题是,中间层取数据的过程是被封装的了,而且数据集的列结构不确定(用户定义过程)
但我需要在这个结果集的基础上做汇总以及分组小计等其他操作
分组条件和汇总条件也是自定义的,无法预置,只能在运行期生成
现在感到很难办,我不想遍历数据集一条一条地判断,然后汇总
这样效率太低而且程序写起来麻烦维护也有问题
所以我想在中间层的结果的基础上再做一次SQL查询,这样能解决大部分问题
比如说,能不能把ADOQuery或者ClientDataSet的结果存成本地文件DBF,或者XML之类
然后用对应的数据库引擎在这之上再做一次查询
希望我表达清楚了我的意思,分不够可以加,希望大家帮忙
------------------------------
procedure SaveToFile(const FileName: string = ''; Format TDataPacketFormat=dfBinary);
type TDataPacketFormat = (dfBinary, dfXML, dfXMLUTF8);
因为产生数据集的存储过程以后可能是由非专业人员去写的
而且要同时支持SQLServer Oracle数据库
所以我感觉很难在存储过程上做文章
上次也问过如何让一个自定义的存储过程返回一个表(数据集)
没有得到好的办法
如果能从这个角度去解决也是可以的
即:对于几乎任意的SQL语句组合,用其创建存储过程
使其返回的结果是最后一条select的结果
但是XML文件用什么引擎去连接可以直接做SQL查询呢?
最初就是这样想的
但是你怎么把数据插到临时表呢?
取到中间层后再解析结果集的表结构
构造SQL语句,然后建立临时表
一条一条插么?
而是执行SQL
ClientDataSet不能支持SQL吧