Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3      [все]
 Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
Приветствую всех! Помогите решить задачу. Надо подготовить документ Ворд на основе шаблона. Не могу сделать перенос данных из "подформаПлатежи" в заранее нарисованную в шаблоне таблицу. Надо переносить "Номер_недели" из подформы в "Неделя" шаблона и "Платеж" из подформы в "Платеж" шаблона. Количество Платежей(недель) может быть разное, но не более 30. Таблица в шаблоне должна быть именно такая - 15строк + 15строк, в один столбец вертикально нельзя.
Выкладываю файлы бд и шаблона.

К сообщению приложен файл. Размер - 78Kb
2 фев 19, 21:55    [21800567]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
wladimirrr,

К сообщению приложен файл. Размер - 84Kb
2 фев 19, 21:55    [21800568]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
бд и шаблон

К сообщению приложен файл (Платежи.rar - 50Kb) cкачать
2 фев 19, 21:56    [21800569]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4403
wladimirrr,

прототип решения в принципе имеется

непонятно только
--платеж в неделю произволен(можно ли пропустить неделю)
--как определяется сумма в неделю

Код_платежаКод_контрактаНомер_неделиПлатеж
13211 000,00р.
14221 000,00р.
15231 000,00р.
16241 000,00р.
17251 000,00р.
18261 000,00р.
19271 000,00р.
20281 000,00р.
2129900,00р.
22210900,00р.
232111 100,00р.
242121 100,00р.
252131 000,00р.
262141 000,00р.
272151 000,00р.
282161 000,00р.
292171 500,00р.
302181 500,00р.
31219500,00р.
32220500,00р.
2 фев 19, 22:05    [21800570]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4403
wladimirrr,

обязательно ли платежи в 2 колонки --количество то платежей -- разное
2 фев 19, 22:07    [21800572]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
ПЕНСИОНЕРКА, количество недель это параметр контракта. оно может быть от1-го до 30-ти. Платеж в конкретную неделю задается вручную при подготовке контракта. Пропускать платежи и недели нельзя.
2 фев 19, 22:15    [21800574]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
ПЕНСИОНЕРКА
wladimirrr,

обязательно ли платежи в 2 колонки --количество то платежей -- разное

в этом-то и засада. Нужно именно в 2 колонки заполнить платежами.
2 фев 19, 22:16    [21800575]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4403
wladimirrr
в этом-то и засада. Нужно именно в 2 колонки заполнить платежами.

завтра попробую подработать образец, сейчас уже поздно
2 фев 19, 22:25    [21800578]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
ПЕНСИОНЕРКА
wladimirrr
в этом-то и засада. Нужно именно в 2 колонки заполнить платежами.

завтра попробую подработать образец, сейчас уже поздно

Заранее благодарю!
2 фев 19, 22:26    [21800579]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
Swa111
Member

Откуда:
Сообщений: 84

ссылка на используемый компонент


Используя запросы из таблицы t_RepQuery можно сделать и на закладках (наверное).

К сообщению приложен файл (pack.zip - 116Kb) cкачать
3 фев 19, 13:39    [21800755]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
Swa111, очень интересное решение! Хорошо работает. К сожалению, я не смогу им воспользоваться. Дело в том, что в реале, бд и шаблон Контракт намного объемнее и сложнее. Я специально сделал простой пример для форума. Использовать Ваш метод в моем проекте мне не позволит отсутствие глубоких знаний в программировании. Очень жаль! А Вам большое спасибо!
3 фев 19, 14:26    [21800774]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
Swa111, мне нужно решить эту задачу именно с использованием шаблона Ворд.
3 фев 19, 14:27    [21800775]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4403
Swa111
Используя запросы из таблицы t_RepQuery можно сделать и на закладках (наверное).


исправила тьму необъявленных переменных
открыла отчет для 1-й записи
перешла на 2-ю .....не работает
вернулась на 1-ю ...тоже не работает
не смогла запустить формирование для
3 фев 19, 14:40    [21800780]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
Swa111
Member

