powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Публикация в Word, проблема.
25 сообщений из 27, страница 1 из 2
Публикация в Word, проблема.
    #32559895
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сохраненный отчет Аксесса, основан на запросе. В свою очередь запрос имеет условие отбора(strFilter), которое создается программно. Отчет надо вывести в Word. Порядок действий такой: в форме создается условие, по команде:
Код: plaintext
DoCmd.OpenReport stDocName, acPreview, , strFilter
создается и открывается отчет. Потом выбирается "Сервис - Связи с Office - Публикация в MS Word"...
Пользователь просит все это автоматизировать. Создаю строку:
Код: plaintext
strSQL = "Select * From Запрос1 Where ([id] = " & strFilter & ");"
а что потом с этим делать? Присобачить это как RecordSource отчета не получается - получаю сообщение, что отчет не открыт.
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32559922
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открой отчет в командной строке
dim rp as Report
docmd.OpenReport "MyReprt",,"MyFilter"
set rp = Reports!MyReprt
rp.visible = false
А дальше попробуй
docmd.RunCommand acCmdSend или что-то в этом роде. Поищи среди команд
илт какой-то Transfer, к сожалению, не помню точно и уже надо убегать...
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560008
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то не то... А может я чего(ничего) не понял?
А нельзя как-то передавать в запрос-источник отчета условие отбора и через OutputTo сразу гнать отчет в Word?
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560013
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
See TransferText Action Help
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560016
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BenzinЧто-то не то... А может я чего(ничего) не понял?
А нельзя как-то передавать в запрос-источник отчета условие отбора и через OutputTo сразу гнать отчет в Word?

/topic/99792
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560019
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И опять я не понял. TransferText вроде как выполняет импорт/экспорт данных , а речь идет об сохраненом отчете.
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560021
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BenzinИ опять я не понял. TransferText вроде как выполняет импорт/экспорт данных , а речь идет об сохраненом отчете.

пример передачи куска Where в DoCmd....
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560045
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что значит сохраненный отчет? сохраненный запрос, на котором базируется отчет со всеми фильтрами и критериями? Так? Так внеси все эти фильтры и критерии в запрос в дизайне запроса и затем трансформируй (SendObject или OutputTo) отчет

Dim qd as QuryDef: Set qd = Currentdb.QueryDefs("MyRptQry")

qd.SQL = "select ... from ... where "

DoCmd.SendObject acSendReport, "MyRpt", acFormatRTF, ...

P.S.
Извиняюсь, TransferText посылает в файл
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560050
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробую так: свободное поле в форме, в нем помещается строка условия. Это поле указано в условии отбора запроса. Выбор происходит в списке. Процедура создания условия:
Код: plaintext
1.
2.
3.
For Each i In Me!lstGRP.ItemsSelected
strFilter = strFilter & Me!lstGRP.ItemData(i) & " OR "
Next
Me.fldFilter = Left(strFilter, Len(strFilter) -  4 )
Если выбрана одна строка списка, то все работает, но если больше, то в поле появляется, например:
Код: plaintext
  2  OR  4 
и запрос ругается, что выражение слишком сложное.
-----------------------------------------------------
И еще одна беда, только сейчас обнаружил: после публикации отчета в Ворде, его вид искажается - какие-то символы служебные вылезают и весь отчет усыпан изображением стрелок направленых вправо. А это что такое?!
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560062
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения, это я впопыхах испугался внешнего вида документа Ворд, в режиме просмотра все нормально, а эти "правые стрелки" - то во что превратились линии отчета Аксесс. При просмотре стрелки исчезают, правда линии так и не появляются (ну и хрен с ними).
Осталась только проблема с условием.
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560064
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Если выбрана одна строка списка, то все работает, но если больше, то в поле появляется, например: 2 OR 4


и запрос ругается, что выражение слишком сложное.



вероятно у тебя Where некий_Id=2
работает
Where некий_Id=2 Or 4 - не должен надо
Where некий_Id=2 Or некий_Id=4
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560075
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 RD:
Извиняюсь, TransferText посылает в файл

