找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

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

[求助] 18年新建19年会计年度报错

  [复制链接]
发表于 2019-1-2 10:31:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

×
新建19年会计年度时报错,我使用之前备份过的账套可以新建, 原本想复制一下 这个存储过程,可备份账套 下也找不到这个存储过程。  求大神协助!!
微信图片_20190102102937.png

发表于 2019-1-2 12:14:50 | 显示全部楼层
上面那个要改成下面这个就可以执行了
create PROC [dbo].[BG_CalcBgYear] @year INTEGER
AS
BEGIN
DECLARE @cacc_id NVARCHAR(5);
DECLARE @BudgetAccountName varchar(20);
DECLARE @iFirstPeriod varchar(20);
DECLARE @mysql nvarchar(1000);
DECLARE @ParmDefinition NVARCHAR(200);

EXEC BG_GetBudgetAccountName
        @BudgetAccountName = @BudgetAccountName OUTPUT;
IF @BudgetAccountName is not null and exists(select   1   from   master..sysdatabases   where name=@BudgetAccountName)
        BEGIN
                DECLARE @existSql1 nvarchar(200);
                DECLARE @existSql2 nvarchar(200);
                DECLARE @exist1 varchar(100);
                DECLARE @exist2 varchar(100);
                SET @existSql1 = 'SELECT  @exist1 = ''true'' FROM '+@BudgetAccountName+'.[dbo].[sysobjects] WHERE   NAME = ''BG_BgYearPeriod'' and [type] = ''U''';
                SET @existSql2 = 'SELECT  @exist2 = ''true'' FROM '+@BudgetAccountName+'.[dbo].[sysobjects] WHERE   NAME = ''BG_BgYearVoucherDate'' and [type] = ''U''';

                exec sp_executesql @existSql1,N'@exist1 varchar(100) out ',@exist1 out
                exec sp_executesql @existSql2,N'@exist2 varchar(100) out ',@exist2 out
                IF  @exist1 = 'true' and @exist2 = 'true'
                BEGIN
                        SET @cacc_id = SUBSTRING(@BudgetAccountName, 8, 3);

                        SET @mysql = N'select @iFirstPeriod = iFirstPeriodOfCtrlAccount from (SELECT top 1 iFirstPeriodOfCtrlAccount FROM '+@BudgetAccountName+'..BG_BudgetYear WHERE iMakeYear = (SELECT top 1 iMakeYear FROM '+@BudgetAccountName+'..BG_LoginToMakeYear WHERE iLoginYear=@year)) a';
                        SET @ParmDefinition = N'@iFirstPeriod VARCHAR(20) OUT,@year INT'
                        EXECUTE sp_executesql @mysql, @ParmDefinition, @iFirstPeriod OUT,@year
                        PRINT @iFirstPeriod;
                        -----如果 @iFirstPeriod 为空,说明预算模块的iMakeYear还未初始化,或者期间有问题,此时应进入预算系统保存控制选项,不应用错误数据继续处理
                        IF(@iFirstPeriod IS NULL)
                        BEGIN
                                RETURN;
                        END
                        SET @mysql = N'DELETE  FROM '+@BudgetAccountName+'..BG_BgYearPeriod';
                        EXEC (@mysql);
                        SET @mysql = N'INSERT  INTO '+@BudgetAccountName+'..BG_BgYearPeriod
                                        ( iYear ,
                                          iId ,
                                          dBegin ,
                                          dEnd ,
                                          iBgYear ,
                                          iBgPeriod
                                        )
                                        SELECT  iYear ,
                                                        iId ,
                                                        dBegin ,
                                                        dEnd ,
                                                        YEAR(DATEADD(MONTH, -(' + @iFirstPeriod + ' - 1 ),
                                                                                 CAST(iYear AS NVARCHAR(4))+ ''-''
                                                                                 + CAST(iId AS NVARCHAR(4))+ ''-'' + ''1'')) AS iBgYear ,
                                                        MONTH(DATEADD(MONTH, -(' + @iFirstPeriod + ' - 1 ),
                                                                                  CAST(iYear AS NVARCHAR(4)) + ''-''
                                                                                  + CAST(iId AS NVARCHAR(4)) + ''-'' + ''1'')) AS iBgPeriod
                                        FROM    UFSystem..UA_Period
                                        WHERE   cAcc_Id = ' + @cacc_id;
                        EXEC (@mysql);
                        SET @mysql = N'DELETE  FROM '+@BudgetAccountName+'..BG_BgYearVoucherDate';
                        EXEC (@mysql);
                        SET @mysql = N'INSERT  INTO '+@BudgetAccountName+'..BG_BgYearVoucherDate
                                        ( iBgYear ,
                                          dBegin ,
                                          dEnd
                                        )
                                        SELECT  iBgYear ,
                                                        MIN(dBegin) ,
                                                        MAX(dEnd)
                                        FROM    '+@BudgetAccountName+'..BG_BgYearPeriod
                                        GROUP BY iBgYear';
                        EXEC (@mysql);
                END;
        END;
