IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[zl_RptNotInvoiceSum3]') AND OBJECTPROPERTY(ID, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[zl_RptNotInvoiceSum3]
GO
CREATE PROCEDURE zl_RptNotInvoiceSum3
@CustID                         VARCHAR(50)='',----客户编号
@SODeliveryDateFrom            VARCHAR(50),---送货日期从
@SODeliverDateTo                VARCHAR(50),---送货日期到
--@SOInvoiceDate                   VARCHAR(50),--发票截止日期
@SalesMan                       VARCHAR(50)=''--业务员
WITH ENCRYPTION
AS
BEGIN
SET @CustID = RTRIM(LTRIM(ISNULL(@CustID,'')))
SET @SODeliveryDateFrom = RTRIM(LTRIM(ISNULL(@SODeliveryDateFrom ,'')))
SET @SODeliverDateTo = RTRIM(LTRIM(ISNULL(@SODeliverDateTo,'')))
SET @SalesMan = RTRIM(LTRIM(ISNULL(@SalesMan,'')))
CREATE TABLE #NotSOInvoiceSumAmount(
                InvoiceNote                     VARCHAR(50),
                CustID                          VARCHAR(50),
                CustName                        VARCHAR(200),
InvoiceQty               REAL,
                SumInvoiceQty                    REAL,
--TotalArea         FLOAT,--总面积
--TotalM2PerPiece         REAL,--总金额
--TotalWeight         REAL,
--TotalAmount         REAL,
                InvoiceDate                     VARCHAR(50),
                AcceptDate                      VARCHAR(50),
               -- ActualDelDate                      VARCHAR(50),
SOCategory         VARCHAR(50),--产品种类
                InvoiceAmountWithTax            REAL,--含税金额
                SumInvoiceAmountWithTax            REAL,--总含税金额
                InvoiceAmountWithoutTax         REAL,--不含税金额
                SumInvoiceAmountWithoutTax         REAL,--总不含税金额
                --TotalSingleActualArea DECIMAL(18,3),--单芯总面积
--TotalDoubleActualArea DECIMAL(18,3),---双芯总面积
                Salesman                        VARCHAR(50)
)
PRINT CONVERT (VARCHAR(50),GETDATE(),20)+'A'
 INSERT INTO #NotSOInvoiceSumAmount(                InvoiceNote,  
                CustID,        
                CustName,             
InvoiceQty,
                InvoiceDate,
                AcceptDate,
               -- ActualDelDate ,
                SOCategory,
                InvoiceAmountWithTax , 
                InvoiceAmountWithoutTax, 
                Salesman
              
)select 
                A.InvoiceNote,  
                A.CustID,        
                A.CustName ,             
A.InvoiceQty,
A.InvoiceDate,
A.AcceptDate,
                --B.ActualDelDate,
                A.SOCategory,         
A.InvoiceAmountWithTax,
A.InvoiceAmountWithoutTax,
                A.Salesman 
                   FROM  VSOInvoiceItem A WITH(NOLOCK)where 
         
                 ((A.InvoiceNote='') OR(ISNULL(A.InvoiceNote,'')='不开发票'))
                AND ((@CustID='') OR (A.CustID=@CustID))
AND ((@Salesman='') OR (A.Salesman=@Salesman))
                AND ((@SODeliveryDateFrom='')OR(A.AcceptDate>=@SODeliveryDateFrom))
               AND ((@SODeliverDateTo='')OR(A.AcceptDate<=@SODeliverDateTo))update #NotSOInvoiceSumAmount
 
set
          SumInvoiceQty=InvoiceQty
from
   (
select    
                    
                   SUM(A.InvoiceQty)AS SumInvoiceQtyfrom
                  VSOInvoiceItem A WITH(NOLOCK)
where                    A.CustID<>'set'
--                 ((A.InvoiceNote='') OR(ISNULL(A.InvoiceNote,'')='不开发票'))
--                 AND((@CustID='') OR (A.CustID=@CustID))
   )BB
where           #NotSOInvoiceSumAmount.InvoiceNote=BB.InvoiceNote
-----------------------------------------------------------------------------------------------UPDATE #NotSOInvoiceSumAmountset
             SumInvoiceAmountWithTax=InvoiceAmountWithTax
from          
(
select
             SUM(A.InvoiceAmountWithTax)AS SumInvoiceAmountWithTax
from
         VSOInvoiceItem A WITH(NOLOCK)where 
                   A.CustID<>'set'
--               ((A.InvoiceNote='') OR(ISNULL(A.InvoiceNote,'')='不开发票'))
--              AND((@CustID='') OR (A.CustID=@CustID))
    )BB
where           #NotSOInvoiceSumAmount.InvoiceNote=BB.InvoiceNote
          
SELECT * FROM zl_RptNotInvoiceSum3ORDER BY 
                    CustID,
                    SOCategoryEND
-- select A.InvoiceNote ,A.CustID ,A.CustName ,A.AcceptDate  from vsoinvoiceitem A 
-- WHERE  InvoiceNote='' or InvoiceNote='不开发票' and AcceptDate>='2012-04-01'执行时成功的,但是在调用EXEC zl_RptNotInvoiceSum3 '','','',''
提示:服务器: 消息 207,级别 16,状态 3,过程 zl_RptNotInvoiceSum3,行 81
列名 'InvoiceNote' 无效。
服务器: 消息 207,级别 16,状态 1,过程 zl_RptNotInvoiceSum3,行 102
列名 'InvoiceNote' 无效。
各位高手给指点一下!!!

