找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
楼主: inpal

[技巧] EXCEL 调用SQL 取用友数据做表

   火... [复制链接]
发表于 2014-9-20 17:56:45 | 显示全部楼层
好东西啊 学习了 !
回复 点赞 拍砖

使用道具 举报

发表于 2014-9-20 21:24:56 | 显示全部楼层
嗯,值得学习啊。
回复 点赞 拍砖

使用道具 举报

发表于 2014-9-24 11:01:23 | 显示全部楼层
学习了!学习了!
回复 点赞 拍砖

使用道具 举报

发表于 2014-9-26 12:04:58 | 显示全部楼层
不错  好东西
回复 点赞 拍砖

使用道具 举报

发表于 2014-9-26 16:15:38 | 显示全部楼层
太感谢,楼主好文章!!!!
回复 点赞 拍砖

使用道具 举报

发表于 2014-9-29 09:26:36 | 显示全部楼层
好想法,值得学习,这样编辑起来更简单了
回复 点赞 拍砖

使用道具 举报

发表于 2014-9-30 20:27:45 | 显示全部楼层
学习好东西学习学习
回复 点赞 拍砖

使用道具 举报

  • 打卡等级:初来乍到
  • 打卡总天数:12
  • 打卡月天数:9
  • 打卡总奖励:29
  • 最近打卡:2024-11-23 11:37:09
发表于 2014-10-7 10:46:45 | 显示全部楼层
感谢楼主分享
回复 点赞 拍砖

使用道具 举报

发表于 2014-10-8 09:22:21 | 显示全部楼层
不错不错
回复 点赞 拍砖

使用道具 举报

发表于 2014-10-8 17:01:05 | 显示全部楼层
楼主是高手啊,多谢分享
回复 点赞 拍砖

使用道具 举报

发表于 2014-10-9 18:13:06 | 显示全部楼层
本帖最后由 APOLLOOOOO 于 2014-10-9 18:20 编辑