END;
回复 点赞 拍砖

使用道具 举报

发表于 2019-1-2 11:03:36 | 显示全部楼层
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[BG_CalcBgYear] @year INTEGER
AS
BEGIN
DECLARE @cacc_id NVARCHAR(5);
DECLARE @BudgetAccountName varchar(20);
DECLARE @iFirstPeriod varchar(20);
DECLARE @mysql nvarchar(1000);
DECLARE @ParmDefinition NVARCHAR(200);

EXEC BG_GetBudgetAccountName
        @BudgetAccountName = @BudgetAccountName OUTPUT;
IF @BudgetAccountName is not null and exists(select   1   from   master..sysdatabases   where name=@BudgetAccountName)
        BEGIN
                DECLARE @existSql1 nvarchar(200);
                DECLARE @existSql2 nvarchar(200);
                DECLARE @exist1 varchar(100);
                DECLARE @exist2 varchar(100);
                SET @existSql1 = 'SELECT  @exist1 = ''true'' FROM '+@BudgetAccountName+'.[dbo].[sysobjects] WHERE   NAME = ''BG_BgYearPeriod'' and [type] = ''U''';
                SET @existSql2 = 'SELECT  @exist2 = ''true'' FROM '+@BudgetAccountName+'.[dbo].[sysobjects] WHERE   NAME = ''BG_BgYearVoucherDate'' and [type] = ''U''';

                exec sp_executesql @existSql1,N'@exist1 varchar(100) out ',@exist1 out
                exec sp_executesql @existSql2,N'@exist2 varchar(100) out ',@exist2 out
                IF  @exist1 = 'true' and @exist2 = 'true'
                BEGIN
                        SET @cacc_id = SUBSTRING(@BudgetAccountName, 8, 3);

                        SET @mysql = N'select @iFirstPeriod = iFirstPeriodOfCtrlAccount from (SELECT top 1 iFirstPeriodOfCtrlAccount FROM '+@BudgetAccountName+'..BG_BudgetYear WHERE iMakeYear = (SELECT top 1 iMakeYear FROM '+@BudgetAccountName+'..BG_LoginToMakeYear WHERE iLoginYear=@year)) a';
                        SET @ParmDefinition = N'@iFirstPeriod VARCHAR(20) OUT,@year INT'
                        EXECUTE sp_executesql @mysql, @ParmDefinition, @iFirstPeriod OUT,@year
                        PRINT @iFirstPeriod;
                        -----如果 @iFirstPeriod 为空,说明预算模块的iMakeYear还未初始化,或者期间有问题,此时应进入预算系统保存控制选项,不应用错误数据继续处理
                        IF(@iFirstPeriod IS NULL)
                        BEGIN
                                RETURN;
                        END
                        SET @mysql = N'DELETE  FROM '+@BudgetAccountName+'..BG_BgYearPeriod';
                        EXEC (@mysql);
                        SET @mysql = N'INSERT  INTO '+@BudgetAccountName+'..BG_BgYearPeriod
                                        ( iYear ,
                                          iId ,
                                          dBegin ,
                                          dEnd ,
                                          iBgYear ,
                                          iBgPeriod
                                        )
                                        SELECT  iYear ,
                                                        iId ,
                                                        dBegin ,
                                                        dEnd ,
                                                        YEAR(DATEADD(MONTH, -(' + @iFirstPeriod + ' - 1 ),
                                                                                 CAST(iYear AS NVARCHAR(4))+ ''-''
                                                                                 + CAST(iId AS NVARCHAR(4))+ ''-'' + ''1'')) AS iBgYear ,
                                                        MONTH(DATEADD(MONTH, -(' + @iFirstPeriod + ' - 1 ),
                                                                                  CAST(iYear AS NVARCHAR(4)) + ''-''
                                                                                  + CAST(iId AS NVARCHAR(4)) + ''-'' + ''1'')) AS iBgPeriod
                                        FROM    UFSystem..UA_Period
                                        WHERE   cAcc_Id = ' + @cacc_id;
                        EXEC (@mysql);
                        SET @mysql = N'DELETE  FROM '+@BudgetAccountName+'..BG_BgYearVoucherDate';
                        EXEC (@mysql);
                        SET @mysql = N'INSERT  INTO '+@BudgetAccountName+'..BG_BgYearVoucherDate
                                        ( iBgYear ,
                                          dBegin ,
                                          dEnd
                                        )
                                        SELECT  iBgYear ,
                                                        MIN(dBegin) ,
                                                        MAX(dEnd)
                                        FROM    '+@BudgetAccountName+'..BG_BgYearPeriod
                                        GROUP BY iBgYear';
                        EXEC (@mysql);
                END;
        END;
