Поле ADO adDate возвращает "12:00 am", когда его значение равно NULL

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

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

Кто-нибудь видел в ActiveReport такую ​​проблему раньше?

2 ответа

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

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

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

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

В частности, проверьте свойство DataValue элемента управления Textbox/Field и, если оно является вашим "нулевым или пустым" значением (независимо от того, какое значение вы вводите в свой набор записей), задайте для свойства Text элементов управления 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
Другие вопросы по тегам