Как ничего не передавать (пустое значение) в тип данных даты и времени в 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
,