下述程序我使用数据透视表的外部数据及EXECL的连接外部数据的功能均试了一下,在导至EXECL过程中提示,导出数据发生问题字样,但下述程序能将数据导至QUERY中,大家不信可以用带变量的sql试一下。
我使用是基于我公司财务用友软件的SQL数据库
程序代码如下:
declare @a1 char(10),@a2 char(10)
select @a1='2003-9-1',@a2='2003-10-1'
SELECT gl_accvouch.CCODE as 科目代码,gl_accvouch.CDEPT_ID as 部门代码,gl_accvouch.CCUS_ID as 客户代码,CUSTOMER.CCUSNAME as 客户名称,gl_accvouch.CNAME as 业务员,SUM(CASE WHEN (gl_accvouch.DBILL_DATE)<@a1 THEN gl_accvouch.MD-gl_accvouch.MC ELSE 0 END) AS 期初余额,SUM(CASE WHEN (gl_accvouch.dbill_date) between @a1 and @a2 THEN gl_accvouch.MD ELSE 0 END) AS 累计借方发生额,SUM(CASE WHEN gl_accvouch.dbill_date between @a1 and @a2 THEN gl_accvouch.MC ELSE 0 END) AS 累计貸方发生额,(SUM(CASE WHEN gl_accvouch.DBILL_DATE<@a1 THEN gl_accvouch.MD-gl_accvouch.MC ELSE 0 END)+SUM(CASE WHEN gl_accvouch.dbill_date between @a1 and @a2 THEN gl_accvouch.MD ELSE 0 END)-SUM(CASE WHEN gl_accvouch.dbill_date between @a1 and @a2 THEN gl_accvouch.MC ELSE 0 END)) AS 期末余额
from UFDATA_001_2003.dbo.gl_accvouch,UFDATA_001_2003.dbo.CUSTOMER
WHERE CCODE='113101' AND gl_accvouch.CCUS_ID=CUSTOMER.CCUSCODE
GROUP BY gl_accvouch.CCODE,gl_accvouch.CCUS_ID,CUSTOMER.CCUSNAME,gl_accvouch.CDEPT_ID,gl_accvouch.CNAME
order by gl_accvouch.CCUS_ID
我在上述的程序中使用变量,主要是考虑到变更日期数据的方便性,如果把上述变量全部变更为日期数的话,即没有赋值变量的话,上述程序提出的数据导出到execl中完全没问题。
如果导入到ACCESS中,就多了一个环节,就不能发挥EXECL在数据库方面优越的即时数据刷新的功能,实际上很多软件象用友金蝶,其表功能是有限制的,如用EXECL的数据库连接可以十分方便的完成符合自己企业要求的数据提取过程,而且所做的仅为刷新数据或修改EXECL的query的参数值即可,和使用程序界面没什么两样,而且数据是直接提至EXECL中,能更方便的完成数据的后期处理过程,用熟了,真是很爽,但维一不足的就是我上面所述的不能进行变量的编程导出问题,再次望各位大侠赐教。
[em08]
[此贴子已经被作者于2003-12-7 18:56:40编辑过] |