powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблема с макросом
21 сообщений из 21, страница 1 из 1
Проблема с макросом
    #32315413
Rimbombo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Существут запрос:
SELECT [Контроль договоров].№района, Count([Контроль договоров].№района) AS [Count-№района]
FROM [Контроль договоров]
WHERE ((([Контроль договоров].[Договор оформлен]) Is Null) AND ((Date()-[Дата принятия документов])>=15))
GROUP BY [Контроль договоров].№района;

На основе этого запроса создан отчет. Все отлично работает. Проблема в том, что если нет записей удовлетворяющих запросу, то в отчете появляется #Ошибка!
Это не есть гуд. Пришла идея написать макрос с такими командами:
ОткрытьОтчет - *задается условие*
Сообщение - *вписывается сообщение*

Вопрос: Как правильно задать условия в ОткрытьОтчет , чтобы это все сработало?!
...
Рейтинг: 0 / 0
Проблема с макросом
    #32315418
Rimbombo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В собщении, будет сказано, что нет соответсвующих данных, т.е сообщение будет поверх пустого отчета
...
Рейтинг: 0 / 0
Проблема с макросом
    #32315423
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо макросов.

Private Sub Report_Open(Cancel As Integer)
if me.recordcound=0 then
msgbox "Сам дурак!"
cancel = true
endif
end sub

У Гетца то-ли в "решениях", то-ли в 1-м томе был пример. М.б. он лучше сказанного мною.

---
2ВС
Забыл, а как пишется "то-ли". Не слитно, это я вижу. Но через дефис чи ни?
...
Рейтинг: 0 / 0
Проблема с макросом
    #32315428
Rimbombo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Geo
Я с кодом не очень дружу. Понимаю, так, что если нет записей удовлетворяющих условию, то выскакивает меседж.
Изв за глупый вопрос: что именно нужно открыть и в какой части кода этот кусок вставить?
...
Рейтинг: 0 / 0
Проблема с макросом
    #32315432
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открой нужный отчет в режиме конструктора.
Свойства отчета (не выбирая ни какого поля, или нажав на квадратик в перекресии линеек).
Вкладка событие.
Строка открытие.
Три точки [...]
Программа.
Вставляй приведенный мною выше код.
Замени в нем строку "Фиг вам" на культурное сообщение.
Закрой код.
Закрой и сохрани отчет.
---
Только я этого никогда не делал. Я смотрю, у события OnOpen есть Cancel, поэтому про него и написал. Возможно, придется использользовать другое - OnLoad, OnCurrent или др.
---
Кстати, на будущее, у форм/отчетов запрос, который обеспечивает им отображаемые данные, выполняется "асинхронно". Т.е. сначала он смотрит, есть ли хоть одна запись, удовлетворяющая условиям и сортировке, и возвращает ее. Когда появлятся время, "догоняет" это число до 51 (не знаю, почему). А когда появляется потребность, вычисляет все остальное. И это удобно. Поэтому в событии, выполняемом при открытии отчета, нельзя делать проверки, что, скажем, число записей > 200 и др.
---
Знатоки меня поправят, если что. А вообще, я не знаю, зачем последний абзац написал. Но, раз уж написал, не стирать же. М.б. пригодится в жизни.
:)
...
Рейтинг: 0 / 0
Проблема с макросом
    #32315434
Rimbombo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Geo
Access послал твой if me.recordcound=0 говорит мол это не наш метод...
...
Рейтинг: 0 / 0
Проблема с макросом
    #32315435
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гео, у отчета есть событие "Отсутствие данных". Как раз то что надо для этого случая. И Cancel там тоже есть :)
...
Рейтинг: 0 / 0
Проблема с макросом
    #32315437
Rimbombo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2ЛП
Все круто, я туда и стал вставлять. Маленькая проблема - не работает. Я даже по этому поводу сделал резервную копию базы, снес там записи, чтоб значит данных не было, да вот беда:
Private Sub Report_NoData(Cancel As Integer)
If Me.RecordCound = 0 Then
MsgBox "Сам дурак!"
Cancel = True
End If
End Sub