Откуда:
Сообщений: 84
ПЕНСИОНЕРКА,

Да, не было возможности протестировать на других конфигурациях и настройках отличных от Win7 (32/64) + Office 2010 (32),
по поводу не объявленных переменных, возможно у меня аксес настроен так что все необъявленные переменные автоматически объявляются как variant.
3 фев 19, 14:58    [21800786]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4403
Swa111
необъявленные переменные автоматически объявляются как variant.

это не проблема
главное --когда присваивается необъявленной необъявленная же переменная
например а=в, причем в тоже не объявлена и не присвоена
причем таких мест в вашем коде как минимум 3-4
3 фев 19, 15:15    [21800790]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
Swa111
Member

Откуда:
Сообщений: 84
ПЕНСИОНЕРКА,

Вот так да, я был бы признателен если укажете места где есть подобные ошибки, и что бы не засорять данную ветку попрошу перейти в исходный топик

wladimirrr,

Разрешите использовать Вашу тестовую базу, для публикации в другом топике?
3 фев 19, 15:25    [21800792]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
Swa111
ПЕНСИОНЕРКА,

Вот так да, я был бы признателен если укажете места где есть подобные ошибки, и что бы не засорять данную ветку попрошу перейти в исходный топик

wladimirrr,

Разрешите использовать Вашу тестовую базу, для публикации в другом топике?

Да, конечно.
3 фев 19, 15:36    [21800794]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4403
Swa111,

строки с критическими ошибками помечены 6 апострофами(4 случая я пометила, но что-то пропустила)
просто дообъявления --3 апострофа
3 фев 19, 16:11    [21800800]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4403
wladimirrr,

забыла приложение

К сообщению приложен файл (Платежи190203p.zip - 139Kb) cкачать
3 фев 19, 16:12    [21800802]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
Swa111
Member

Откуда:
Сообщений: 84
wladimirrr,

для составления сложных отчетов, без программирования все равно не обойтись
Вот есть пример вставки таблицы в шаблон ворд 15188954

В качестве запроса для RecordSet можно использовать такой запрос

select 
 qMain.n as nL,
 sum(nPayL) as nSumPayL,
 qMain.nR as nR,
 sum(Платеж) as nSumPayR
from
 (
  select 
   n,
   n + qHalf.nHalf as nR,
   Платеж as nPayL
   
  from 
  ((SELECT 
   d1.id + d2.id*10 + d3.id*100 + 1 as n
  from 
   digits d1, digits d2, digits d3
  )d inner join (select round(max(Номер_недели)/2,0) as nHalf from Платежи where Код_контракта = %contract%) qHalf on d.n <= qHalf.nHalf)
  left join 
    (select Номер_недели, Платеж from  Платежи where Код_контракта = %contract%) as tPayL on tPayL.Номер_недели = d.n 
 ) qMain 
left join 
  (select Номер_недели, Платеж from  Платежи where Код_контракта = %contract%) as tPayL on tPayL.Номер_недели = qMain.nR
group by n, nr;


заменив %contract% на текущий Код_контракта
3 фев 19, 16:28    [21800809]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
ПЕНСИОНЕРКА
wladimirrr,

забыла приложение

Не работает.
3 фев 19, 16:31    [21800810]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
Swa111
wladimirrr,

для составления сложных отчетов, без программирования все равно не обойтись
Вот есть пример вставки таблицы в шаблон ворд 15188954

В качестве запроса для RecordSet можно использовать такой запрос


заменив %contract% на текущий Код_контракта

С запросом вроде разобрался. А как адаптировать код в примере 15188954 в моем случае. Где в этом коде происходит вставка таблицы из запроса?
3 фев 19, 16:52    [21800819]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4403
wladimirrr
ПЕНСИОНЕРКА
wladimirrr,

забыла приложение

Не работает.

у меня тоже не работает --еще что-то не до-объявила
а в логику даже и не пыталась влезь
3 фев 19, 16:54    [21800821]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
Swa111
Member

Откуда:
Сообщений: 84
wladimirrr,



Как то так (не проверял)
+
Public Function Contract()
Dim WD As Object
    Set WD = CreateObject("Word.Application")
    WD.Documents.Open FileName:=CurrentProject.Path & "\Контракт.dotx"
    WD.Visible = True
    WD.Application.WindowState = 1
    WD.Activate
    WD.ActiveDocument.Bookmarks("Number").Range.text = Nz(Forms!Контракты!Номер_контракта, "")
    WD.ActiveDocument.Bookmarks("Data").Range.text = Nz(Forms!Контракты!Дата_контракта, "")
    WD.ActiveDocument.Bookmarks("Summ").Range.text = Nz(Format(Forms!Контракты!Сумма_контракта, " ######0.00р."))
    WD.ActiveDocument.Bookmarks("Name1").Range.text = Nz(Forms!Контракты!подформаКлиенты.Form!ФИО, "")
    WD.ActiveDocument.Bookmarks("Name2").Range.text = Nz(Forms!Контракты!подформаКлиенты.Form!ФИО, "")
    WD.ActiveDocument.Bookmarks("Phone").Range.text = Nz(Forms!Контракты!подформаКлиенты.Form!Телефон, "")
    WD.ActiveDocument.Bookmarks("Addr1").Range.text = Nz(Forms!Контракты!подформаКлиенты.Form!Адрес, "")
    WD.ActiveDocument.Bookmarks("Addr2").Range.text = Nz(Forms!Контракты!подформаКлиенты.Form!Адрес, "")



    Dim rst As Recordset
    Dim strSQL As String
    
    strSQL ="select " & vbcrlf & _
            " qMain.n as nL," & vbcrlf & _
            " sum(nPayL) as nSumPayL," & vbcrlf & _
            " qMain.nR as nR," & vbcrlf & _
            " sum(Платеж) as nSumPayR" & vbcrlf & _
            "from" & vbcrlf & _
            " (select n, n + qHalf.nHalf as nR, Платеж as nPayL" & vbcrlf & _
            "  from ((SELECT " & vbcrlf & _
            "   d1.id + d2.id*10 + d3.id*100 + 1 as n" & vbcrlf & _
            "  from " & vbcrlf & _
            "   digits d1, digits d2, digits d3" & vbcrlf & _
            "  )d inner join (select round(max(Номер_недели)/2,0) as nHalf from Платежи where Код_контракта = %contract%) qHalf on d.n <= qHalf.nHalf)" & vbcrlf & _
            "  left join " & vbcrlf & _
            "    (select Номер_недели, Платеж from  Платежи where Код_контракта = %contract%) as tPayL on tPayL.Номер_недели = d.n " & vbcrlf & _
            " ) qMain " & vbcrlf & _
            "left join " & vbcrlf & _
            "  (select Номер_недели, Платеж from  Платежи where Код_контракта = %contract%) as tPayL on tPayL.Номер_недели = qMain.nR" & vbcrlf & _
            "group by n, nr;" 
          
   
    Set rst = New Recordset
    rst.Open strSQL, CurrentProject.Connection
    
    
    With CreateTableFromRecordset(objWord.ActiveDocument.Bookmarks("Details").Range, rst, True)
        
        ' Apply formatting
        .AutoFormat wdTableFormatProfessional
        .AutoFitBehavior wdAutoFitContent
        
        ' Fix up paragraph alignment
        .Range.ParagraphFormat.Alignment = wdAlignParagraphRight
        .Columns(1).Select
        objWord.Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
        objWord.Selection.MoveDown
    End With
    
    WD.ActiveDocument.SaveAs FileName:=CurrentProject.Path & "\" & "Контракт" & "_" & [Forms]![Контракты]![Номер_контракта] & ".docx"
End Function


На место таблицы нужно поставить закладку с именем Details

К себе нужно скопировать функцию CreateTableFromRecordset
3 фев 19, 17:28    [21800847]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
Swa111
wladimirrr,


К себе нужно скопировать функцию CreateTableFromRecordset

Откуда ее скопировать? Где она есть?
3 фев 19, 18:32    [21800867]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
Swa111, в примере выше, нашел.
3 фев 19, 18:36    [21800870]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
Swa111, функцию скопировал. Пока не хочет работать.

К сообщению приложен файл. Размер - 77Kb
3 фев 19, 18:39    [21800872]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
Serg197311
Member

Откуда:
Сообщений: 339
wladimirrr,

Где-нибудь вначале - Dim rst as Adodb.recordset добавьте....
3 фев 19, 19:27    [21800881]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
Serg197311
wladimirrr,

Где-нибудь вначале - Dim rst as Adodb.recordset добавьте....

Не хочет...

К сообщению приложен файл. Размер - 77Kb
3 фев 19, 19:44    [21800884]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4403
wladimirrr,

немного нечетко по столбцам, но остальное просто
--вместо закладок --замена(поэтому сделала дубль шаблона)
--одних и тех же замен в документе может быть любое количество
--если объединенных ячеек в таблице нет, то все линейно
--объединенные ячейки в шапке немного усложнят подход

К сообщению приложен файл (Платежи190203.zip - 137Kb) cкачать
3 фев 19, 20:27    [21800897]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
__Michelle
Member

Откуда:
Сообщений: 3008
wladimirrr
Не хочет... 

rst дважды объявляется - в первой и третьей строках, сначала DAO, потом ADO.
3 фев 19, 20:47    [21800900]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
ПЕНСИОНЕРКА
wladimirrr,

немного нечетко по столбцам, но остальное просто
--вместо закладок --замена(поэтому сделала дубль шаблона)
--одних и тех же замен в документе может быть любое количество
--если объединенных ячеек в таблице нет, то все линейно
--объединенные ячейки в шапке немного усложнят подход

Спасибо! Стараюсь разобраться в кодах.
3 фев 19, 21:03    [21800905]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
__Michelle
wladimirrr
Не хочет... 

rst дважды объявляется - в первой и третьей строках, сначала DAO, потом ADO.

Не хочет работать ни с DAO, ни с ADO.
3 фев 19, 21:14    [21800908]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
__Michelle
Member

Откуда:
Сообщений: 3008
wladimirrr
__Michelle
пропущено...

rst дважды объявляется - в первой и третьей строках, сначала DAO, потом ADO.

Не хочет работать ни с DAO, ни с ADO.

Зачем дважды-то объявлять?
3 фев 19, 21:21    [21800910]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
__Michelle, это я понял). Пробовал объявлять как DAO, не работает, как ADO, тоже не работает.
3 фев 19, 21:44    [21800918]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 423
wladimirrr, set rst=new recordset - нужно удалить - это ошибочное действие.
3 фев 19, 23:02    [21800943]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
alecko
wladimirrr, set rst=new recordset - нужно удалить - это ошибочное действие.

не проходит

К сообщению приложен файл. Размер - 77Kb
3 фев 19, 23:07    [21800944]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 423
wladimirrr,
объявите DAO
set rst=Currentdb.Openrecordset(strsql, dbOpenDynaset)
3 фев 19, 23:15    [21800947]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
Swa111
Member

Откуда:
Сообщений: 84
Оказывается Round округляет не совсем по правилам математики. Замените код в запросе, а то если число платежей нечетное последний платеж выпадает

...
select round(max(Номер_недели)/2+.05,0) as nHalf from Платежи where Код_контракта = %contract%
...


+
Option Compare Database
Option Explicit

Const wdAlignParagraphLeft = 0
Const wdAlignParagraphCenter = 1
Const wdAlignParagraphRight = 2
Const wdTableFormatProfessional = 37
Const wdAutoFitContent = 1

