Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Эксперт MS Access
2841 / 1381 / 217
Регистрация: 13.05.2011
Сообщений: 4,224

Условие на отмену печати отчета

23.10.2013, 20:06. Показов 1760. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Мне необходимо, чтобы при нажатии кнопки -Печать- отчета -БЛАНКЗАКАЗА- печать производилась только, если заполнено поле -РЕГНОМЕР- этого отчета. Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.10.2013, 20:06
Ответы с готовыми решениями:

Условие на отмену печати отчета (версия 2)
Здравствуйте! Мой вопрос в прошлой теме Условие на отмену печати отчета был решен частично. Все работает, но не так как хотел. Сделал...

Макрос на отмену печати
Добрый вечер, на паре связанной с изучением основ баз данных дали очень хитрое задание. Может кто-нибудь помочь его сделать? Вот само...

Как отловить отмену печати?
Господа расскажите темному, почему када в диалоге выбора принтера я выбираю принтер он сразу же становиться принтером по умолчанию, и как...

12
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
23.10.2013, 20:20
Вам наверняка известно значение РЕГНОМЕР, в крайнем случае можно посмотреть в его источнике в отчете. Поэтому есть 2 пути:
1. На кнопке проверять условие РЕГНОМЕР и если пусто, обходить команду вызова отчета
2. В самом отчете, на события открытия (Open) проверять РЕГНОМЕР, и если пусто, ставить параметр процедуры открытия Cancel = True. Отчет по этой команде закроется, не проявившись
1
Эксперт MS Access
2841 / 1381 / 217
Регистрация: 13.05.2011
Сообщений: 4,224
23.10.2013, 20:36  [ТС]
Я хотел, чтобы отчет открывался, путь смотрят, что там написано, но если нет номера регистрации, то далее по задумке при нажатии кнопки, которая находится на отчете, должно вылететь предупреждение, типа: ПОДОЖДИТЕ ПОЖАЛУЙСТА ДО РЕГИСТРАЦИИ. Спасибо.
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
24.10.2013, 03:55
Цитата Сообщение от Вячеслав Я Посмотреть сообщение
Я хотел, чтобы отчет открывался, путь смотрят, что там написано, но если нет номера регистрации, то далее по задумке при нажатии кнопки, которая находится на отчете, должно вылететь предупреждение, типа: ПОДОЖДИТЕ ПОЖАЛУЙСТА ДО РЕГИСТРАЦИИ.
Со стороны, конечно трудно судить, но мне такой интерфейс активно не нравится. Если не заполнены обязательные сведения, не пройдена регистрация, то открывайте юзерам другой, усеченный отчет, в котором нет каких-то важных текстов, зависящих от наличия регистрации. Иначе, если, конечно, у вас не студентческая поделка, а реальная работа, вы не застрахованы от злоупотреблений или случайных ошибок.
В этом усеченном отчете, кстати, в заголовке можно поместить предупреждающее сообщение о необходимости регистрации. И без всяких кнопок. Которые, по моему глубокому убеждению в отчетах просто неуместны.
1
Эксперт MS Access
2841 / 1381 / 217
Регистрация: 13.05.2011
Сообщений: 4,224
24.10.2013, 20:06  [ТС]
Я наверно не совсем ясно объяснился. База реально рабочая на предприятии. Оформление бланка заказа настроено так, чтобы ошибки были исключены (во всяком случае за 2 года их пока небыло). Работа построена так: мастера в цехах на определеную работу открывают заказ. Номер заказу присваивается автоматически (следующий по порядку). Заказ распечатывают. Затем заказ должен попасть к нам, где по правилам мы должны его зарегистрировать, т.е. в бумажном журнале присвоить номер регистрации и поставить дату регистрации (тоже самое и на готовом бланке). Я не хочу в бумажном журнале писать руками и на бланке тоже (просто нет времени и секретарши). Поэтому я время от времени захожу в свою форму и проверяю вновь открытые заказы. Нажатием одной кнопки на этой форме присваиваю номер регистрации, т.е. следующий рег_номер и встает дата регистрации. Если мастер открыл отчет (бланк заказа) и распечатал его до моей регистрации, то он распечатывается без номера регистрации и даты регистрации. Кнопка вывода на печать находится на отчете (бланке заказа). Там она только для того, чтобы не искать эту кнопку (в Runtime-е она зарыта).

Многоуважаемый mobile! Попробовал по Вашему второму варианту описанному выше:

Private Sub Report_Open(Cancel As Integer)
If Рег_номер Is Null Then
Cancel = True
End If
End Sub

пишет:Run-time error '424'
Object requried
Подскажите, что не так? Спасибо!
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
24.10.2013, 20:26
А что такое Рег_номер? Если Рег_номер это поле отчета, то на событии Open полей еще не видно. Но вы же откуда-то берете это значение? Из источника отчета? Из формы? Так оттуда и надо брать значение для проверки
И второе - в ВБА не работает склевский Is Null. Есть функция IsNull(поле)
If IsNull(Forms!МояФорма!Рег_номер) Then
или
If IsNull(Me.Recordset.[Рег_номер]) Then
0
Эксперт MS Access
2841 / 1381 / 217
Регистрация: 13.05.2011
Сообщений: 4,224
25.10.2013, 20:46  [ТС]
Что-то ни чего не получается. Сделал по другому, вроде без ошибочный вариант:
1. создал фильтровальную форму [Бланк заказа]. На ней выбираются поля в комбобоксе [Дата], поле [Заказ]. При выборе поля [Заказ] автоматически через listbox в поле [Рег_номер] проставляется регистрационный номер (если он есть), а если его нет, то пусто (все данные из одной таблицы. Задача была вывести в форму три значения, которые нужны для открытия бланка заказа и для условия печати). При нажатии кнопки "Открыть бланк" открывается бланк заказа. На этом бланке заказа есть кнопка для печати Кнопка175, на которой пишу:

Private Sub Кнопка175_Click()
If IsNull([Формы]![Бланк заказа]![Рег_номер]) Then
DoCmd.OpenForm "Текст", acFormPivotChart
ElseIf [Формы]![Бланк заказа]![Рег_номер] > 0 Then
DoCmd.PrintOut
End If
End Sub

Ругается:Приложению МС Access не удается найти поле "|1", указанное в выражении.
В listbox в поле [Рег_номер] значение подставляется без кода, т.е. первое поле и есть номер регистрации (если в этом есть разница)?
Ниже показана форма где выдирается бланк и сам бланк с кнопкой на печать. Спасибо
Вложения
Тип файла: rar Бланкзаказа.rar (135.3 Кб, 7 просмотров)
Тип файла: rar Формабланкзаказа.rar (11.6 Кб, 7 просмотров)
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
25.10.2013, 21:24
Цитата Сообщение от Вячеслав Я Посмотреть сообщение
If IsNull([Формы]![Бланк заказа]![Рег_номер]) Then
Насколько я знаю, в ВБА, в отличие от конструктора запросов, не допускается именовать коллекцию открытых форм в русской записи. Только в оригинальной записи: Forms
Visual Basic
1
If IsNull(Forms![Бланк заказа]![Рег_номер]) Then
1
Эксперт MS Access
2841 / 1381 / 217
Регистрация: 13.05.2011
Сообщений: 4,224
26.10.2013, 06:07  [ТС]
Исправил. Спасибо, ошибка прошла. Однако, если [Рег_номер]>0, то открывается форма [Текст] с текстом предурпреждения, т.е. печать не идет. Переставил условия местами. Написал:

Private Sub Кнопка175_Click()
If [Forms]![[Бланк заказа]![Рег_номер] > 0 Then
DoCmd.PrintOut
ElseIf IsNull([Формы]![Бланк заказа]![Рег_номер]) Then
DoCmd.OpenForm "Текст"
End If
End Sub

все равно: в любом случае печать не идет, а только открывается форма "Текст". По моему, что-то не то с:

[Forms]![[Бланк заказа]![Рег_номер] > 0 ???
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
26.10.2013, 09:26
Попробуйте такое условие
Visual Basic
1
If Val(Nz([Forms]![[Бланк заказа]![Рег_номер],0)) > 0 Then
0
Эксперт MS Access
2841 / 1381 / 217
Регистрация: 13.05.2011
Сообщений: 4,224
26.10.2013, 18:01  [ТС]
Опять, что-то не-то. Извениете, но у меня идей нет, точнее я не знаю как написать с чем сделать условие (любой символ в поле, любой знак или что-то еще). Подскажите пожалуйста. То, что пишет во вложенном файле. Спасибо.
Вложения
Тип файла: rar Ошибка.rar (68.0 Кб, 8 просмотров)
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
26.10.2013, 18:15
Хех!... Это я скопировал ваше выражение с двумя открывающими прямыми скобками перед Бланк заказа :-) И не посмотрел, что там ошибка. Исправляюсь.
Visual Basic
1
If Val(Nz([Forms]![Бланк заказа]![Рег_номер],0)) > 0 Then
0
Эксперт MS Access
2841 / 1381 / 217
Регистрация: 13.05.2011
Сообщений: 4,224
26.10.2013, 20:11  [ТС]
Все равно открывает только форму. Игнорирует первое условие.

Добавлено через 9 минут
Подсказали еще:

Len([Формы]![Бланк заказа]![Рег_номер])>0

все равно условие пропускает и открывает форму

Добавлено через 1 час 28 минут
Выяснил. Тут явное не понимание листбокса. Вывел это поле через комбобокс и все заработало. Есть проблема. В этом комбобоксе надо номер подтвердить, т.е. открыть. А как сделать, чтобы все поля в форме [Номер заказа] были для заполнения обязательными? Т.е. пока не заполнишь все три поля заказ не откроется? Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.10.2013, 20:11
Помогаю со студенческими работами здесь

Как при печати отчета программно установить параметры печати?
как при печати отчета ( VBA ) программно установить параметры печати ( ширину полей )

Фиксация печати отчета
Добрый день! Возникла необходимость фиксировать время и работника при печати отчета. Именно вопрос, была ли печать отчета или нет. (В...

Запуск печати из отчета
Здравствуйте! Подскажите пожалуйста. У меня пользователи работают с базой по сети через Runtime. В Runtime кнопка "Печать"...

вопрос по форме и печати отчета
Есть форма. После заполнения полей нужно распечатать отчет. Для этого создал запрос, написал макрос и ссылку на макрос поставил в последнем...

Ошибка в коде печати отчёта
клик на кнопку чтобы распечатать отчет . и выходит ошибка(см фото) код на кнопке Option Compare Database Private Sub...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru