powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с ОТЧЕТОМ!!!!!!!
23 сообщений из 23, страница 1 из 1
Помогите с ОТЧЕТОМ!!!!!!!
    #32277520
DDX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди!!!

Подскажите, можно ли программно распечатать определенную страницу(цы) отчета, т.е. задать номер страницы, которую нужно отправить на печать при нажатии на кнопку в форме?

Метод PRINT отчета, как я понял, не дает такой возможности, а использовать DoCmd.PrintOut к отчету из процедуры нажатия на кнопку у меня не получилось: печатается сама форма :(

Может, как-нибудь можно программно установить параметры печати, как в меню Файл->Печать->Номера страниц, или ещё как-нибудь?
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32277528
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
По-моему, один такой вопрос тут уже есть.\r
\r
/topic/50848
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32277531
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Кстати, есть идея. Заводим две глобальных переменных PageFrom и PageTo. Задаем им значения перед командой печати. А в отчете, в событии Print каждой секции пишем:

If Page < PageFrom Or Page > PageTo Then Cancel = True

P.S. Кажется, теперь я укрепил всех во мнении, что создание двух одинкаковых топиков стимулирует мыслительную деятельность участников форума...
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32277546
DDX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не столько мыслительную деятельность, сколько просто обратит внимание знатоков Access, я уж прошу извинить меня за настойчивость )))))))

Благодарю за ответ!