END;
回复 点赞 拍砖

使用道具 举报

发表于 2019-1-3 02:50:50 | 显示全部楼层
create PROC [dbo].[BG_GetBudgetAccountName] @BudgetAccountName VARCHAR(20) OUTPUT
AS
    BEGIN
        DECLARE @cConnString VARCHAR(200);
        DECLARE @iIndex_b INTEGER;

        SET @cConnString = ( SELECT cConnString
                             FROM   BG_BudgetAccount
                           );
        SET @iIndex_b = CHARINDEX('database', @cConnString);
        SET @cConnString = STUFF(@cConnString, 1, @iIndex_b - 1, '');
        SET @cConnString = STUFF(@cConnString, CHARINDEX(';', @cConnString),
                                 LEN(@cConnString), '');
        SET @BudgetAccountName = STUFF(@cConnString, 1,
                                       CHARINDEX('=', @cConnString), '');
    END;
回复 点赞 拍砖

使用道具 举报

 楼主| 发表于 2019-1-2 15:40:06 | 显示全部楼层
sztlbb 发表于 2019-1-2 12:14
上面那个要改成下面这个就可以执行了
create PROC [dbo]. @year INTEGER
AS

模块 'BG_CalcBgYear' 取决于缺少的对象 'BG_GetBudgetAccountName'。仍将创建此模块;但是,只有在该对象存在之后它才能成功运行。



我在查询器里执行后是这个结果  

回复 点赞 拍砖

使用道具 举报

 楼主| 发表于 2019-1-2 16:04:49 | 显示全部楼层
sztlbb 发表于 2019-1-2 12:14
上面那个要改成下面这个就可以执行了
create PROC [dbo]. @year INTEGER
AS

微信截图_20190102160329.png
这个地方的查的存储过程 ,没问题吧? 可就是没有上面的说的那些对象。
回复 点赞 拍砖

使用道具 举报

发表于 2019-1-2 10:52:23 | 显示全部楼层
缺少存储过程,提示了。如果不清楚,可以私聊
回复 点赞 拍砖

使用道具 举报

发表于 2019-1-2 12:13:16 | 显示全部楼层
在查询分析器中执行就可以了,
回复 点赞 拍砖

使用道具 举报

发表于 2019-1-2 12:13:43 | 显示全部楼层
备份帐套下找不到是不可能的,肯定有
回复 点赞 拍砖

使用道具 举报

发表于 2019-1-2 16:10:35 | 显示全部楼层
上一年中找到这个存储过程,建立到18年就可以解决

点评

我怎么找都找不到这些存储过程, 如果你能找到 截个图给我看看在哪  详情 回复 发表于 2019-1-2 16:14
回复 点赞 拍砖

使用道具 举报

 楼主| 发表于 2019-1-2 16:14:27 | 显示全部楼层
yangbolive 发表于 2019-1-2 16:10
上一年中找到这个存储过程,建立到18年就可以解决

我怎么找都找不到这些存储过程, 如果你能找到 截个图给我看看在哪
回复 点赞 拍砖

使用道具 举报

发表于 2019-1-2 17:43:19 | 显示全部楼层
谢谢,赚一下金币,帮你顶!
回复 点赞 拍砖

使用道具 举报

发表于 2019-1-3 02:47:15 | 显示全部楼层
547135302 发表于 2019-1-2 15:40
模块 'BG_CalcBgYear' 取决于缺少的对象 'BG_GetBudgetAccountName'。仍将创建此模块;但是,只有在该对 ...

那是因为你缺少这个存储过程
回复 点赞 拍砖

使用道具 举报

发表于 2019-1-3 02:48:25 | 显示全部楼层
547135302 发表于 2019-1-2 16:04
这个地方的查的存储过程 ,没问题吧? 可就是没有上面的说的那些对象。

对,存储过程就是在这里查。
回复 点赞 拍砖

使用道具 举报

发表于 2019-1-8 21:54:11 | 显示全部楼层
新年开帐套后,在填制凭证中出现很多以往年度红字单边凭证,是怎么回事?怎么解决?请大神赐教
回复 点赞 拍砖

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-23 21:14 , Processed in 0.049504 second(s), 14 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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