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

    详细信息

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

    双十二特惠!活动开始啦! 折扣巨大 咨询电话:400-665-0028 用友t3普及版数据升级标准版提示:错误信息 -2147217855 对象名ST_CalBegInvAge无效处理方法。

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

    问题现象:


    升级数据库对象名ST_CalBegInvAge无效.png


    问题分析:

    升级数据库中缺少存储过程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