用友UFO的报表运行速度慢,公式编辑界面差,我们老早就不用UFO了,都是用Excel+SQL做报表,如现金流量表查询脚本代码:
  1. /***现金流量表凭证查询***/
  2. --USE UFDATA_201_2014 --连接指定数据库
  3. DECLARE @_YEAR smallint = 2014 --确定查询年度
  4. DECLARE @CodeLin varchar(20) =(SELECT  CODINGRULE
  5.                                                                 FROM GradeDef_Base
  6.                                                                 WHERE KEYWORD = 'code' AND iyear = @_YEAR)
  7. DECLARE @CodeLin1 int = LEFT (@CodeLin , 1)
  8. DECLARE @CodeLin2 int = SUBSTRING (@CodeLin , 2 ,1) + @CodeLin1
  9. DECLARE @CodeLin3 int = SUBSTRING (@CodeLin , 3 ,1) + @CodeLin2
  10. DECLARE @CodeLin4 int = SUBSTRING (@CodeLin , 4 ,1) + @CodeLin3
  11. WITH code_CTE AS (SELECT ccode, ccode_name, igrade, bcash | bbank AS 现金
  12.                                         FROM code
  13.                                         WHERE iyear = @_YEAR) --科目公用表表达式 (CTE)
  14.         ,GL_accvouch2 AS (SELECT GL_accvouch.iyear   AS 年
  15.                                                         ,GL_accvouch.iperiod AS 月
  16.                                                         ,DAY (GL_accvouch.dbill_date) AS 日
  17.                                                         ,GL_accvouch.csign AS 凭证类别
  18.                                                         ,GL_accvouch.i_id
  19.                                                         ,GL_accvouch.ino_id AS 凭证编号
  20.                                                         ,现金科目 = CAST((SELECT  code_CTE.现金
  21.                                                                                                 FROM code_CTE
  22.                                                                                                 WHERE  GL_accvouch.ccode = code_CTE.ccode)
  23.                                                                                         AS int)
  24.                                                 FROM  GL_accvouch
  25.                                                 WHERE  GL_accvouch.iperiod BETWEEN 1 AND 12
  26.                                                                 AND GL_accvouch.iflag IS NULL
  27.                                                                 AND GL_accvouch.iyear = @_YEAR
  28.                                                 ) --判断现金分录
  29. SELECT 凭证.iyear   AS 年
  30.           ,凭证.iperiod AS 月
  31.       ,DAY (凭证.dbill_date) AS 日
  32.       ,记帐标志 = CASE  WHEN  凭证.ibook = 1 THEN '√' ELSE NULL END
  33.       ,凭证.csign AS 凭证类别
  34.       ,凭证.ino_id AS 凭证编号
  35.       ,凭证.cdigest AS 摘要
  36.       ,凭证.ccode AS 科目编码
  37.       ,code.ccode_name AS 科目名称
  38.       ,LEFT (凭证.ccode , @CodeLin1) AS 一级编码
  39.       ,一级科目 = (SELECT  code_CTE.ccode_name
  40.                                         FROM code_CTE
  41.                                         WHERE  LEFT (凭证.ccode , @CodeLin1) = code_CTE.ccode)
  42.       ,二级编码 = CASE WHEN code.igrade > 1 THEN LEFT (凭证.ccode,@CodeLin2) ELSE NULL END
  43.       ,二级科目 = CASE WHEN code.igrade > 1
  44.                        THEN (SELECT  code_CTE.ccode_name
  45.                                                                 FROM code_CTE
  46.                                                                 WHERE  LEFT (凭证.ccode , @CodeLin2) = code_CTE.ccode)
  47.                        ELSE NULL END
  48.       ,现金科目 = CASE WHEN (SELECT  code_CTE.现金
  49.                                                                 FROM code_CTE
  50.                                                                 WHERE  凭证.ccode = code_CTE.ccode) = 1 THEN '√'
  51.                        ELSE NULL END
  52.       ,SIGN((SELECT SUM(现金科目)
  53.         FROM  GL_accvouch2
  54.         WHERE GL_accvouch2.年 = @_YEAR
  55.                                 AND GL_accvouch2.月 = 凭证.iperiod
  56.                                 AND GL_accvouch2.凭证类别 = 凭证.csign
  57.                                 AND GL_accvouch2.凭证编号 = 凭证.ino_id)) AS 流量标志
  58.           ,主表项目 = CASE WHEN ((SELECT SUM(现金科目)
  59.                                                                         FROM  GL_accvouch2
  60.                                                                         WHERE GL_accvouch2.年 = @_YEAR
  61.                                                                                         AND GL_accvouch2.月 = 凭证.iperiod
  62.                                                                                         AND GL_accvouch2.凭证类别 = 凭证.csign
  63.                                                                                         AND GL_accvouch2.凭证编号 = 凭证.ino_id)) = 0
  64.                                                         THEN NULL  --非流量凭证无主表项目
  65.         WHEN (SELECT  code_CTE.现金
  66.                         FROM code_CTE
  67.                         WHERE  凭证.ccode = code_CTE.ccode) = 1
  68.                 THEN '现金'
  69.         WHEN LEFT (凭证.ccode , @CodeLin3) IN (66018001,66018002)
  70.                 THEN '支付给职工以及为职工支付的现金'        --自营工资福利
  71.         WHEN LEFT (凭证.ccode , @CodeLin3) =  660303
  72.                 THEN '汇率变动对现金的影响额'  --汇兑损益
  73.         WHEN LEFT (凭证.ccode , @CodeLin3) BETWEEN 12210009 AND 12210011
  74.                 THEN '购买商品、接受劳务支付的现金'  --自营备用金与押金
  75.         WHEN LEFT (凭证.ccode , @CodeLin2) =  122100
  76.                 THEN '销售商品、提供劳务收到的现金'  --其他自营流水
  77.         WHEN LEFT (凭证.ccode , @CodeLin2) IN (660101,660102)
  78.                 THEN '支付给职工以及为职工支付的现金'  --工资福利
  79.         WHEN LEFT (凭证.ccode , @CodeLin2) IN (660302,660303)
  80.                 THEN '收到的其他与经营活动有关的现金'  --财务费用之利息收入、汇兑损益
  81.         WHEN LEFT (凭证.ccode , @CodeLin1) IN (1121,1122,6001,6041,6051)
  82.                 THEN '销售商品、提供劳务收到的现金'
  83.                         --应收票据、应收账款、主营收入、租赁收入、其他收入
  84.         WHEN LEFT (凭证.ccode , @CodeLin1) IN (1221,6301,6711)
  85.                 THEN '收到的其他与经营活动有关的现金'  --其他应收、营业外收支
  86.         WHEN LEFT (凭证.ccode , @CodeLin1) IN (1405,1801,2202,6401,6402,6601,6603)
  87.                 THEN '购买商品、接受劳务支付的现金'
  88.                         --库存商品、长期待摊、应付账款、主营与其他业务成本、销售与财务费用
  89.         WHEN LEFT (凭证.ccode , @CodeLin1) IN (2221,6403,6801)
  90.                 THEN '支付的各项税费'  --税费
  91.         WHEN LEFT (凭证.ccode , @CodeLin1) =  6111
  92.                 THEN '取得投资收益所收到的现金'
  93.         WHEN LEFT (凭证.ccode , @CodeLin1) IN (1601,1604,1701)
  94.                 THEN '购建固定资产、无形资产和其他长期资产所支付的现金'
  95.         WHEN LEFT (凭证.ccode , @CodeLin1) IN (4001,4002)
  96.                 THEN '吸收投资所收到的现金'
  97.         WHEN LEFT (凭证.ccode , @CodeLin1) =  4104
  98.                 THEN '分配股利利润或偿付利息所支付的现金'
  99.         ELSE NULL
  100.         END
  101.           ,附表项目 = CASE
  102.         WHEN LEFT (凭证.ccode , @CodeLin1) =  4103 THEN '净利润'
  103.         WHEN LEFT (凭证.ccode , @CodeLin1) =  1602 THEN '固定资产折旧'
  104.         WHEN LEFT (凭证.ccode , @CodeLin1) =  1801 THEN '待摊费用减少(减:增加)'
  105.         WHEN LEFT (凭证.ccode , @CodeLin1) =  6603 THEN '财务费用'
  106.         WHEN LEFT (凭证.ccode , @CodeLin1) =  6111 THEN '投资损失(减:收益)'
  107.         WHEN LEFT (凭证.ccode , @CodeLin1) =  1405 THEN '存货的减少(减:增加)'
  108.         WHEN LEFT (凭证.ccode , @CodeLin1) IN (1122,1221)
  109.                 THEN '经营性应收项目的减少(减:增加)'
  110.         WHEN LEFT (凭证.ccode , @CodeLin1) IN (2202,2221)
  111.                 THEN '经营性应付项目的增加(减:减少)'
  112.         ELSE NULL
  113.         END
  114.       ,凭证.md AS 借方金额
  115.       ,凭证.mc AS 贷方金额
  116. FROM    GL_accvouch AS 凭证
  117.                 LEFT OUTER JOIN code ON 凭证.ccode = code.ccode
  118. WHERE    凭证.iperiod BETWEEN 1 AND 12
  119.                 AND 凭证.iflag IS NULL
  120.                 AND 凭证.iyear = @_YEAR
  121.                 --过虑非法月分(期初数据可能会显示0月等)与作废凭证、筛选年度
  122.                 AND (((SELECT SUM(现金科目)
  123.                                 FROM  GL_accvouch2
  124.                                 WHERE GL_accvouch2.年 = @_YEAR
  125.                                                 AND GL_accvouch2.月 = 凭证.iperiod
  126.                                                 AND GL_accvouch2.凭证类别 = 凭证.csign
  127.                                                 AND GL_accvouch2.凭证编号 = 凭证.ino_id)) > 0
  128.                         OR LEFT (凭证.ccode , @CodeLin1)
  129.                                 IN (1122,1221,1405,1602,1801,2202,2221,4103,6111,6603))
  130. ORDER BY 1,2,5,6
复制代码


点评

你也不简单啊!!  发表于 2023-8-4 10:07
这个怎么复制出来的就是可以复制代码  详情 回复 发表于 2019-8-20 17:08
太牛起了!!!  详情 回复 发表于 2019-7-17 11:22
掌握数据库代码确实很方便  详情 回复 发表于 2016-11-14 10:58
SQL  详情 回复 发表于 2015-7-9 17:17
这是什么方法?我会的是VBA,你这个??  详情 回复 发表于 2014-12-16 13:19
回复 点赞 4 拍砖 0

使用道具 举报

发表于 2014-10-10 09:34:09 | 显示全部楼层
学无止境,学海无涯
回复 点赞 拍砖

使用道具 举报

发表于 2014-10-11 13:26:04 | 显示全部楼层
挺好, 楼主做的十分仔细啊.
回复 点赞 拍砖

使用道具 举报

发表于 2014-10-11 14:19:32 | 显示全部楼层
excel有时候还是挺强大滴
回复 点赞 拍砖

使用道具 举报

发表于 2014-10-15 16:44:38 | 显示全部楼层
实际应用过程中要做好安全管理,最好配合域及DB的管理方可
回复 点赞 拍砖

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-11-23 12:05 , Processed in 0.058380 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表