Function CreateTableFromRecordset( _
 rngAny, _
 rstAny, _
 Optional fIncludeFieldNames As Boolean = False) _
 As Variant
 

    Dim objTable 'As Word.Table
    Dim fldAny 'As ADODB.Field
    Dim varData As Variant
    Dim strBookmark As String
    Dim cField As Long

    ' Get the data from the recordset
    varData = rstAny.GetString()
    
    ' Create the table
    With rngAny
    
        ' Creating the basic table is easy,
        ' just insert the tab-delimted text
        ' add convert it to a table
        .InsertAfter varData
        Set objTable = .ConvertToTable(vbTab)
        
        ' Field names are more work since
        ' you must do them one at a time
        If fIncludeFieldNames Then
            With objTable
            
                ' Add a new row on top and make it a heading
                .Rows.Add(.Rows(1)).HeadingFormat = True
                
                ' Iterate through the fields and add their
                ' names to the heading row
                For Each fldAny In rstAny.Fields
                    cField = cField + 1
                    .Cell(1, cField).Range.Text = fldAny.Name
                Next
            End With
        End If
    End With
    Set CreateTableFromRecordset = objTable
End Function

Public Function Contract()
Dim WD As Object
    Set WD = CreateObject("Word.Application")
    WD.Visible = True
    WD.Documents.Open FileName:=CurrentProject.Path & "\Контракт.dotx"
    WD.Application.WindowState = 1
    WD.Activate
    WD.ActiveDocument.Bookmarks("Number").Range.Text = Nz(Forms!Контракты!Номер_контракта, "")
    WD.ActiveDocument.Bookmarks("Data").Range.Text = Nz(Forms!Контракты!Дата_контракта, "")
    WD.ActiveDocument.Bookmarks("Summ").Range.Text = Nz(Format(Forms!Контракты!Сумма_контракта, " ######0.00р."))
    WD.ActiveDocument.Bookmarks("Name1").Range.Text = Nz(Forms!Контракты!подформаКлиенты.Form!ФИО, "")
    WD.ActiveDocument.Bookmarks("Name2").Range.Text = Nz(Forms!Контракты!подформаКлиенты.Form!ФИО, "")
    WD.ActiveDocument.Bookmarks("Phone").Range.Text = Nz(Forms!Контракты!подформаКлиенты.Form!Телефон, "")
    WD.ActiveDocument.Bookmarks("Addr1").Range.Text = Nz(Forms!Контракты!подформаКлиенты.Form!Адрес, "")
    WD.ActiveDocument.Bookmarks("Addr2").Range.Text = Nz(Forms!Контракты!подформаКлиенты.Form!Адрес, "")


     
    Dim rst
    Dim strSQL As String
    
    
    
    strSQL = "select " & vbCrLf & _
            " qMain.n as [Неделя]," & vbCrLf & _
            " sum(nPayL) as [Платеж]," & vbCrLf & _
            " qMain.nR as [Неделя_]," & vbCrLf & _
            " sum(Платеж) as [Платеж_]" & vbCrLf & _
            "from" & vbCrLf & _
            " (select n, n + qHalf.nHalf as nR, Платеж as nPayL" & vbCrLf & _
            "  from ((SELECT " & vbCrLf & _
            "   d1.id + d2.id*10 + d3.id*100 + 1 as n" & vbCrLf & _
            "  from " & vbCrLf & _
            "   digits d1, digits d2, digits d3" & vbCrLf & _
            "  )d inner join (select round(max(Номер_недели)/2+0.05,0) as nHalf from Платежи where Код_контракта = " & Forms!Контракты!Код_контракта & ") qHalf on d.n <= qHalf.nHalf)" & vbCrLf & _
            "  left join " & vbCrLf & _
            "    (select Номер_недели, Платеж from  Платежи where Код_контракта = " & Forms!Контракты!Код_контракта & ") as tPayL on tPayL.Номер_недели = d.n " & vbCrLf & _
            " ) qMain " & vbCrLf & _
            "left join " & vbCrLf & _
            "  (select Номер_недели, Платеж from  Платежи where Код_контракта = " & Forms!Контракты!Код_контракта & ") as tPayL on tPayL.Номер_недели = qMain.nR" & vbCrLf & _
            "group by n, nr;"
          
    Set rst = CurrentProject.Connection.Execute(strSQL)
    
    'Set rst = New Recordset
    'rst.Open strSQL, CurrentProject.Connection
    
    
    With CreateTableFromRecordset(WD.ActiveDocument.Bookmarks("Details").Range, rst, True)
        
        ' Apply formatting
        .AutoFormat wdTableFormatProfessional
        .AutoFitBehavior wdAutoFitContent
        
        ' Fix up paragraph alignment
        .Range.ParagraphFormat.Alignment = wdAlignParagraphRight
        .Columns(1).Select
        WD.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
        WD.Selection.MoveDown
    End With
    
    WD.ActiveDocument.SaveAs FileName:=CurrentProject.Path & "\" & "Контракт" & "_" & [Forms]![Контракты]![Номер_контракта] & ".docx"
End Function


Что бы привести вариант с программным созданием в красивый вид нужно будет поизучать объектную модель. Так что если стоит вопрос именно в объеме программирования то стоит задуматься использовать готовый RtfReport или полностью программный метод.
4 фев 19, 09:26    [21801035]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
alecko
wladimirrr,
объявите DAO
set rst=Currentdb.Openrecordset(strsql, dbOpenDynaset)

не хочет работать...

К сообщению приложен файл. Размер - 78Kb
4 фев 19, 10:12    [21801066]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4403
wladimirrr
не хочет работать...

не пойму --с какой базой вы работаете
смотрели ли вы мой пример --он весьма наглядный(не выровняла только столбцы вчера)
4 фев 19, 10:42    [21801079]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
Swa111
Оказывается Round округляет не совсем по правилам математики. Замените код в запросе, а то если число платежей нечетное последний платеж выпадает

...
select round(max(Номер_недели)/2+.05,0) as nHalf from Платежи where Код_контракта = %contract%
...


+
Option Compare Database
Option Explicit

Const wdAlignParagraphLeft = 0
Const wdAlignParagraphCenter = 1
Const wdAlignParagraphRight = 2
Const wdTableFormatProfessional = 37
Const wdAutoFitContent = 1

Function CreateTableFromRecordset( _
 rngAny, _
 rstAny, _
 Optional fIncludeFieldNames As Boolean = False) _
 As Variant
 

    Dim objTable 'As Word.Table
    Dim fldAny 'As ADODB.Field
    Dim varData As Variant
    Dim strBookmark As String
    Dim cField As Long

    ' Get the data from the recordset
    varData = rstAny.GetString()
    
    ' Create the table
    With rngAny
    
        ' Creating the basic table is easy,
        ' just insert the tab-delimted text
        ' add convert it to a table
        .InsertAfter varData
        Set objTable = .ConvertToTable(vbTab)
        
        ' Field names are more work since
        ' you must do them one at a time
        If fIncludeFieldNames Then
            With objTable
            
                ' Add a new row on top and make it a heading
                .Rows.Add(.Rows(1)).HeadingFormat = True
                
                ' Iterate through the fields and add their
                ' names to the heading row
                For Each fldAny In rstAny.Fields
                    cField = cField + 1
                    .Cell(1, cField).Range.Text = fldAny.Name
                Next
            End With
        End If
    End With
    Set CreateTableFromRecordset = objTable
End Function

