Поле ADO adDate возвращает 00:00, если его значение равно Null.

Мы работаем над проектом, который создает отчет с использованием ActiveReports 2 (COM для VB6), данные поступают из набора записей ADO, который мы создали вручную (мы используем базу данных с несколькими значениями, которая не возвращает наборы записей).

Если я устанавливаю поле данных как дату и устанавливаю для типа набора записей значение adDate и имею нулевое или пустое значение, оно возвращает «12:00» в ActiveReports. Если в поле есть данные, они отображаются правильно. Я даже экспортировал набор записей в excel, и он работал правильно.

Кто-нибудь видел, чтобы у ActiveReport была эта проблема раньше?


person NeerPatel    schedule 02.03.2012    source источник
comment
Попробуйте использовать adDBTimeStamp вместо adDate для синтетического набора записей.   -  person wqw    schedule 03.03.2012


Ответы (2)


У меня нет опыта работы с AR2, но у меня есть большой опыт работы с контроллером Sharpgrid от той же компании.

Я бы попробовал установить значение EMPTY oCtrl.value = Empty или пустую строку oCtrl.value = "" или oCtrl.value = Null. Вам может понадобиться установить эти значения после загрузки данных из набора записей.

person bugtussle    schedule 02.03.2012

Я не уверен, как наборы записей ADO справляются с типами adDate и «null или empty», «пусто» или «ничего» (имейте в виду, что каждое из этих значений отличается и может обрабатываться по-разному в самой ADO). Если вы используете null (или vbNull?), вам нужно сообщить набору записей, что поле допускает значение null. Я нашел частичный пост о null и датах в ADO здесь.

Однако независимо от того, что касается ActiveReports, вы можете контролировать, как любое из этих значений отображается, если вы можете обнаружить его в наборе записей. Используйте событие Format для раздела, содержащего элемент управления, содержащий вашу дату, чтобы изменить текстовое поле. вывод.

В частности, проверьте свойство DataValue элемента управления Textbox/Field и, если оно является вашим "нулевым или пустое» (независимо от того, какое значение вы указываете в своем наборе записей), задайте текст поля свойство в пустую строку. Ниже примерно так, как я ожидаю, будет выглядеть код вашего события формата:

Private Sub Detail_Format()
   ' If date value is null or blank value Then make sure the date textbox displays as empty in the report output:
   If txtDate.DataValue is Nothing Then
      txtDate.Text = ""
   End If
End Sub
person Scott Willeke    schedule 03.03.2012