А SendObject включает объект в сообщение эл.почты. И зачем он мне?
Но, что самое интересное, отчет о котором идет речь действительно потом рассылается по почте. Только, к сожалению, в качестве "почтальона" используется Lotus, а подружить его с Акссессом так и не получилось.
2 S:
хочешь сказать что в поле формы должно быть: [idGr]=2 Or [idGr]=4?
Получаю такое же сообщение об ошибке. :((
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560084
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Benzin2 RD:
Извиняюсь, TransferText посылает в файл

А SendObject включает объект в сообщение эл.почты. И зачем он мне?
Но, что самое интересное, отчет о котором идет речь действительно потом рассылается по почте. Только, к сожалению, в качестве "почтальона" используется Lotus, а подружить его с Акссессом так и не получилось.
2 S:
хочешь сказать что в поле формы должно быть: [idGr]=2 Or [idGr]=4?
Получаю такое же сообщение об ошибке. :((

debug.print strFilter что даёт ?
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560106
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как - что?
сначала давал: 2 or 4
потом: [idGr]=2 Or [idGr]=4
Это же выражение попадает в поле формы, а поле указано в условии отбора поля [idGr] запроса-источника. Что-то тут не так, но не пойму - что.
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560114
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
весь код положи
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560122
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BenzinКак - что?
а поле указано в условии отбора поля [idGr] запроса-источника

понял так
в RecordSource(запроса-источника) ..Where [idGr]= [Forms]![твоя_форма]![fldFilter]
если так то надо писать Where [idGr] IN (1,2,7,..)
пример из хэлпа:
SELECT * FROM Заказы WHERE ГородПолучателя In ('Киев','Минск','Тула');
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560198
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 S:
если так то надо писать
где писать-то?
Ты все правильно понял: в запросе-источнике так все и написано.
А вот куда вставлять это "Where [idGr] IN (1,2,7,..) "? Надо, чтобы в поле формы(на которое ссылка) это выражение появилось? И "Where" тоже?
Попробывал в условии отбора прямо в запросе (вместо ссылки на поле формы) написать: In(2), ругаться перестал, но записи не возвращает.
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560227
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Benzin2 S:
если так то надо писать
где писать-то?
Ты все правильно понял: в запросе-источнике так все и написано.
А вот куда вставлять это "Where [idGr] IN (1,2,7,..) "? Надо, чтобы в поле формы(на которое ссылка) это выражение появилось? И "Where" тоже?
Попробывал в условии отбора прямо в запросе (вместо ссылки на поле формы) написать: In(2), ругаться перестал, но записи не возвращает.
попробуй In (2;4)
(разделитель не должен совпадать в региональных настройках с целой/дробной)
Код: plaintext
1.
2.
3.
SELECT *
FROM TCorp
WHERE TCorp.Corp_id  In ( 1 , 3 , 7 );
у меня так работает
запрос приобретёт вид :
"Select * From Запрос1 Where [id] In "
а в поле посадишь (1;2;4...)
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560283
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё! Запутался вконец!
1. С синтаксисом разобрался, должен быть разделитель ";". Это мы проехали и забыли - я ведь просто попробовал вводить условие прямо в запрос.
2. Вернемся к самому сохраненному запросу-источнику. У него в условии отбора поля [idGr] указано: [Forms]![Моя_форма]![fldFilter]
Какое выражение должно содержать это поле? Вот прямо дословно. Для случая, когда условий отбора несколько.
Если указать у запроса условие отбора: 2 Or 4, то все работает.
Вопрос: что должно содержать поле [Forms]![Моя_форма]![fldFilter], чтобы для запроса это было эквивалентно указанному условию?
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560289
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
2. Вернемся к самому сохраненному запросу-источнику. У него в условии отбора поля [idGr] указано: [Forms]![Моя_форма]![fldFilter]

ТЕКСТ ЗАПРОСА ПОКАЖИ !!!
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560301
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT Оплата.idUser, Оплата.dtSPeriod, Оплата.dtEndPeriod, Оплата.SumPay, Группы.IdGRP
FROM Группы RIGHT JOIN (Сотрудники INNER JOIN (Сделки RIGHT JOIN ОплатаON Сделки .NumTel = Оплата.NumTel) ON Сотрудники.idUser = Оплата.idUser) ON Группы.IdGRP = Сотрудники.IdGRP
WHERE (((Оплата.dtSPeriod) Between [Forms]![Отбор]![dtStart] And [Forms]![Отбор]![dtEnd]) AND ((Группы.IdGRP)=[Forms]![Отбор]![fldFilter]));
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560322
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Увы!
In работает только при прямом перечислении в тексте запроса(видимо как Top)
придётся воспользоваться советом Dmitry от 10:21
код сейчас склепаю
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560357
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
исходные данные:
- имя запроса-источника отчета q2
- Access97/mdb
- имя отчета R2
- d:\2.rtf - выходной rtf файл
- [Forms]![Моя_форма]![fldFilter] - поле на форме в нём должно жить 2,4(именно через ,)!!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim MyDb As DAO.Database
Dim myq As QueryDef
Dim stDocName As String
Set MyDb = CurrentDb
Set myq = MyDb.QueryDefs![q2]
myq.SQL = "SELECT Оплата.idUser, Оплата.dtSPeriod, Оплата.dtEndPeriod, Оплата.SumPay, Группы.IdGRP
FROM Группы RIGHT JOIN (Сотрудники INNER JOIN (Сделки RIGHT JOIN ОплатаON Сделки .NumTel = Оплата.NumTel) ON Сотрудники.idUser = Оплата.idUser) ON Группы.IdGRP = Сотрудники.IdGRP
WHERE (((Оплата.dtSPeriod) Between [Forms]![Отбор]![dtStart] And [Forms]![Отбор]![dtEnd]) AND ((Группы.IdGRP In (" & [Forms]![Моя_форма]![fldFilter] & "))));"
Docmd.OutputTo acOutputReport, "R2", acFormatRTF, "d:\2.rtf"
myq.Close
Set MyDb = Nothing
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560358
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
For Each i In Me!lstGRP.ItemsSelected
strFilter = strFilter & "([Группы].[idGRP]) = " & Me!lstGRP.ItemData(i) & " OR "
Next
Me.fldFilter = Left(strFilter, Len(strFilter) -  4 )
strSQL = " Sql - представление твоего запроса" _
& "  And (" & strFilter & "))" _
& " если есть сортировка, если нет - не забудь ";" поместить в конец предыдыдущей строки"
Set qdf = CurrentDb.QueryDefs("Твой запрос")
           qdf.SQL = strSQL
DoCmd.OutputTo acOutputReport, "Твой отчет", , True
---------------------
поле в форме не нужно :))
...
Рейтинг: 0 / 0
Публикация в Word, проблема.
    #32560365
АндрейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упустил, в последней строке должно быть:
Код: plaintext
DoCmd.OutputTo acOutputReport, "Твой отчет",acFormatRTF, , True
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Публикация в Word, проблема.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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