![]() |
|
Модераторы: Akina |
![]()
|
|
| Dmitrimel |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 23.10.2006 Репутация: нет Всего: нет |
Есть форма, в которой отображаются записи из нескольких таблиц, подскажите как сделать такую волшебную кнопочку, чтобы она выводила на печать текущую запись из формы в читаемом ввиде (что-то вроде отчета).
Заранее спасибо. Пожалуйста, описывайте свои действия более побробно, т.к. я пока новичок в этом деле. |
|||
|
||||
| Юдифь |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 15.10.2006 Где: Монголия, Эрдэнэт Репутация: нет Всего: нет |
Создать отчёт, основанный на тех же таблицах. Объединяющее поле для всех этих таблиц у тебя наверняка есть? В условии поставить в запросе на это поле: form![название формы]![название поля формы].
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 30 Всего: 454 |
Если на форме отображаются те данные, которые надо напечатать - выводи на печать не записи таблиц, а содержимое контролов формы.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Dmitrimel |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 23.10.2006 Репутация: нет Всего: нет |
Спасибо тебе огромное, все получилось. Добавлено @ 09:21
а вот тут можно подробнее??? |
||||
|
|||||
| Karam_S |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 11.2.2008 Где: г. Новокузнецк Репутация: нет Всего: нет |
У меня для решения проблемы "Печать текущей записи из формы" в моей базе маленько не хватает тяму.
1. Есть сложная форма, объединяющая 3 таблицы. 2. Есть отчёт, выводящий всю совокупность записей. Он основан не на самостоятельном (отдельном) запросе, а на встроенном в отчёт. 3. Необходимо через кнопку из формы выводить на печать через оформление отчёта текущую запись формы. Что делаю: 1. Создал в отчёте условие " WHERE ([Для отзыва по всем].Фамилия=form![Проверка работ]![Фамилия]) " В итоге при открытии отчёта появляется окно "form!Проверка работ!Фамилия" с полем для введения значения. Пояснение: Отчёт выполнить на самостоятельном (отдельном) запросе не получилось, т.к. при передаче текстового значения через запрос в отчёте отображались только первые 5-6 строк, а остальной текст не отображался. Чтобы обойти эту проблему, построил отчёт через непосредственное обращение к полям таблицы и необходимым полям из другого запроса. Прошу помочь. |
|||
|
||||
| Karam_S |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 11.2.2008 Где: г. Новокузнецк Репутация: нет Всего: нет |
Решение частично найдено.
Дело в том, что если делается указание на открытую форму, то надо использовать слово "Forms". Поэтому использование условия "WHERE ([Для отзыва по всем].Фамилия=forms![Проверка работ]![Фамилия])" помогло! Но проблема всё-таки до конца не решена. Дело в том, что требуется вывести запись, удовлетворяющую одновременно нескольким условиям, часть из которых указаны в подчинённой форме. И здесь уже указанная ссылка не срабатывает. Так условия "WHERE ПредстРаботы.Проверена=Forms![Работа с замечаниями]!Проверена" (где "Forms![Работа с замечаниями]!Проверена" - поле в подчинённой форме) выдаёт при вызове окно-запрос с полем на значение, куда требуется вручную вводить дату. Если это значение ввести, то отчёт отображается с соответствующей записью. Возникает вопрос, как задавать условия в отношении подчинёных форм? |
|||
|
||||
| Karam_S |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 11.2.2008 Где: г. Новокузнецк Репутация: нет Всего: нет |
Для решения проблемы делаю первые шаги в VBA.
Вот так:
срабатывает. "Проверка работ" - главная форма. Вот так:
тоже срабатывает. ("ПрРаб" - это поле типа "числовой" из подчинённой формы "Работа с замечаниями"). Но вот так (когда требуется вывести запись, удовлетворяющую двум условиям):
не срабатывает. И ещё один вопрос. Плохо, конечно, что значение поля "ПрРаб" явно указано. Как задать условие полю "ПрРаб" равное тому, что выводится в форме "Работа с замечаниями"? Вот такая запись:
приводит к пустому результату в отчёте. Может я не по тому пути пошёл? Цель одна - через кнопку из формы выводить на печать через оформление отчёта текущую запись формы. Это сообщение отредактировал(а) Akina - 25.4.2009, 20:56 |
||||||||
|
|||||||||
| Karam_S |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 11.2.2008 Где: г. Новокузнецк Репутация: нет Всего: нет |
Проблема решена.
Благодаря подробному faq-разъяснению Geo, Владимир Саныч http://www.sql.ru/faq/faq_topic.aspx?fid=156 1. Использую отчёт со встроенным запросом, где условием указываем поле главной формы и поле подчинённой формы. Например,
Здесь ссылка на подчинённую форму имеет специальный синтакси: Forms![Форма1].Controls![Форма2].Form.Controls![Поле1].Value 2. В главной форме на событие кнопки указываю команду vba для открытия отчёта
Т.е. простая команда без условий. В общем-то всё. К сожалению, с условиями vba разобраться до конца так и не смог. Не знаю правильно это или нет, но работает. Может кто подскажет решение по-лучше? Только что, нашел ещё одну особенность (здесь http://www.askit.ru/custom/vba_office/m12/...ort_object.htm), если не указывать аргумент acViewPreview, то отчёт будет отправлен сразу на печать без отображения окна просмотра.
Так изложение будет полнее. Это сообщение отредактировал(а) Karam_S - 26.4.2009, 09:23 |
||||||
|
|||||||
| bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: 21 Всего: 21 |
Karam_S, зря вы использовали "Forms![Проверка работ].Controls![Работа с замечаниями].Form.Controls!ПР" в самой строке.
На мой взгляд передавать условие поиска лучше отчету извне, чтобы он ничего об этом не знал: Например (Код должен быть реализован в модуле формы "Проверка работ"):
Если этот код повтоярется, то выделите его в отдельную функцию, и передавайте в нее только значения параметров. Тут про формы можно почитать подробнее http://5codelines.net/povyshenie-soprovozh...-chast-1-formy/ Это сообщение отредактировал(а) bopoha - 29.4.2009, 17:47 |
|||
|
||||
| Karam_S |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 11.2.2008 Где: г. Новокузнецк Репутация: нет Всего: нет |
bopoha спасибо за поправку и наводку!
Я убрал условия из отчёта и опробовал предложенный код
Но vb выдал ошибку. Я заменил способ записи:
Тогда после нажатия кнопки стал появляться запрос фамилии (хотя форма открыта). Я ещё раз заменил способ записи:
И тогда всё заработало! Возможно, предложенный первоначально синтаксис не сработал потому, что в разных версиях access правила его составления несколько меняются. У меня стоит версия 2007. Это сообщение отредактировал(а) Karam_S - 29.4.2009, 17:33 |
||||||
|
|||||||
| bopoha |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: 21 Всего: 21 |
Хм. Запрос фамили у вас не мог отрыться, если поля бы не существовало, произошла бы ошибка. Это не важно. Кстати, в моем коде ошибка:
Нужно так:
|
||||||
|
|||||||
| Karam_S |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 11.2.2008 Где: г. Новокузнецк Репутация: нет Всего: нет |
Странно, последняя версия вашего кода
выводит окно с запросом введения фамилии. После следующей правки
вновь всё заработало! (без запросов). Таким образом, запись
вызывает запрос. Вместо того, чтобы взять данные из поля формы. Пробую так
тогда появляется ошибка 2465 - "Приложению акцесс не удаётся найти поле "Проверка работ", указанное в выражении". Хотя я думаю, почему поле "Проверка работ", ведь указываю поле "Фамилия". |
||||||||
|
|||||||||
| bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: 21 Всего: 21 |
Я походу понял. Как называется форма, на которой выполняется код? Я предполагал, что это форма - "Проверка работ".
Замените на
Это сообщение отредактировал(а) bopoha - 30.4.2009, 12:16 |
|||
|
||||
| Karam_S |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 11.2.2008 Где: г. Новокузнецк Репутация: нет Всего: нет |
Исходное предположение правильное: главная форма - "Проверка работ"; в ней же кнопка, т.е. выполняется код.
Последний предложенный вариант кода
также вызывает окно запроса "Введите значение параметра" для ввода фамилии. Если фамилию вручную ввести, то задание благополучно уходит на принтер. Присоединённый файл ( Кол-во скачиваний: 2 )
vbcode.jpg 134,29 Kb |
|||
|
||||
| bopoha |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1283 Регистрация: 10.5.2006 Где: Беларусь, Минск Репутация: 21 Всего: 21 |
Это выражение содержит строку? Тогда нужно так:
Т.е. обрамить значение Me.Фамилия в одинарные ковычки. Вы зачем взяли в ковычки выражение Me(..... ? Этого делать не нужно. |
|||
|
||||
![]()
|
| Правила форума "MS Access" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS Access | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |