|
|
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
Люди!!! Подскажите, можно ли программно распечатать определенную страницу(цы) отчета, т.е. задать номер страницы, которую нужно отправить на печать при нажатии на кнопку в форме? Метод PRINT отчета, как я понял, не дает такой возможности, а использовать DoCmd.PrintOut к отчету из процедуры нажатия на кнопку у меня не получилось: печатается сама форма :( Может, как-нибудь можно программно установить параметры печати, как в меню Файл->Печать->Номера страниц, или ещё как-нибудь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2003, 19:54 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
По-моему, один такой вопрос тут уже есть.\r \r /topic/50848 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2003, 21:00 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
Кстати, есть идея. Заводим две глобальных переменных PageFrom и PageTo. Задаем им значения перед командой печати. А в отчете, в событии Print каждой секции пишем: If Page < PageFrom Or Page > PageTo Then Cancel = True P.S. Кажется, теперь я укрепил всех во мнении, что создание двух одинкаковых топиков стимулирует мыслительную деятельность участников форума... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2003, 21:12 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
Не столько мыслительную деятельность, сколько просто обратит внимание знатоков Access, я уж прошу извинить меня за настойчивость ))))))) Благодарю за ответ! Эта идея, безусловно, верная, спасибо, но меня все же терзают некоторые сомнения вот какого рода: я решил печатать определенную страницу из-за того, что мой отчет перегружен подчиненными отчетами , и при запуске на печать где-то с 3-ей страницы выскакивает ошибка "Открытие большего числа баз данных невозможно. Закройте одну или несколько баз данных и повторите попытку" (таблицы находятся во внешнем файле). Почему так происходит - я уже выяснил: ядро MicroSoft Jet может держать открытыми одновременно не более 20 рекордсетов , а открытых баз данных, видимо, и того меньше :( . Менять же структуру отчета крайне нежелательно :(. Но зато я обнаружил, что если не отправлять на печать сразу весь отчет, а, не открывая его, задать в меню Файл->Печать-> Номера страниц, например 1-2, а затем 3-4 и т.д., то печать проходит гладко, и так, по частям, можно распечатать весь отчет. Геморрой жуткий :( Вот я и решил печатать по одной странице программно. Но, может, знающие люди подскажут какой-нибудь другой способ выхода из ситуации? При указанном Вами способе, наверно, отчет будет формироваться целиком , а печататься лишь некоторые страницы. Может, это вызовет ту же ошибку :( (проверить я смогу лишь в понедельник). Хотя, скорее всего, при выборе страниц в меню печати отчет тоже формируется целиком, кто его знает.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2003, 23:03 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
С одной стороны, в моем варианте отчет действительно все равно формируется целиком. С другой стороны, при печати с указанием номеров страниц через стандартный диалог печати отчет тоже формируется целиком - по крайней мере та его часть, которая находится до указанных страниц. С третьей стороны, возможно, что-то неладно с тем, как отчет устроен. Есть ли в нем (или в программах, исполняемых при его запуске) команды OpenDatabase и OpenRecordset? Если да, то делается ли этим объектам вовремя Close? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2003, 23:09 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
Боюсь, Ваши вопросы слишком сложные для меня :) Суть такова: отчет представляет собой расписание учебных групп - 6 дней недели по 8 пар в каждом дне. Каждую пару я сделал отдельной сущностью - этого требует сама задача создания моей базы данных. Для каждой пары я создал отдельный маленький отчет (дисциплина, преподаватель и т.д.), внутри каждого из которых в строке "Источник данных" - sql-строка - запрос к соответствующей таблице с условием - номер пары (по дням недели: занятия в понедельник, во вторник и т.д.). Из них я составил отчеты по дню , а из отчетов по дню - расписание целиком на неделю, связав все отчеты по коду группы. Сначала расписание по всем занятиям хранилось в одной таблице. После того, как я сделал отчет, начала выскакивать эта ошибка, и я разнес пары в разные таблицы по дням (понедельник, вторник и т.д.). Не помогло :( В идеале круто было бы сделать на одном листе расписание по 2-м неделям, верхней и нижней, да ведь и на одну неделю и то невозможно вывести :((( А печать отчета я вообще сделал при помощи мастера кнопок: при нажатии- просмотр отчета - и все... 8-[ ] Потом-кнопка "Печать".. А можно ли сделать так, чтобы после того, как один маленький отчет сформировался на какой-то день по какой-то группе, то он бы закрыл свой источник данных? Тогда их бы не было так много открытых сразу! А при переходе на следующую группу - он бы обновил свои данные и снова бы закрыл? Вы это имеете в виду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2003, 23:52 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
2 DX Для распечатки N-й страницы MS Access все-равно должен открыть ВСЕ страницы вплоть до N-й. Характеристики MS Jet настраиваются через реестр. Сама MS подробно пишет об этом в справке по MS Jet, так что настрой MS Jet и избавься от ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2003, 23:53 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
Спасибо, попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2003, 23:58 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
Я прочитал справку по Ms Jet. Облом! Через реестр настраиваются очень многие параметры Jet, кроме того, который мне нужен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2003, 13:25 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
Правильно ли я понял, что команд OpenDatabase и OpenRecordset в программе нет? (Это не сложный вопрос, поиск в программе делается через Ctrl+F.) То есть все эти действия выполняются самим Аксессом просто потому, что так расположены подчиненные отчеты? Если так, то моя идея отменяется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2003, 15:35 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
Еще два соображения. 1. Если я правильно понял, этот отчет имеет четкую структуру, в том числе четкий размер клеток по вертикали. Если так, то заранее известно, какие именно данные окажутся на каждой странице. А тогда можно просто поставить фильтр на данные таким образом, чтобы распечаталась именно нужная страница. 2. Если я правильно понял, в этом отчете много подчиненных отчетов. Думаю, что можно его переделать так, чтобы этого не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2003, 22:52 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
отвечаю чисто формально: DoCmd.PrintOut используется в блоке: DoCmd.OpenReport ... ,acViewPreview DoCmd.PrintOut ... DoCmd.Close acReport ... если и при этом печатается форма, то что-то не так. Тогда пошаманьте с задержками или с DoCmd.SelectObject acReport ... (перед принтаутом) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2003, 13:59 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
Спасибо за ваше участие! Я испробовал на практике обе идеи: Вашу, Владимир Саныч, и Вашу, 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 И что?? Ничего не работает!Судя по книжкам, все должно работать, но оно не работает! Фильтр не применяется вовсе! Может, тут есть какие-то тонкости? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2003, 21:40 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
1) Попробуй заюзать процедуру ПрименитьФильтр (ApplyFilter) (За эффект не ручаюсь, пьяный в ...) 2) К В.С. обращайси на Ты (Это один человек, а не два) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2003, 22:39 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
>>В обоих случаях отчет печатается полностью Гы. А Вы ... там видели? Там (в ...) параметры команд есть (см "Хелп"). В т.ч. и вывод страниц, количества копий и т.п. При превью он (отчет) ессно "выводится весь". Но вы же утверждаете, что ручная просылка на печать определенных страниц вам не вешает печать. Стал быть то, что запрос "выводится весь" на превью вас не смущало. Вот и ставьте в принтауте ваши странички. НАпример Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2003, 11:50 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
> И что?? Ничего не работает! И не будет. Как можно обращаться к отчету до того, как он открыт? Надо так: Вариант 1. Применять фильтр в событии отчета OnOpen. Вариант 2. Перед каждым открыванием отчета менять его источник данных или хотя бы параметры запроса, на котором он сидит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2003, 12:39 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
2 assa: ====== Хотя я не утверждал, что на превью отчет выводится без проблем, это, конечно, можно было заключить из моих слов. Это не так: открывается первая страница, а если листать дальше, то также возникает ошибка. А ручная посылка на печать именно что не вешает отчет. А ... я видел :)) И параметры все указал, что и обозначил в своем коде. А то, что отчет печатается полностью - то ЭТО ХОРОШО!!! Я имел ввиду, что ПО ОДНОЙ странице теперь вводятся на печать все страницы отчета, вот что мне нужно было! Ошибка-то не выскаивает, как раньше! А вот хрень остается :((( А с SelectOblect'ом попробую, спасибо за совет! 2 Владимир Саныч и Темный: ====================== Осознал свои ошибки.. Чтож, тормоз тоже механизм :) Спасибо за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2003, 21:32 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
Позвольте задать ещё один вопрос: возможно ли создать такой запрос, который объединял бы несколько записей одной таблицы в одну запись другой ? То есть: Таблица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 Если создать такую таблицу, то можно будет избавиься от открытия большого числа источников данных при формировании отчета, то есть избавиться от проблемы в принципе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2003, 21:46 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
Если "хрень" это неправильная печать, - то там надо пошаманить с настройками драйвера принтера. Обычно - объем памяти (уменьшить) и режим графики (не помню что, но однозначно загрубить, и выбрать какой-то определенный из предлагаемых типов) приводят его (принтер) в чуйство. Но не всегда. Хуже всего, что ошибка иногда становится "контекстно-зависимой" - с одной и той же машины печатает всегда по разному, в зависимости от черт-знает-чего. Да, переписать отчет - это радикально. Запрос, если _конечное_число_полей_ в нем _заранее_определено_ - не проблема. Объедините таблицу с собой по ключу несколько раз, а для выборок поставьте условия вида Т1.Поле1<>Т2.Поле1 (Т1 и Т2 псевдониы экземпляров одной и той же таблицы, Поле1 - то поле, при условие отличия которого должны объединяться записи). При этом записи у вас задвоятся (в общем случае - замножатся) с точностью до перестановки полей в конечной выборке. Но я думаю, этой проблемы конкретно в вашей задаче не будет - распишите подробнее, что и из чего хотите получить, и все "само-собой" прояснится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2003, 11:16 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
Новости!!!!! Хорошая :) и плохая :( Хорошая: я смастерил супер-пупер-мега макрос из сочетаний запросов, который сливает несколько записей одной таблицы в одну запись другой таблицы. Таким образом, число подчиненных отчетов в отчете уменьшилось до 12 (с 48 (и даже 96 -в идеале)) ! Но! Опять облом с Аксессом! Предсталяете себе, так как таблицы приликованы (так ли это называется, когда они находятся во внешнем файле? :), то ошибка с числом открытых баз данных осталась на месте!!!!!!!! :((((( Что мне с этим делать??? Если таблицы внутри файла БД, то все работает как надо (на себе не проверял, но видел в аналогичной БД). Раньше выскакивала ошибка "Число открытых таблиц достигло предела", после разделения базы стало "Число открытых баз данных достигло предела". Видимо, число открытых БД -вообще маленькое. Ну да ладно... ещё что-нибудь придумаю.. Подскажите мне пожалуйста, можно ли программно отключить вывод подтверждений при внесении запросом изменений в таблицу и потом программно его включить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2003, 22:45 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
> Подскажите мне пожалуйста, можно ли программно отключить вывод подтверждений при внесении запросом изменений в таблицу и потом программно его включить?\r \r Два ответа: длинный и короткий. Длинный:\r \r /topic/45634\r \r Короткий: если запускать запрос при помощи CurrentDb.Execute, то никаких подтверждений не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 00:32 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
Спасибо!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2003, 11:22 |
|
||
|
Помогите с ОТЧЕТОМ!!!!!!!
|
|||
|---|---|---|---|
|
#18+
Спасибо всем ещё раз за помощь! Она оказалась очень своевременной и полезной! с большинством проблем я с Вашей помощью расправился, и моя работа уже используется по делу! :) [ Так как это мой первый проект, то Счастью нет предела ] Но в процессе эксплуатации возникают некоторые неприятности. Я делаю БД впервые, и ещё не знаю, как с этим бороться, сижу, разбираюсь. Может, кто сталкивался? Подскажите. 1. Может кто-нибудь сталкивался с такой штукой: БД я сделал в Access 2000, а если работать с ней в Access XP, то все операции БЕЗБОЖНО ТОРМОЗЯТ, то есть работать невозможно совершенно, даже на экстремально мощных машинах. 2. При закрытии БД очень часто Access 2000 вообще зависает намертво, только через Диспетчер Задач можно выйти (если можно так выразиться :) 3. Как можно ускорить обрабоку данных по сети? (Таблицы лежат в общей папке на одной из машин в сети, а несколько файлов с формами и отчетами к ним коннектятся. Может, помимо оптимизации запросов, как-то ещё можно помочь ускорению передачи данных, а то очень долго думает :( ) 4. С ошибкой насчет открытия большого числа баз данных я так и не придумал, что делать :( . Отчет сделал поменьше, но это плохо.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2003, 15:08 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32278949&tid=1678903]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
89ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 432ms |

| 0 / 0 |