Public Function Contract()
Dim WD As Object
    Set WD = CreateObject("Word.Application")
    WD.Visible = True
    WD.Documents.Open FileName:=CurrentProject.Path & "\Контракт.dotx"
    WD.Application.WindowState = 1
    WD.Activate
    WD.ActiveDocument.Bookmarks("Number").Range.Text = Nz(Forms!Контракты!Номер_контракта, "")
    WD.ActiveDocument.Bookmarks("Data").Range.Text = Nz(Forms!Контракты!Дата_контракта, "")
    WD.ActiveDocument.Bookmarks("Summ").Range.Text = Nz(Format(Forms!Контракты!Сумма_контракта, " ######0.00р."))
    WD.ActiveDocument.Bookmarks("Name1").Range.Text = Nz(Forms!Контракты!подформаКлиенты.Form!ФИО, "")
    WD.ActiveDocument.Bookmarks("Name2").Range.Text = Nz(Forms!Контракты!подформаКлиенты.Form!ФИО, "")
    WD.ActiveDocument.Bookmarks("Phone").Range.Text = Nz(Forms!Контракты!подформаКлиенты.Form!Телефон, "")
    WD.ActiveDocument.Bookmarks("Addr1").Range.Text = Nz(Forms!Контракты!подформаКлиенты.Form!Адрес, "")
    WD.ActiveDocument.Bookmarks("Addr2").Range.Text = Nz(Forms!Контракты!подформаКлиенты.Form!Адрес, "")


     
    Dim rst
    Dim strSQL As String
    
    
    
    strSQL = "select " & vbCrLf & _
            " qMain.n as [Неделя]," & vbCrLf & _
            " sum(nPayL) as [Платеж]," & vbCrLf & _
            " qMain.nR as [Неделя_]," & vbCrLf & _
            " sum(Платеж) as [Платеж_]" & vbCrLf & _
            "from" & vbCrLf & _
            " (select n, n + qHalf.nHalf as nR, Платеж as nPayL" & vbCrLf & _
            "  from ((SELECT " & vbCrLf & _
            "   d1.id + d2.id*10 + d3.id*100 + 1 as n" & vbCrLf & _
            "  from " & vbCrLf & _
            "   digits d1, digits d2, digits d3" & vbCrLf & _
            "  )d inner join (select round(max(Номер_недели)/2+0.05,0) as nHalf from Платежи where Код_контракта = " & Forms!Контракты!Код_контракта & ") qHalf on d.n <= qHalf.nHalf)" & vbCrLf & _
            "  left join " & vbCrLf & _
            "    (select Номер_недели, Платеж from  Платежи where Код_контракта = " & Forms!Контракты!Код_контракта & ") as tPayL on tPayL.Номер_недели = d.n " & vbCrLf & _
            " ) qMain " & vbCrLf & _
            "left join " & vbCrLf & _
            "  (select Номер_недели, Платеж from  Платежи where Код_контракта = " & Forms!Контракты!Код_контракта & ") as tPayL on tPayL.Номер_недели = qMain.nR" & vbCrLf & _
            "group by n, nr;"
          
    Set rst = CurrentProject.Connection.Execute(strSQL)
    
    'Set rst = New Recordset
    'rst.Open strSQL, CurrentProject.Connection
    
    
    With CreateTableFromRecordset(WD.ActiveDocument.Bookmarks("Details").Range, rst, True)
        
        ' Apply formatting
        .AutoFormat wdTableFormatProfessional
        .AutoFitBehavior wdAutoFitContent
        
        ' Fix up paragraph alignment
        .Range.ParagraphFormat.Alignment = wdAlignParagraphRight
        .Columns(1).Select
        WD.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
        WD.Selection.MoveDown
    End With
    
    WD.ActiveDocument.SaveAs FileName:=CurrentProject.Path & "\" & "Контракт" & "_" & [Forms]![Контракты]![Номер_контракта] & ".docx"
End Function


Что бы привести вариант с программным созданием в красивый вид нужно будет поизучать объектную модель. Так что если стоит вопрос именно в объеме программирования то стоит задуматься использовать готовый RtfReport или полностью программный метод.

Swa111, нормальный вариант, работает хорошо! Единственно, как воткнуть денежный формат в таблицу для платежей? руб. или $.
4 фев 19, 11:32    [21801122]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
ПЕНСИОНЕРКА
wladimirrr
не хочет работать...

не пойму --с какой базой вы работаете
смотрели ли вы мой пример --он весьма наглядный(не выровняла только столбцы вчера)

Да, Ваш вариант я тестирую и он вполне рабочий. И параллельно я тестирую вариант от Swa111.
4 фев 19, 11:35    [21801127]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
Swa111
Member

Откуда:
Сообщений: 84
wladimirrr,

...
            " format(sum(nPayL), '### ##0.00 руб.') as [Платеж]," & vbCrLf & _
