Поле 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