Не работает! Ругается в частности на If Me.RecordCound = 0 Then

Ставил If Me.RecordCoun t = 0 Then
на всякий случай - тоже самое...
...
Рейтинг: 0 / 0
Проблема с макросом
    #32315438
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот, уже поправили. :))

Пошел дальше квасить
...
Рейтинг: 0 / 0
Проблема с макросом
    #32315442
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Rimbombo
Если ты вставляешь в Report_NoData - то там никакие RecordCound'ы не нужны. Просто выкинь эту строчку на фиг.

Код: plaintext
1.
2.
3.
Private Sub Report_NoData(Cancel As Integer) 
    MsgBox  "Сам дурак!"  
    Cancel = True 
End Sub 
...
Рейтинг: 0 / 0
Проблема с макросом
    #32315446
Rimbombo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2ЛП
Все отлично, спасибо большое! Маленькая ремарка: после того как я жму Ок и закрывается мой меседж, появляется еще меседж, мол прервано выполнение команды OpenReport, жму ок и как говорится все ок. Скажи, пожалуйста, а можно сделать так, чтобы второй меседж не появлялся (без ущерба для работоспособности базы)?
Еще раз спасибо.
...
Рейтинг: 0 / 0
Проблема с макросом
    #32315453
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 Geo:

:^) Наш форум начинает превращаться в форум по русскому языку... ку... ку... Короче, "ли" всегда пишется раздельно. :^)
...
Рейтинг: 0 / 0
Проблема с макросом
    #32315456
Rimbombo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир Саныч!
Не подскажите как отключить меседж "прервано выполнение команды OpenReport"??
...
Рейтинг: 0 / 0
Проблема с макросом
    #32315459
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Очень просто. В начале процедуры рисуется On Error, а в обработчике проверяется: если тот самый номер, который "прервано", то Resume Next.
...
Рейтинг: 0 / 0
Проблема с макросом
    #32315461
Rimbombo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно более популярно? Где этот On Error вписывать?
...
Рейтинг: 0 / 0
Проблема с макросом
    #32315463
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Прошу прощения, но это вроде как обязательно в каждой процедуре - писать обработчик ошибок. Пример:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub MoyaProtsedura()
On Error GoTo MoyaMetka

'тут сам текст процедуры'

Exit Sub
MoyaMetka:
Select Case Err 'проверка кода ошибки'
    Case ...
        Resume Next
    Case Else
End Select

End Sub

Оператор Resume может иметь следующие варианты:
Resume Next - продолжить выполнение со строки, следующей за той, где возникла ошибка (т.е. как бы Ignore)
Resume просто - вернуться на саму ту строку, где возникла ошибка (т.е. как бы Retry)
Resume DrugayaMetka - продолжить с указанной метки
...
Рейтинг: 0 / 0
Проблема с макросом
    #32315464
Rimbombo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И что интересно при запуске отчета из окна базы этот месседж не появляется, только после клика по кнопке в форме!
...
Рейтинг: 0 / 0
Проблема с макросом
    #32315465
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Но между прочим: если сообщение выскакивает, а потом программа продолжает работать, то похоже, что там какой-то On Error уже есть.
...
Рейтинг: 0 / 0
Проблема с макросом
    #32315467
Rimbombo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сейчас попробую
...
Рейтинг: 0 / 0
Проблема с макросом
    #32315471
Rimbombo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Владимир Саныч
Проблема была не в это процедуре. ведь 2-й меседж появлялся только по нажатию кнопки в форме, если отчет запускать из окна базы то появлялся только один меседж как и требовалось.
Я снес под кнопкой MsgBox Err.Description и все стало ок!
...
Рейтинг: 0 / 0
Проблема с макросом
    #32315474
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Даю мудрую мысль. Если написанная кем-то программа делает то, что делать не нужно, то эту часть программы надо снести.

Кстати, можно и не снести, а заифить.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Проблема с макросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]