...
4 фев 19, 11:50    [21801140]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4403
wladimirrr
Да, Ваш вариант я тестирую и он вполне рабочий

поправила имя документа, деньги, выравнивание и строки

К сообщению приложен файл (Платежи190204a.zip - 102Kb) cкачать
4 фев 19, 12:36    [21801182]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
ПЕНСИОНЕРКА, начал встраивать в реальную базу, что-то не срабатывает. Что это значит?

К сообщению приложен файл. Размер - 76Kb
4 фев 19, 13:38    [21801244]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4403
wladimirrr,

забыли объявить или в форме(сразу после option ....)
dim strPathDot As String, strPathWord As String

или в общем модуле
public strPathDot As String, strPathWord As String
4 фев 19, 13:43    [21801250]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
ПЕНСИОНЕРКА
wladimirrr
Да, Ваш вариант я тестирую и он вполне рабочий

поправила имя документа, деньги, выравнивание и строки

Да, уже намного красивее таблица! А изменения в каких функциях,во все? А то, я уже начал встраивать коды в реальную базу.
4 фев 19, 13:45    [21801253]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
ПЕНСИОНЕРКА
wladimirrr,

забыли объявить или в форме(сразу после option ....)
dim strPathDot As String, strPathWord As String

или в общем модуле
public strPathDot As String, strPathWord As String

Вроде все копировал из Вашего кода. Сейчас проверю.
4 фев 19, 13:47    [21801255]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4403
wladimirrr,
и я не люблю таких сокращений типов($), их легко потерять и получим вместо string -> variant

Public Function funOutputWord(strPathDot$, strPathWord$) As Boolean

предпочитаю явно

Public Function funOutputWord(strPathDot as string, strPathWord as string) As Boolean
4 фев 19, 13:47    [21801256]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
ПЕНСИОНЕРКА, а как у Вас отмечена в шаблоне таблица, в которую переносятся платежи? Я изменил шаблон, нарисовал такую-же таблицу в шаблоне и программа ее не видит, вставляет платежи в первую по тексту шаблона таблицу.
4 фев 19, 14:38    [21801319]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4403
wladimirrr
вставляет платежи в первую по тексту шаблона таблицу.

исправьте на свой номер --я конечно больше ориентируюсь на тег (tab1), чтобы не зависеть от номера таблицы

у меня здесь стоит 1(единичка)
doc.tables(1).Select
......
doc.tables(1).....
doc.tables(1)....
в реалии я ищу условное значение ячейки, таблицы могуб быть даже не по порядку

для регулярных таблиц(без объединенных ячеек) --проблем нет
если есть объединения(хотя бы и в шапке ) --есть усложнения
4 фев 19, 14:46    [21801331]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
ПЕНСИОНЕРКА
wladimirrr
вставляет платежи в первую по тексту шаблона таблицу.

исправьте на свой номер --я конечно больше ориентируюсь на тег (tab1), чтобы не зависеть от номера таблицы

у меня здесь стоит 1(единичка)
doc.tables(1).Select
......
doc.tables(1).....
doc.tables(1)....
в реалии я ищу условное значение ячейки, таблицы могуб быть даже не по порядку

для регулярных таблиц(без объединенных ячеек) --проблем нет
если есть объединения(хотя бы и в шапке ) --есть усложнения

А как узнать свой номер таблицы?
У меня в шаблоне 4 таблицы, из них вставлять нужно в 4-ю. Первые 3 таблицы, в т.ч. с объединенными ячейками используются для вставки отдельных полей контракта.
4 фев 19, 15:57    [21801408]     Ответить | Цитировать Сообщить модератору
 Re: Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.  [new]
wladimirrr
Member

Откуда: Калужская обл.
Сообщений: 224
ПЕНСИОНЕРКА, эмпирически вычислил, что надо просто поставить номер по порядку, т.е. 4. Правильно?
4 фев 19, 16:01    [21801411]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3      [все]
Все форумы / Microsoft Access Ответить