Службы отчетности - обработка пустой даты? - PullRequest
2 голосов
/ 14 июля 2010

Эй, у меня есть параметр отчета, который выглядит следующим образом: 01.01.2009 00: 00: 00

Это дата (в виде строки), как вы уже догадались :). Проблема в том, что этот параметр также может быть пустой строкой. Поэтому я попробовал эти выражения:

  1. = IIf (IsDate (Параметры! DateTo.Value), CDate (Параметры! DateTo.Value), "")
  2. = IIf (Len (Параметры! DateTo.Value)> 0, CDate (Параметры! DateTo.Value), "")

И не работают, и значение для текстового поля, в котором я печатаю выражение, всегда равно # Ошибка . Как только я удаляю материал CDate, он работает, но я должен его использовать. Есть ли другой способ добиться этого? Я хочу, чтобы ничего не отображалось, если это не дата или дата (формат dd.mm.yyyy), если это дата.

Идеи?

Спасибо:)

Ответы [ 2 ]

2 голосов
/ 14 июля 2010

Все аргументы IIf оцениваются, что приводит к вашей ошибке, так как CDate завершится ошибкой для пустой строки.

Вы можете обойти это, просто написав функцию по этим направлениям, используя стандартный оператор if:

Function FormatDate(ByVal s As String) As String
    If (s <> "") Then
        Return CDate(s).ToString()
    Else
        Return ""
    End If
End Function

Затем назовите его с помощью: =Code.FormatDate(Parameters!DateTo.Value)

1 голос
/ 14 июля 2010

Во-первых, исправьте вашу базу данных, чтобы правильно хранить даты, а не делать эти обходные пути. Возможно, у вас там тоже плохие данные (например, 30 февраля 2010 г. или мой любимый, как можно скорее). Поистине, нет оправдания тому, чтобы не исправить это на уровне базы данных, где это необходимо исправить, за исключением случаев, когда это программное обеспечение предоставлено производителем, которое вы не можете изменить (хотя я бы орал на них, хорошо уведомил их и попросил их исправить) их модель данных или перейти к новому продукту, разработанному кем-то, кто знает, что они делают. Поставщик, который не может правильно использовать даты, вероятно, будет иметь очень плохое программное обеспечение). В запросе, который вы используете для выбора информации, рассматривали ли вы просто преобразование всех ненулевых значений в ноль?

...