LEADERSOFT.ru Разработка на заказ программ и сайтов
Форумы по информационным технологиям
 
Регистрация  |  Вход
left
Форумы Минимизировать
ПоискСписок форумов
  Программирование  Microsoft Access. Файлы mdb и accdb  по отчетам...
 по отчетам
 
 15.02.2008 11:37:26
Natalia50
20 сообщения


по отчетам
Есть отчет, источником данных при создании которой послужил параметрический запрос. При открытии отчета пользователь вводит значение искомых параметров. В случае, если в искомой таблице есть значения- выводится в отчете вся информация .

Вопрос в том, как, в случае, если записей с вводимимыми параметрами нет вывести в отчете сообщение для пользователя о том, что в таблице нет записей с таким значением, или параметр не был введен верно (провести поверку правильности ввода параметра(по типу данных например дата) . возможно ли это?
Заранее спасибо.
 15.02.2008 11:51:41
Admin1
731 сообщения
1-ый


Re: по отчетам

В отчет надо добавить событие, что нет данных.

Private Sub Report_NoData(Cancel As Integer)
    MsgBox "Нет данных"
    Cancel = True
End Sub

 15.02.2008 13:24:43
Natalia50
20 сообщения


Re: по отчетам
спасибо большое! а как проверка?
 15.02.2008 14:42:20
Admin1
731 сообщения
1-ый


Re: по отчетам

Надо открыть запрос и проверить его записи. Openrecordset, а так отчет сам проверяет, если записи или их нет.

 11.07.2008 22:50:26
nord-woolf
20 сообщения


Re: по отчетам

При присвоении Cancel=True может возникнуть ошибка "Прервано выполнение команды DoCmd.OpenReport ", если отчет вызывается из процедуры и ее придется обрабатывать.  К тому-же лучше не нагружать отчеты модулями. Я использую другую методу. Назначаю на события отчета функции во внешнем модуле:

1. Отсутствие данных : =funSetNoData()

2. Страница: =funMakeNoData()

Во внешнем модуле описываю публичные функции:

Public bolNoData As Boolean

Public Function funSetNoData()
    bolNoData = True
End Function

Public Function funMakeNoData()
On Error Resume Next

    Dim rpt As Report
    Const conText As String = "Нет данных для отчета"
    If bolNoData Then
        Set rpt = Reports(CurrentObjectName)
        With rpt
            .FontSize = 36
            .FontName = "Tahoma"
            .ForeColor = RGB(255, 0, 0)
            .CurrentX = (.ScaleWidth - .TextWidth(conText)) \ 2
            .CurrentY = .ScaleHeight / 2
            .Print conText
        End With
        bolNoData = False
        'funShowCbb False 'попутно отключаю доступ к некоторым кнопкам контекстного меню
    End If
    
End Function
 

Использую эти функции со всеми отчетами приложения.


Андрей
  Программирование  Microsoft Access. Файлы mdb и accdb  по отчетам...
ПоискПоиск  Список форумовСписок форумов  
right