Эта идея, безусловно, верная, спасибо, но меня все же терзают некоторые сомнения вот какого рода: я решил печатать определенную страницу из-за того, что мой отчет перегружен подчиненными отчетами , и при запуске на печать где-то с 3-ей страницы выскакивает ошибка "Открытие большего числа баз данных невозможно. Закройте одну или несколько баз данных и повторите попытку" (таблицы находятся во внешнем файле). Почему так происходит - я уже выяснил: ядро MicroSoft Jet может держать открытыми одновременно не более 20 рекордсетов , а открытых баз данных, видимо, и того меньше :( .

Менять же структуру отчета крайне нежелательно :(. Но зато я обнаружил, что если не отправлять на печать сразу весь отчет, а, не открывая его, задать в меню Файл->Печать-> Номера страниц, например 1-2, а затем 3-4 и т.д., то печать проходит гладко, и так, по частям, можно распечатать весь отчет. Геморрой жуткий :( Вот я и решил печатать по одной странице программно.

Но, может, знающие люди подскажут какой-нибудь другой способ выхода из ситуации?

При указанном Вами способе, наверно, отчет будет формироваться целиком , а печататься лишь некоторые страницы. Может, это вызовет ту же ошибку :( (проверить я смогу лишь в понедельник). Хотя, скорее всего, при выборе страниц в меню печати отчет тоже формируется целиком, кто его знает..
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32277552
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
С одной стороны, в моем варианте отчет действительно все равно формируется целиком. С другой стороны, при печати с указанием номеров страниц через стандартный диалог печати отчет тоже формируется целиком - по крайней мере та его часть, которая находится до указанных страниц.

С третьей стороны, возможно, что-то неладно с тем, как отчет устроен. Есть ли в нем (или в программах, исполняемых при его запуске) команды OpenDatabase и OpenRecordset? Если да, то делается ли этим объектам вовремя Close?
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32277566
DDX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Боюсь, Ваши вопросы слишком сложные для меня :)

Суть такова: отчет представляет собой расписание учебных групп - 6 дней недели по 8 пар в каждом дне. Каждую пару я сделал отдельной сущностью - этого требует сама задача создания моей базы данных. Для каждой пары я создал отдельный маленький отчет (дисциплина, преподаватель и т.д.), внутри каждого из которых в строке "Источник данных" - sql-строка - запрос к соответствующей таблице с условием - номер пары (по дням недели: занятия в понедельник, во вторник и т.д.). Из них я составил отчеты по дню , а из отчетов по дню - расписание целиком на неделю, связав все отчеты по коду группы.

Сначала расписание по всем занятиям хранилось в одной таблице. После того, как я сделал отчет, начала выскакивать эта ошибка, и я разнес пары в разные таблицы по дням (понедельник, вторник и т.д.). Не помогло :(

В идеале круто было бы сделать на одном листе расписание по 2-м неделям, верхней и нижней, да ведь и на одну неделю и то невозможно вывести :(((

А печать отчета я вообще сделал при помощи мастера кнопок: при нажатии- просмотр отчета - и все... 8-[ ] Потом-кнопка "Печать"..

А можно ли сделать так, чтобы после того, как один маленький отчет сформировался на какой-то день по какой-то группе, то он бы закрыл свой источник данных? Тогда их бы не было так много открытых сразу! А при переходе на следующую группу - он бы обновил свои данные и снова бы закрыл? Вы это имеете в виду?
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32277567
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 DX

Для распечатки N-й страницы MS Access все-равно должен открыть ВСЕ страницы вплоть до N-й.

Характеристики MS Jet настраиваются через реестр. Сама MS подробно пишет об этом в справке по MS Jet, так что настрой MS Jet и избавься от ошибки.
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32277568
DDX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, попробую.
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32277617
DDX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я прочитал справку по Ms Jet. Облом!
Через реестр настраиваются очень многие параметры Jet, кроме того, который мне нужен
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32277634
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Правильно ли я понял, что команд OpenDatabase и OpenRecordset в программе нет? (Это не сложный вопрос, поиск в программе делается через Ctrl+F.) То есть все эти действия выполняются самим Аксессом просто потому, что так расположены подчиненные отчеты? Если так, то моя идея отменяется.
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32277695
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Еще два соображения.

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

2. Если я правильно понял, в этом отчете много подчиненных отчетов. Думаю, что можно его переделать так, чтобы этого не было.
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32278283
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отвечаю чисто формально: DoCmd.PrintOut используется в блоке:

DoCmd.OpenReport ... ,acViewPreview
DoCmd.PrintOut ...
DoCmd.Close acReport ...

если и при этом печатается форма, то что-то не так. Тогда пошаманьте с задержками или с DoCmd.SelectObject acReport ... (перед принтаутом)
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32278938
DDX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ваше участие!

Я испробовал на практике обе идеи: Вашу, Владимир Саныч, и Вашу, assa.

В обоих случаях отчет печатается полностью! (с принтаутом я тормознул, поставил его в коде отчета ). Но! Все ещё есть проблема. Когда отчет выдавал сообщение об этой ошибке (для каждой страницы!), то печать продолжалась , НО ДАННЫЕ ВЫВОДИЛИСЬ НЕ ПОЛНОСТЬЮ, Т.Е. КАКИЕ-ТО ПОЛЯ ОСТАВАЛИСЬ ПУСТЫМИ. Например, выводится группа, но не выводится дисциплина, хотя если распечатать эту страницу через диалог печати, то все нормально.

Сейчас сообщение об ошибке не выдается, но ошибки все же остались :( , что более опасно, так как внешне все гладко.

Код я использую такой:

...Onclick и все дела...

Dim MaxPages as Integer
Dim CurrentPage as Integer

MaxPages=report_Отчет_1.Pages

For CurrentPage=1 To MaxPages
DoCmd.OpenReport "Отчет 1" ,acViewPreview
DoCmd.PrintOut acPages, CurrentPage, CurrentPage
DoCmd.Close acReport, "Отчет 1"
Next

Вроде все правильно. (?)
========================

Фильтр!
Насчет Вашего предложения, Владимир Саныч (" этот отчет имеет четкую структуру, в том числе четкий размер клеток по вертикали. Если так, то заранее известно, какие именно данные окажутся на каждой странице. А тогда можно просто поставить фильтр на данные таким образом, чтобы распечаталась именно нужная страница ") : возникла глупая проблема.

И правда, скорее всего, фильтр, который меняется во время выполнения программы, после чего отчет закрывается и открывается вновь - это прекрасная мысль, но вот у меня не получается изменить фильтр динамически! Может, это глюк Аксесса какой?! Я пишу:

report_Отчет_1.FilterOn=True
report_Отчет_1.Filter="...текст фильтра, если внести который в поле 'Фильтр' отчета, то все прекрасно..."
DoCmd.OpenReport "Отчет 1", acViewNormal
' ну или report_Отчет_1.Print

И что?? Ничего не работает!Судя по книжкам, все должно работать, но оно не работает! Фильтр не применяется вовсе! Может, тут есть какие-то тонкости?
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32278949
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Попробуй заюзать процедуру ПрименитьФильтр (ApplyFilter) (За эффект не ручаюсь, пьяный в ...)
2) К В.С. обращайси на Ты (Это один человек, а не два)
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32279262
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>В обоих случаях отчет печатается полностью

Гы. А Вы ... там видели? Там (в ...) параметры команд есть (см "Хелп"). В т.ч. и вывод страниц, количества копий и т.п.

При превью он (отчет) ессно "выводится весь". Но вы же утверждаете, что ручная просылка на печать определенных страниц вам не вешает печать. Стал быть то, что запрос "выводится весь" на превью вас не смущало. Вот и ставьте в принтауте ваши странички. НАпример
Код: plaintext
1.
2.
3.
4.
5.
6.
Do While True
    On Error GoTo naFig
    DoCmd.SelectObject acReport
    DoCmd.PrintOut acPages, i, i, N, False
    i = i +  1 
Loop
naFig:
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32279347
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> И что?? Ничего не работает!

И не будет. Как можно обращаться к отчету до того, как он открыт? Надо так:

Вариант 1. Применять фильтр в событии отчета OnOpen.

Вариант 2. Перед каждым открыванием отчета менять его источник данных или хотя бы параметры запроса, на котором он сидит.
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32280090
DDX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 assa:
======
Хотя я не утверждал, что на превью отчет выводится без проблем, это, конечно, можно было заключить из моих слов. Это не так: открывается первая страница, а если листать дальше, то также возникает ошибка. А ручная посылка на печать именно что не вешает отчет.
А ... я видел :)) И параметры все указал, что и обозначил в своем коде.

А то, что отчет печатается полностью - то ЭТО ХОРОШО!!! Я имел ввиду, что ПО ОДНОЙ странице теперь вводятся на печать все страницы отчета, вот что мне нужно было! Ошибка-то не выскаивает, как раньше!
А вот хрень остается :(((

А с SelectOblect'ом попробую, спасибо за совет!

2 Владимир Саныч и Темный:
======================
Осознал свои ошибки.. Чтож, тормоз тоже механизм :) Спасибо за помощь!
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32282624
DDX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Позвольте задать ещё один вопрос:

возможно ли создать такой запрос, который объединял бы несколько записей одной таблицы в одну запись другой ?

То есть:

Таблица1
-----------
Ключ1;Поле1-1; Поле1-2; Поле1-3
Ключ1;Поле2-1; Поле2-2; Поле2-3
Ключ2;Поле1-1; Поле1-2; Поле1-3
Ключ2;Поле2-1; Поле2-2; Поле2-3
.. и .т.д.

Таблица2:

-----------
Ключ1; Поле1-1; Поле1-2; Поле1-3;Поле2-1; Поле2-2; Поле2-3
Ключ2; Поле1-1; Поле1-2; Поле1-3;Поле2-1; Поле2-2; Поле2-3

Если создать такую таблицу, то можно будет избавиься от открытия большого числа источников данных при формировании отчета, то есть избавиться от проблемы в принципе.
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32282954
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если "хрень" это неправильная печать, - то там надо пошаманить с настройками драйвера принтера. Обычно - объем памяти (уменьшить) и режим графики (не помню что, но однозначно загрубить, и выбрать какой-то определенный из предлагаемых типов) приводят его (принтер) в чуйство. Но не всегда. Хуже всего, что ошибка иногда становится "контекстно-зависимой" - с одной и той же машины печатает всегда по разному, в зависимости от черт-знает-чего.

Да, переписать отчет - это радикально. Запрос, если _конечное_число_полей_ в нем _заранее_определено_ - не проблема. Объедините таблицу с собой по ключу несколько раз, а для выборок поставьте условия вида Т1.Поле1<>Т2.Поле1 (Т1 и Т2 псевдониы экземпляров одной и той же таблицы, Поле1 - то поле, при условие отличия которого должны объединяться записи). При этом записи у вас задвоятся (в общем случае - замножатся) с точностью до перестановки полей в конечной выборке. Но я думаю, этой проблемы конкретно в вашей задаче не будет - распишите подробнее, что и из чего хотите получить, и все "само-собой" прояснится.
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32283859
DDX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новости!!!!!
Хорошая :) и плохая :(

Хорошая: я смастерил супер-пупер-мега макрос из сочетаний запросов, который сливает несколько записей одной таблицы в одну запись другой таблицы. Таким образом, число подчиненных отчетов в отчете уменьшилось до 12 (с 48 (и даже 96 -в идеале)) ! Но! Опять облом с Аксессом! Предсталяете себе, так как таблицы приликованы (так ли это называется, когда они находятся во внешнем файле? :), то ошибка с числом открытых баз данных осталась на месте!!!!!!!!
:((((( Что мне с этим делать??? Если таблицы внутри файла БД, то все работает как надо (на себе не проверял, но видел в аналогичной БД). Раньше выскакивала ошибка "Число открытых таблиц достигло предела", после разделения базы стало "Число открытых баз данных достигло предела". Видимо, число открытых БД -вообще маленькое.

Ну да ладно... ещё что-нибудь придумаю..

Подскажите мне пожалуйста, можно ли программно отключить вывод подтверждений при внесении запросом изменений в таблицу и потом программно его включить?
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32283915
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Подскажите мне пожалуйста, можно ли программно отключить вывод подтверждений при внесении запросом изменений в таблицу и потом программно его включить?\r
\r
Два ответа: длинный и короткий. Длинный:\r
\r
/topic/45634\r
\r
Короткий: если запускать запрос при помощи CurrentDb.Execute, то никаких подтверждений не будет.
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32284006
DDX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!!!
...
Рейтинг: 0 / 0
Помогите с ОТЧЕТОМ!!!!!!!
    #32290750
DDX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем ещё раз за помощь! Она оказалась очень своевременной и полезной!

с большинством проблем я с Вашей помощью расправился, и моя работа уже используется по делу! :) [ Так как это мой первый проект, то Счастью нет предела ]

Но в процессе эксплуатации возникают некоторые неприятности. Я делаю БД впервые, и ещё не знаю, как с этим бороться, сижу, разбираюсь. Может, кто сталкивался? Подскажите.

1. Может кто-нибудь сталкивался с такой штукой: БД я сделал в Access 2000, а если работать с ней в Access XP, то все операции БЕЗБОЖНО ТОРМОЗЯТ, то есть работать невозможно совершенно, даже на экстремально мощных машинах.

2. При закрытии БД очень часто Access 2000 вообще зависает намертво, только через Диспетчер Задач можно выйти (если можно так выразиться :)

3. Как можно ускорить обрабоку данных по сети?

(Таблицы лежат в общей папке на одной из машин в сети, а несколько файлов с формами и отчетами к ним коннектятся. Может, помимо оптимизации запросов, как-то ещё можно помочь ускорению передачи данных, а то очень долго думает :( )

4. С ошибкой насчет открытия большого числа баз данных я так и не придумал, что делать :( . Отчет сделал поменьше, но это плохо..
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с ОТЧЕТОМ!!!!!!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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