Поле ADO adDate возвращает «12:00 am», когда его значение равно NULL - PullRequest
0 голосов
/ 02 марта 2012

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

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

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

Ответы [ 2 ]

1 голос
/ 02 марта 2012

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

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

0 голосов
/ 03 марта 2012

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

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

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

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
...