2017-01-06 6 views
0

Как я могу указать пустое значение времени данных даты в RDL. Я пытаюсь сделать следующее, но я получаю 01/01/00 для тех строк, у которых нет данных.Как передать ничего (пустое значение) на дату данных типа данных в RDL

=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 
+0

Вы пробовали 'NULL' или пустую строку' "" ' – Stephen

+0

У меня есть #Error для того, чтобы дать пустую строку" "внутри RDL. Я пробовал NULL внутри своего выражения, intellisense не позволяет пройти. – 4stars

+0

Что вы делаете со стоимостью? вы используете его в другом месте? У RDL не должно быть никаких проблем только с '= Fields! D_date.Value'. поместите 'NULL' внутри хранимой процедуры, если пустой – Stephen

ответ

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.