Как ничего не передавать (пустое значение) в тип данных даты и времени в RDL

Как я могу дать пустое значение для типа данных даты и времени в RDL. Я пробую следующее, но я получаю 01.01.00 в строку, в которой нет данных.

 =iif(Fields!D_date.Value is nothing,Nothing,Fields!D_date.Value)

Даже если я использую

 =iif(Fields!D_date.Value=0,Nothing,Fields!D_date.Value) 

или же

 =iif(Fields!D_date.Value="",Nothing,Fields!D_date.Value)

Я получаю ошибку в моих строках данных.

Я передаю '' в хранимую процедуру. Если нет данных для этого столбца.

Это хранимая процедура, которую я использую:

SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO

ALTER PROCEDURE [dbo].[uspDBLines]
    (@InLinesPerPage int)
AS
    DECLARE @TotalRows int
    DECLARE @Remainder int
    DECLARE @NumPages int
    DECLARE @NextPageRows int

    SET @TotalRows = 0

    SELECT 
        ROW_NUMBER() OVER (ORDER BY P_id) AS InvoiceRow,
        CusID, B_id, Inv_No, B_Desc, D_date, Qty, Size, Price, Amt
    INTO
        #tempInvoice
    FROM 
        Purchase_Details

    SET @TotalRows = @@ROWCOUNT

    IF @TotalRows = 0
    BEGIN
        WHILE @TotalRows < @InLinesPerPage -- Add Blank Rows will generate blank invoice.
        BEGIN
            SET @TotalRows = @TotalRows + 1

            INSERT INTO #tempInvoice (InvoiceRow, CusID, B_id, Inv_No, B_Desc, D_date, Qty, Size, Price, Amt)
            VALUES (@TotalRows, '', '', 0, '', '', 0, '', 0, 0)
        END
    END
    ELSE
    BEGIN
        SET @Remainder = @TotalRows % @InLinesPerPage -- get remainder

        IF @Remainder != 0 
        BEGIN
            -- Get the current page increase by 1 because we have a remainder.
            SET @NumPages = @TotalRows / @InLinesPerPage + 1 
            SET @NextPageRows = @NumPages * @InLinesPerPage

            WHILE @TotalRows < @NextPageRows -- Add Blank Rows
            BEGIN
                SET @TotalRows = @TotalRows + 1

                INSERT INTO #tempInvoice (InvoiceRow, CusID, B_id, Inv_No, B_Desc, D_date, Qty, Size, Price, Amt)
                VALUES (@TotalRows, '', '', 0, '', '', 0, '', 0, 0)
            END
        END
    END

    SELECT * 
    FROM #tempInvoice 
    ORDER BY InvoiceRow ASC

    RETURN

1 ответ

Таблица может очень хорошо иметь дату, как 1/1/1900 заполнено для всех недействительных дат. Таким образом, отчет просто показывает, что там, так как они не NULL,

Так что попробуйте это выражение:

=IIf(Fields!D_date.Value <= CDate("1/1/1900"), Nothing, Fields!D_date.Value)

Если они действительно NULL использовать этот:

    =IIf(Fields!D_date.Value = Nothing, Nothing, Fields!D_date.Value)

SSRS не использует is оператор для сравнения Nothing,

Другие вопросы по тегам