找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

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

自定义报表提示未定义变量@cCusCode 但是已经定义了

[复制链接]
发表于 2013-12-13 16:00:12 | 显示全部楼层 |阅读模式
悬赏30金币未解决
现在要写一个销售收入成本信息自定义报表,通过销售出库单取出客户、产品等信息,通过项目号进行关项目辅助账中取出价格数据,然后进行汇总
收入(含大修)成本(含大修)产品软件收入
总账-项目辅助账,会计科目:600101、600102、600103;605104总账-项目辅助账.会计科目:640101、640103;640203总账-项目辅助账.会计科目:600102

USE UFDATA_012_2011

--exec usp_zhangjie
--@cCusCode='全部',
--@start='2013-01-01',
--@end='2013-12-31',
--@cPersonCode='全部',
--@cDepCode='全部',
--@csocode='全部',
--@strCode='全部',
--@cInvCode='全部'




GO
/****** Object:  StoredProcedure [dbo].[usp_zhangjie]    Script Date: 12/08/2013 17:28:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
--建立销售收入信息表
GO
alter proc [dbo].[usp_zhangjie]
  @cCusCode varchar(50),   --客户编码
  @start datetime, --开始日期
  @end datetime,  --结束日期
  @cPersonCode varchar(50), --业务员编码
  @cDepCode varchar(50),  --部门编码
  @csocode varchar(50),  --需求跟踪号
  @strCode varchar(50),  --合同编码
  @cInvCode varchar(50)  --产品编码
as
BEGIN

--建立销售收入信息表
IF OBJECT_ID('tempdb..#temp_ccodeIN') IS NOT NULL
DROP TABLE #temp_ccodeIN;
GO

CREATE TABLE #temp_ccodeIN(
    citem_id VARCHAR(255) NULL,                       --项目号
    md money NULL                                     --支出金额
      )

INSERT INTO #temp_ccodeIN(citem_id,md)
SELECT g.citem_id,sum(g.md)
FROM GL_accass G
WHERE g.ccode in ('600101','600102','600103','605104')
group BY g.citem_id

--建立销售成本信息表
GO
IF OBJECT_ID('tempdb..#temp_ccodeout') IS NOT NULL
DROP TABLE #temp_ccodeout;
GO

  CREATE TABLE #temp_ccodeout(
    citem_id VARCHAR(255) NULL,                       --项目号
    md money NULL                                     --支出金额
      )

INSERT INTO #temp_ccodeout(citem_id,md)
SELECT g.citem_id,sum(g.md)
FROM GL_accass G
WHERE g.ccode in ('640101','640103','640203')
group BY g.citem_id


--建立软件成本信息表
GO
IF OBJECT_ID('tempdb..#temp_ccodesoftware') IS NOT NULL
DROP TABLE #temp_ccodesoftware;
GO

  CREATE TABLE #temp_ccodesoftware(
    citem_id VARCHAR(255) NULL,                       --项目号
    md money NULL                                     --支出金额
      )

INSERT INTO #temp_ccodesoftware(citem_id,md)
SELECT g.citem_id,sum(g.md)
FROM GL_accass G
WHERE g.ccode in ('600102')
group BY g.citem_id

--存储过程开始
SELECT A.cCusCode,h.[md],i.[md],j.[md],A.cPersonCode,A.dnverifytime,A.cDepCode,b.csocode,B.strCode,B.cInvCode,
c.cinvname,d.cdepname,e.cpersonname,f.cCusname
FROM RDRECORD A
INNER JOIN RDRECORDS B
ON A.ID=B.ID
AND A.cVouchType=32
inner join inventory c
on b.cinvcode = c.cinvcode
left outer join department d
on a.cdepcode = d.cdepcode
left outer join person e
on a.cpersoncode = e.cpersoncode
inner join Customer f
on a.cCusCode=f.cCusCode
left outer JOIN #temp_ccodein H
ON H.citem_id=B.cItemCode
left outer JOIN #temp_ccodeout I
ON I.citem_id=B.cItemCode
left outer JOIN #temp_ccodesoftware j
ON j.citem_id=B.cItemCode

where (@cCusCode = '全部' OR a.cCusCode = @cCusCode) and (a.dnverifytime >= @start and a.dnverifytime <= @end) and
        (@cPersonCode = '全部' or a.cpersoncode = @cPersonCode) and (@cDepCode = '全部' or a.cDepCode = @cDepCode) and
        (@csocode = '全部'or b.csocode = @csocode) and (@strCode = '全部' or b.strCode = @strCode) and (@cInvCode = '全部' or b.cInvCode = @cInvCode)
end

 楼主| 发表于 2013-12-13 16:03:07 | 显示全部楼层
本帖最后由 jiebozhang 于 2013-12-13 16:04 编辑

--这个是可以执行的,新建临时表,然后执行存储过程
--但存在的问题是临时表数据并不是时时更新的
--所以需要将临时表建立、取数写在存储过程里面,这样就可以自动更新临时表数据

USE UFDATA_012_2011 --use UFDATA_012_2013

exec usp_zhangjie
@cCusCode='全部',
@start='2013-01-01',
@end='2013-12-31',
@cPersonCode='全部',
@cDepCode='全部',
@csocode='全部',
@strCode='全部',
@cInvCode='全部'


IF OBJECT_ID('tempdb..#temp_ccodeIN') IS NOT NULL
DROP TABLE #temp_ccodeIN;
GO

CREATE TABLE #temp_ccodeIN(
    citem_id VARCHAR(255) NULL,                       --项目号
    md money NULL                                     --支出金额
      )

INSERT INTO #temp_ccodeIN(citem_id,md)
SELECT g.citem_id,sum(g.md)
FROM GL_accass G
WHERE g.ccode in ('600101','600102','600103','605104')
group BY g.citem_id

--建立销售成本信息表
GO
IF OBJECT_ID('tempdb..#temp_ccodeout') IS NOT NULL
DROP TABLE #temp_ccodeout;
GO

  CREATE TABLE #temp_ccodeout(
    citem_id VARCHAR(255) NULL,                       --项目号
    md money NULL                                     --支出金额
      )

INSERT INTO #temp_ccodeout(citem_id,md)
SELECT g.citem_id,sum(g.md)
FROM GL_accass G
WHERE g.ccode in ('640101','640103','640203')
group BY g.citem_id

--建立软件成本信息表
GO
IF OBJECT_ID('tempdb..#temp_ccodesoftware') IS NOT NULL
DROP TABLE #temp_ccodesoftware;
GO

  CREATE TABLE #temp_ccodesoftware(
    citem_id VARCHAR(255) NULL,                       --项目号
    md money NULL                                     --支出金额
      )

INSERT INTO #temp_ccodesoftware(citem_id,md)
SELECT g.citem_id,sum(g.md)
FROM GL_accass G
WHERE g.ccode in ('600102')
group BY g.citem_id

GO
/****** Object:  StoredProcedure [dbo].[usp_zhangjie]    Script Date: 12/08/2013 17:28:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
--建立销售收入信息表
GO
alter proc [dbo].[usp_zhangjie]
  @cCusCode varchar(50),   --客户编码
  @start datetime, --开始日期
  @end datetime,  --结束日期
  @cPersonCode varchar(50), --业务员编码
  @cDepCode varchar(50),  --部门编码
  @csocode varchar(50),  --需求跟踪号
  @strCode varchar(50),  --合同编码
  @cInvCode varchar(50)  --产品编码
as
begin
SELECT A.cCusCode,h.[md],i.[md],j.[md],A.cPersonCode,A.dnverifytime,A.cDepCode,b.csocode,B.strCode,B.cInvCode,
c.cinvname,d.cdepname,e.cpersonname,f.cCusname
FROM RDRECORD A
INNER JOIN RDRECORDS B
ON A.ID=B.ID
AND A.cVouchType=32
inner join inventory c
on b.cinvcode = c.cinvcode
left outer join department d
on a.cdepcode = d.cdepcode
left outer join person e
on a.cpersoncode = e.cpersoncode
inner join Customer f
on a.cCusCode=f.cCusCode
--INNER JOIN GL_accass G
--ON B.cItemCode=G.citem_id
--and g.ccode in ('600101','600102','600103','605104','640101','640103','640203')
left outer JOIN #temp_ccodein H
ON H.citem_id=B.cItemCode
left outer JOIN #temp_ccodeout I
ON I.citem_id=B.cItemCode
left outer JOIN #temp_ccodesoftware j
ON j.citem_id=B.cItemCode

where (@cCusCode = '全部' OR a.cCusCode = @cCusCode) and (a.dnverifytime >= @start and a.dnverifytime <= @end) and
        (@cPersonCode = '全部' or a.cpersoncode = @cPersonCode) and (@cDepCode = '全部' or a.cDepCode = @cDepCode) and
        (@csocode = '全部'or b.csocode = @csocode) and (@strCode = '全部' or b.strCode = @strCode) and (@cInvCode = '全部' or b.cInvCode = @cInvCode)
end
回复

使用道具 举报

发表于 2014-1-3 20:58:21 | 显示全部楼层
表示楼主好牛叉,我好菜,只能帮顶了
回复

使用道具 举报

发表于 2014-2-18 15:59:42 | 显示全部楼层
不管是临时表,还是实体表,只是存数据用的,可以用任何SQL语句,只要你能取数据就能达到报表的功能
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-30 01:32 , Processed in 0.032953 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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