解决方案 »

  1.   

    重点检查下这里where #NotSOInvoiceSumAmount.InvoiceNote=BB.InvoiceNote
      

  2.   

    列名 'InvoiceNote' 无效嘛.
    查一下有没有这列.
      

  3.   

    找到问题所在了,修改后代码如下:-- insert #InvoiceSum select *from vsoinvoiceitem where InvoiceNote=''and acceptdate<='2012-03-31 00:00:00.000'  order by custname asc
    -- 
    -- select *from vsoinvoiceitem where InvoiceNote=''and acceptdate<='2012-03-31 00:00:00.000'  order by custname asc--EXEC zl_RptNotInvoiceSum3 '','2012-4-1','2012-4-10',''
    IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[zl_RptNotInvoiceSum3]') AND OBJECTPROPERTY(ID, N'IsProcedure') = 1)
    DROP PROCEDURE [dbo].[zl_RptNotInvoiceSum3]
    GO
    CREATE PROCEDURE zl_RptNotInvoiceSum3
    @CustID                         VARCHAR(50)='',----客户编号
    @SODeliveryDateFrom            VARCHAR(50),---送货日期从
    @SODeliverDateTo                VARCHAR(50),---送货日期到
    --@SOInvoiceDate                   VARCHAR(50),--发票截止日期
    @SalesMan                       VARCHAR(50)=''--业务员
    WITH ENCRYPTION
    AS
    BEGIN
    SET @CustID = RTRIM(LTRIM(ISNULL(@CustID,'')))
    SET @SODeliveryDateFrom = RTRIM(LTRIM(ISNULL(@SODeliveryDateFrom ,'')))
    SET @SODeliverDateTo = RTRIM(LTRIM(ISNULL(@SODeliverDateTo,'')))
    SET @SalesMan = RTRIM(LTRIM(ISNULL(@SalesMan,'')))
    CREATE TABLE #NotSOInvoiceSumAmount(
                    InvoiceNote                     VARCHAR(50),
                    CustID                          VARCHAR(50),
                    CustName                        VARCHAR(200),
    InvoiceQty               REAL,
                    SumInvoiceQty                    REAL,
    --TotalArea         FLOAT,--总面积
    --TotalM2PerPiece         REAL,--总金额
                    InvoiceDate                     VARCHAR(50),
                    AcceptDate                      VARCHAR(50),
    SOCategory         VARCHAR(50),--产品种类
                    InvoiceAmountWithTax            REAL,--含税金额
                    SumInvoiceAmountWithTax            REAL,--总含税金额
                    InvoiceAmountWithoutTax         REAL,--不含税金额
                    SumInvoiceAmountWithoutTax         REAL,--总不含税金额
                    --TotalSingleActualArea DECIMAL(18,3),--单芯总面积
    --TotalDoubleActualArea DECIMAL(18,3),---双芯总面积
                    Salesman                        VARCHAR(50)
    )
    PRINT CONVERT (VARCHAR(50),GETDATE(),20)+'A'
     INSERT INTO #NotSOInvoiceSumAmount(                InvoiceNote,  
                    CustID,        
                    CustName,             
    InvoiceQty,
                    InvoiceDate,
                    AcceptDate,
                    SOCategory,
                    InvoiceAmountWithTax , 
                    InvoiceAmountWithoutTax, 
                    Salesman
                  
    )select 
                    A.InvoiceNote,  
                    A.CustID,        
                    A.CustName ,             
    A.InvoiceQty,
    A.InvoiceDate,
    A.AcceptDate,
                    A.SOCategory,         
    A.InvoiceAmountWithTax,
    A.InvoiceAmountWithoutTax,
                    A.Salesman 
                       FROM  VSOInvoiceItem A WITH(NOLOCK)where 
             
                     ((A.InvoiceNote='') OR(ISNULL(A.InvoiceNote,'')='不开发票'))
                    AND ((@CustID='') OR (A.CustID=@CustID))
    AND ((@Salesman='') OR (A.Salesman=@Salesman))
                    AND ((@SODeliveryDateFrom='')OR(A.AcceptDate>=@SODeliveryDateFrom))
                   AND ((@SODeliverDateTo='')OR(A.AcceptDate<=@SODeliverDateTo))
    --select *from vsoinvoiceitem
    update #NotSOInvoiceSumAmount
     
    set
              SumInvoiceQty=InvoiceQty
    from
       (
    select    
                        A.InvoiceNote ,
                        SUM(A.InvoiceQty)AS SumInvoiceQtyfrom
                           #NotSOInvoiceSumAmount A WITH(NOLOCK) 
    where 
                       ((A.InvoiceNote='') OR(ISNULL(A.InvoiceNote,'')='不开发票'))
                         AND ISNULL(A.CustID,'')<>''
    GROUP BY
    A.InvoiceNote
                    
       )BBwhere                              #NotSOInvoiceSumAmount.InvoiceNote=BB.InvoiceNote-----------------------------------------------------------------------------------------------UPDATE #NotSOInvoiceSumAmountset
                 SumInvoiceAmountWithTax=InvoiceAmountWithTax
    from          
    (
    select
                        A.InvoiceNote ,
                        SUM(A.InvoiceAmountWithTax)AS SumInvoiceAmountWithTax
    from
                      
                   #NotSOInvoiceSumAmount A WITH(NOLOCK)     
                    -- VSOInvoiceItem A WITH(NOLOCK)where 
                    ((A.InvoiceNote='') OR(ISNULL(A.InvoiceNote,'')='不开发票'))
                        AND ISNULL(A.CustID,'')<>''
    GROUP BY
    A.InvoiceNote
        )BB
    where         #NotSOInvoiceSumAmount.InvoiceNote=BB.InvoiceNote ------------------------------------------------------------------------------------------     
        
    UPDATE #NotSOInvoiceSumAmount
    SET
                 SumInvoiceAmountWithoutTax=InvoiceAmountWithoutTax
    from          
    (
    select
                        A.InvoiceNote,
                        SUM(A.InvoiceAmountWithoutTax)AS SumInvoiceAmountWithoutTax
    from
                          #NotSOInvoiceSumAmount A WITH(NOLOCK) where                   ((A.InvoiceNote='') OR(ISNULL(A.InvoiceNote,'')='不开发票'))
                      AND ISNULL(A.CustID,'')<>''
    GROUP BY
    A.InvoiceNote
    )BB
    where           #NotSOInvoiceSumAmount.InvoiceNote=BB.InvoiceNote
                  SELECT * FROM #NotSOInvoiceSumAmount
    ORDER BY 
                        CustID,
                        SOCategoryEND
    -- select A.InvoiceNote ,A.CustID ,A.CustName ,A.AcceptDate  from vsoinvoiceitem A 
    -- WHERE  InvoiceNote='' or InvoiceNote='不开发票' and AcceptDate>='2012-04-01'