我用的VC教程里给的ADO数据库操作的方法,用的是MSADO15.DLL,和MSADOX.DLL两个动态库.操作的数据库是ACCESS的MDB文件
现在碰到了这么个蛋痛的问题:
我创建了几个视图,这几个视图设为V1,V2,...,Vn(n没有上限的,根据情况而定,不一定会创建几个)
这几个视图里的字段设为(零件,零件数量,备注)
然后,我想把这几个视图里字段 零件 相同的,汇总一下,并把备注的文本,连接起来
我想的方法如下: PS:这是大神skywoodsky教的
1.创建许多也可以下标递增的视图,VS1,VS2,...,VSn;
然后VS1=v1 , VS2=VS1+V2 , VSn=VSn-1 + Vn ,....
在VS2=VS1+V2组合的时间,有可能VS1中有的零件,V2中没有,反之V2中有的VS1中也可能没有,所以用了联合查询
CREATE VIEW VS2 AS
SELECT 零件,A.零件数量+B.零件数量 AS 零件数量 ,a.备注+','+b.备注
FROM VS1 A,V2 B WHERE A.零件=B.零件
UNION
SELECT .... FROM ... WHERE A.零件<>B.零件
UNION .....
(上面的语句是用的CString::FORMAT自动生成的VS2,VS1和V2,这里只是个假设,方便看)
然后我发现,特妹的ADO的JET SQL居然不支持视图里的联合查询,没办法我又百度了下,参考高手们的指点想了个办法2
2.直接创建临时的表TABLE,不用视图,大约伪码如下
(1).SELECT INTO T1 FROM V1
(2).UPDATE T1 SET 零件数量=T1.零件数量+DSUM("零件数量","V2","零件="'&T1.零件&"'"
(3).INSERT 剩下那些不相等的
第(2)步不能改为子查询,因为JET也不支持UPDATE的子查询,我搞了半天才明白过来...
第2个办法也出了问题,虽然SQL语句在程序执行过程中没抛出异常,但是零件数量全为空,练个零都没有...
好像是这个DSUM前面不能有运算符吧,这不蛋痛吗~~
我的本想这样做最后的汇总
已有视图V1,V2,..,Vn
然后创建临时的表或视图 设名为VT1,VT2,VT3..,VTn;
VT1=V1; VT2=VT1+V2; VT3=VT2+V3 ;...; VTn=VTn-1+Vn;
可是我发现貌似JET里真没这中能最后汇总起来的方式,视图没有联合查询,用表就要用UPDATE,如果不用UPDATE,也是有更麻烦的方法,不过感觉SQL语句写到那份上,是不是也太2了,而且如果这是一个大数据库,最后的执行会卡死人的.
我想问下,有没有什么好的方法,可以执行方法1和2里的语句,比如再加个什么组件或库之类的,最好可以做成绿色的软件,因为我会在单位好几台电脑上用这个软件,每个电脑都打补丁会很郁闷的,因为有些机器装了还原卡...
或者各位还有什么别的可执行的语句来完成这个数据库的汇总.
先谢谢各位大神了.坐等神自天而降~~