热门关键词好会计 好业财 T+ 易代账 好生意 用友U8 用友BIP

    详细信息

    您现在的位置:网站首页 >> 百科问答 >> 详细信息

    t3普及版数据升级标准版提示“错误信息 -2147217855 对象名ST_CalBegInvAge无效”处理方法?

    特价活动:>>>> 畅云管家新购、续费8折优惠,畅捷通T+cloud、好会计、易代账、好业财、好生意云产品8折优惠 

    用友t3普及版数据升级标准版提示“错误信息 -2147217855 对象名ST_CalBegInvAge无效”处理方法?

    问题现象:



    问题分析:升级数据库中缺少存储过程ST_CalBegInvAge。

    解决方案:执行如下SQL语句,假设998为出现问题帐套。

    USE [UFDATA_998_2013]

    GO

    /****** 对象:  StoredProcedure [dbo].[ST_CalBegInvAge]    脚本日期: 03/22/2017 11:00:02 ******/

    SET ANSI_NULLS ON

    GO

    SET QUOTED_IDENTIFIER ON

    GO


    --计算上年结存库龄

    CREATE PROCEDURE [dbo].[ST_CalBegInvAge]

    @cDBName Varchar(20),     --上一个账套名称

    @CurrentDate Datetime,     --计算日期

    @cCurDBName  varchar(20)    --当前账套名称

    As


    Declare @strLeftQty nVarchar(4000)


    Declare @StockStartDate datetime


    declare @cWhCode nvarchar(50)

    declare @cInvCode nvarchar(50)

    declare @cBatch nvarchar(50)

    declare @cFree1 nvarchar(120)

    declare @cFree2 nvarchar(120)

    declare @iQtty float

    declare @iNum float


    declare @autoId int

    declare @iVouchQtty float

    declare @iVouchNum float

    declare @iTempQtty float

    declare @iTempNum float


    declare @strSQLInvAge nVarchar(4000)

    declare @strInvAge nVarchar(4000)

    declare @strSQLIn  nVarchar(4000)

    declare @strSQLOut nVarchar(4000)

    declare @strNewRecord nVarchar(4000)


    declare @strSql nVarchar(200)

    declare @sSQL  nVarchar(200)

    declare @sBegdate As nVarchar(200)


    declare @iCou int


    --取库存启用日期

    Set @sBegdate = N'select @StockStartDate = cast(cValue as Datetime)  from ' + @cDBName + '..accinformation ' + ' Where cSysid=''ST'' and cName= ''dSTStartDate'' '


    exec sp_executesql @sBegdate,N'@StockStartDate datetime output', @StockStartDate output 


    If @StockStartDate is Null 

    Begin

    Return 

    End


    --计算本期当前结存


    Set @strNewRecord = N'Insert Into ' +@cDBName+'..STStockAgeTempTable(autoid, iqtty, inum) 

    values(@autoid, @iTempQtty, @iTempNum) '

    set @strLeftQty =

    ' SELECT cWhCode,

    cInvCode,

    IsNull(cBatch,'''') As cBatch,

    IsNull(cFree1,'''') As cFree1,

    IsNull(cFree2,'''') As cFree2,

    SUM(case when bRdFlag = 1 then iQuantity else -iQuantity end) as iQtty,

    SUM(case when bRdFlag = 1 then iNum else - iNum end) AS iNum

      From(  Select bRdFlag, cWhCode, cInvCode, iQuantity, INum, cBatch, cFree1, cFree2

     From '+ @cDBName+'..ST_BegInvAge 

     Union ALL

     Select R.bRdFlag, R.cWhCode, Rs.cInvCode, Rs.iQuantity, Rs.INum, Rs.cBatch, Rs.cFree1, Rs.cFree2

     From ' + @cDBName+ '..RdRecord R inner join '+@cDBName+'..RdRecords Rs on R.id = Rs.id 

     Where R.dDate >= @StartDate And R.dDate <= @CurrentDate And cVouchType <> ''33'' And cVouchType <> ''34'' 

     ) X

     group by cWhCode, cInvCode, IsNull(cBatch,''''),IsNull(cFree1,''''), IsNull(cFree2,'''') '


    --取入库语句

    Set @strSQLIn = ' Select AutoId, iQtty, iNum

      From (Select dDate, AutoId, abs(iQuantity) As iQtty, abs(iNum) As iNum 

    From '+@cDBName+'..ST_BegInvAge

    Where cWhCode = @cWhCode and cInvCode = @cInvCode and isnull(cBatch,'''') = @cBatch

    and isnull(cFree1,'''') = @cFree1 and isnull(cFree2,'''') = @cFree2

    Union ALL

    Select d.dDate,ds.autoid, Abs(ds.iQuantity) as iQtty, Abs(ds.iNum) as iNum

    from '+@cDBName+'..RdRecord d join ' + @cDBName + '..RdRecords ds on (d.id = ds.id) 

    where ( (d.bRdFlag = 1 and ds.iQuantity > 0) or (d.bRdFlag <> 1 and ds.iQuantity < 0))

    And d.dDate >= @StartDate and d.dDate <= @CurrentDate and d.cWhCode = @cWhCode 

    and ds.cInvCode = @cInvCode and IsNull(ds.cBatch,'''') = @cBatch and IsNull(ds.cFree1,'''') = @cFree1

    and IsNull(ds.cFree2,'''') = @cFree2) X

    order by dDate Desc,AutoID Desc for read only '


    Set @strSQLIn = N' declare curInvIn insensitive cursor for ' + @strSQLIn


    set @strLeftQty = N'declare curRd cursor for ' + @strLeftQty

    execute sp_executesql @strLeftQty,

    N'@CurrentDate Datetime, @StartDate Datetime',

    @CurrentDate, @StockStartDate


    open curRd



    fetch next from curRd into  

    @cWhCode,@cInvCode,@cBatch,

    @cFree1,@cFree2,@iQtty, @iNum


    --建立计算结果临时表

    Set @sSQL = N'select @Num = count(1) from ' + @cDBName + '..sysobjects ' + ' Where name = ''STStockAgeTempTable'' '


    exec sp_executesql @sSQL,N'@Num int output', @iCou output 


    If @iCou <> 0 

    Begin

    Exec (' Drop Table ' + @cDBName+'..STStockAgeTempTable')

    End


    Exec (' Create Table '+@cDBName+'..STStockAgeTempTable (autoId int , iQtty float,  iNum float)')


    --sp_help ST_BegInvAge


    while @@fetch_status = 0 

    begin

    if(@iQtty < 0 ) set @iQtty = 0 


    if(@iNum < 0 or @iNum is null) set @iNum = 0 


    Set @iTempQtty = 0.0

    Set @iTempNum = 0.0


    --按降序取入库

    execute sp_executesql @strSQLIn,

    N'@CurrentDate Datetime, @StartDate Datetime, @cWhCode varchar(50), 

    @cInvCode varchar(20), @cBatch varchar(50), 

    @cFree1 varchar(120), @cFree2 varchar(120)',

    @CurrentDate, @StockStartDate, @cWhCode, @cInvCode, @cBatch, @cFree1, @cFree2

     

    open curInvIn

    fetch next from curInvIn into @autoId, @iVouchQtty, @iVouchNum


    while (round(@iQtty,6) > 0 or round(@iNum,6) > 0) and @@fetch_status =0 

    begin

    if Round(@iQtty, 6) > Round(@iVouchQtty, 6)

    begin

    set @iTempQtty = @iVouchQtty

    set @iQtty = Round(@iQtty, 6) - Round(@iVouchQtty, 6)

    end 

    else begin

    set @iTempQtty = @iQtty

    set @iQtty = 0.0

    end 



    if Round(@iNum, 6) > Round(@iVouchNum,6)

    begin

    set @iTempNum = @iVouchNum

    set @iNum = Round(@iNum, 6) - Round(@iVouchNum, 6)

    end 

    else begin

    set @iTempNum = @iNum

    set @iNum = 0.0

    end 


    --增加计算结果

    execute sp_executesql @strNewRecord,

    N'@autoid int, @iTempQtty float, @iTempNum float',

    @autoid, @iTempQtty, @iTempNum


    Set @iTempQtty = 0.0

    Set @iTempNum = 0.0


    fetch next from curInvIn into @autoid, @iVouchQtty, @iVouchNum


    end 

    close curInvIn

    deallocate curInvIn


    fetch next from curRd into  

    @cWhCode,@cInvCode,@cBatch,@cFree1,@cFree2,@iQtty, @iNum

    end


    close curRd

    deallocate curRd


    --将结果数据输出


    set @strSQLInvAge =N'

    Select  [ID], [bRdFlag],[cVouchType],[cWhCode] ,[dDate] ,

    [cCode],[cRdCode],[cDepCode] ,[cPersonCode] ,[cVenCode] ,

    [cHandler] ,[cMemo] ,[cMaker] ,[cDefine1] ,[cDefine2] ,

    [cDefine3]  ,[cDefine4] ,[cDefine5] ,[cDefine6] ,[cDefine7]  ,

    [cDefine8] ,[cDefine9] ,[cDefine10] , RT.[AutoID] ,[cInvCode],

    (case when x.bRdFlag = 0 then -1 * RT.[iNum] else RT.[iNum] end)  As iNum,

    (case when x.bRdFlag = 0 then -1 * RT.[iQtty] else RT.[iQtty] end) As iQuantity ,

    [iUnitCost] ,[iPrice]  ,[cBatch],[cFree1] ,

    [cFree2] ,[dVDate] ,[cDefine22] ,[cDefine23] ,[cDefine24] ,

    [cDefine25] ,[cDefine26] ,[cDefine27] ,[cItem_class]  , [cItemCode]  ,

    [cName] ,[cItemCName]

    Into '+ @cCurDBName+'..ST_BegInvAge


    From '+@cDBName+'..STStockAgeTempTable RT Inner Join (

    Select  [ID], [bRdFlag],[cVouchType],[cWhCode] ,[dDate] ,

    [cCode],[cRdCode],[cDepCode] ,[cPersonCode] ,[cVenCode] ,

    [cHandler] ,[cMemo] ,[cMaker] ,[cDefine1] ,[cDefine2] ,

    [cDefine3]  ,[cDefine4] ,[cDefine5] ,[cDefine6] ,[cDefine7]  ,

    [cDefine8] ,[cDefine9] ,[cDefine10] ,[AutoID] ,[cInvCode],

    [iNum] ,[iQuantity] ,[iUnitCost] ,[iPrice]  ,[cBatch],[cFree1] ,

    [cFree2] ,[dVDate] ,[cDefine22] ,[cDefine23] ,[cDefine24] ,

    [cDefine25] ,[cDefine26] ,[cDefine27] ,[cItem_class]  , [cItemCode]  ,

    [cName] ,[cItemCName]

    From '+@cDBName+'..ST_BegInvAge

    Union All

    Select  R.[ID], [bRdFlag],[cVouchType],[cWhCode] ,[dDate] ,

    [cCode],[cRdCode],[cDepCode] ,[cPersonCode] ,[cVenCode] ,

    [cHandler] ,[cMemo] ,[cMaker] ,[cDefine1] ,[cDefine2] ,

    [cDefine3]  ,[cDefine4] ,[cDefine5] ,[cDefine6] ,[cDefine7]  ,

    [cDefine8] ,[cDefine9] ,[cDefine10] ,[AutoID] ,[cInvCode],

    [iNum] ,[iQuantity] ,[iUnitCost] ,[iPrice]  ,[cBatch],[cFree1] ,

    [cFree2] ,[dVDate] ,[cDefine22] ,[cDefine23] ,[cDefine24] ,

    [cDefine25] ,[cDefine26] ,[cDefine27] ,[cItem_class]  , [cItemCode]  ,

    [cName] ,[cItemCName]

    From '+@cDBName+'..RdRecords Rs inner join '+@cDBName+'..RdRecord R On (R.ID = Rs.ID)

    Where dDate >= @StartDate And dDate <= @CurrentDate And cVouchType <> ''33'' And cVouchType <> ''34'' 

    ) X On RT.autoId = X.autoId     

    '

    execute sp_executesql @strSQLInvAge, 

    N'@CurrentDate Datetime, @StartDate Datetime',

    @CurrentDate,

    @StockStartDate






     

     

    上一篇:畅捷通t3标准版查询出入库流水帐时提示‘第一行 — 附近有语法错误。’处理方法

    客服电话:400-665-0028

    关键字:用友财务软件,畅捷通软件,财务软件,进销存软件,U9官网,用友U8,用友T1,用友T+,用友T3,用友T6,畅捷通好会计,好生意,智+好业财,用友培训服务售后公司,畅捷通运营培训服务公司

    版权所有:用友畅捷通软件 Copyright © 2026 All rights reserved.

    鲁ICP备2020041017号-6