Здесь происходит несколько вещей.Дата сохраняется надлежащим образом, но отображается неправильно из-за параметров форматирования.Эта строка довольно проблематична:
="Dated: " & Format(cdate(Fields!InvDate.Value), "dd-MMM-yyyy")
CDate принимает значение, обычно строку, и преобразует его в дату, которую вы затем берете и форматируете обратно в строку.Теперь по умолчанию для отчетов установлено, что их свойство Language установлено на English (United States)
, поэтому функция CDate принимает строковое представление даты 04-Nov-2011
как 04/11/2011
, которое затем преобразуется, используя формат US MM-dd-yyyy
(не пакистанская) в качестве даты 11-Apr-2011
, потому что она думает, что месяц наступит первым.
Итак, вам следует изменить настройку языка вашего отчета на =User!Language
, чтобы он поддерживал любой язык пользователя и соответствующим образом форматировал его.Этого может быть достаточно, чтобы заставить ваше выражение работать.
Независимо от того, если Fields!InvDate.Value
предоставляется в качестве поля даты (как и должно быть), функция CDate не требуется, и это должно работать:
="Dated: " & Format(Fields!InvDate.Value, "dd-MMM-yyyy")
Существует также FormatDateTime , но, к сожалению, он не поддерживает формат, который вы хотите использовать.