powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
54 сообщений из 54, показаны все 3 страниц
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768770
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую всех! Помогите решить задачу. Надо подготовить документ Ворд на основе шаблона. Не могу сделать перенос данных из "подформаПлатежи" в заранее нарисованную в шаблоне таблицу. Надо переносить "Номер_недели" из подформы в "Неделя" шаблона и "Платеж" из подформы в "Платеж" шаблона. Количество Платежей(недель) может быть разное, но не более 30. Таблица в шаблоне должна быть именно такая - 15строк + 15строк, в один столбец вертикально нельзя.
Выкладываю файлы бд и шаблона.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768771
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wladimirrr,
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768772
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
бд и шаблон
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768773
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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р.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768774
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wladimirrr,

обязательно ли платежи в 2 колонки --количество то платежей -- разное
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768775
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА, количество недель это параметр контракта. оно может быть от1-го до 30-ти. Платеж в конкретную неделю задается вручную при подготовке контракта. Пропускать платежи и недели нельзя.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768776
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКАwladimirrr,

обязательно ли платежи в 2 колонки --количество то платежей -- разное
в этом-то и засада. Нужно именно в 2 колонки заполнить платежами.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768778
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wladimirrrв этом-то и засада. Нужно именно в 2 колонки заполнить платежами.
завтра попробую подработать образец, сейчас уже поздно
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768779
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКАwladimirrrв этом-то и засада. Нужно именно в 2 колонки заполнить платежами.
завтра попробую подработать образец, сейчас уже поздно
Заранее благодарю!
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768886
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость

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


Используя запросы из таблицы t_RepQuery можно сделать и на закладках (наверное).
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768900
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Swa111, очень интересное решение! Хорошо работает. К сожалению, я не смогу им воспользоваться. Дело в том, что в реале, бд и шаблон Контракт намного объемнее и сложнее. Я специально сделал простой пример для форума. Использовать Ваш метод в моем проекте мне не позволит отсутствие глубоких знаний в программировании. Очень жаль! А Вам большое спасибо!
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768901
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Swa111, мне нужно решить эту задачу именно с использованием шаблона Ворд.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768905
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Swa111Используя запросы из таблицы t_RepQuery можно сделать и на закладках (наверное).

исправила тьму необъявленных переменных
открыла отчет для 1-й записи
перешла на 2-ю .....не работает
вернулась на 1-ю ...тоже не работает
не смогла запустить формирование для
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768909
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,

Да, не было возможности протестировать на других конфигурациях и настройках отличных от Win7 (32/64) + Office 2010 (32),
по поводу не объявленных переменных, возможно у меня аксес настроен так что все необъявленные переменные автоматически объявляются как variant.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768913
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Swa111необъявленные переменные автоматически объявляются как variant.
это не проблема
главное --когда присваивается необъявленной необъявленная же переменная
например а=в, причем в тоже не объявлена и не присвоена
причем таких мест в вашем коде как минимум 3-4
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768915
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА,

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

wladimirrr,

Разрешите использовать Вашу тестовую базу, для публикации в другом топике?
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768917
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Swa111ПЕНСИОНЕРКА,

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

wladimirrr,

Разрешите использовать Вашу тестовую базу, для публикации в другом топике?
Да, конечно.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768923
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Swa111,

строки с критическими ошибками помечены 6 апострофами(4 случая я пометила, но что-то пропустила)
просто дообъявления --3 апострофа
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768924
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wladimirrr,

забыла приложение
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768929
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wladimirrr,

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

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

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
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% на текущий Код_контракта
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768930
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКАwladimirrr,

забыла приложение
Не работает.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768936
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Swa111wladimirrr,

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

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


заменив %contract% на текущий Код_контракта
С запросом вроде разобрался. А как адаптировать код в примере 15188954 в моем случае. Где в этом коде происходит вставка таблицы из запроса?
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768938
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wladimirrrПЕНСИОНЕРКАwladimirrr,

забыла приложение
Не работает.
у меня тоже не работает --еще что-то не до-объявила
а в логику даже и не пыталась влезь
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768953
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wladimirrr,



Как то так (не проверял)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
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
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768959
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Swa111wladimirrr,


К себе нужно скопировать функцию CreateTableFromRecordset
Откуда ее скопировать? Где она есть?
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768960
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Swa111, в примере выше, нашел.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768962
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Swa111, функцию скопировал. Пока не хочет работать.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768970
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wladimirrr,

Где-нибудь вначале - Dim rst as Adodb.recordset добавьте....
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768971
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Serg197311wladimirrr,

Где-нибудь вначале - Dim rst as Adodb.recordset добавьте....
Не хочет...
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768977
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wladimirrr,

немного нечетко по столбцам, но остальное просто
--вместо закладок --замена(поэтому сделала дубль шаблона)
--одних и тех же замен в документе может быть любое количество
--если объединенных ячеек в таблице нет, то все линейно
--объединенные ячейки в шапке немного усложнят подход
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768980
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wladimirrrНе хочет... 
rst дважды объявляется - в первой и третьей строках, сначала DAO, потом ADO.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768982
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКАwladimirrr,

немного нечетко по столбцам, но остальное просто
--вместо закладок --замена(поэтому сделала дубль шаблона)
--одних и тех же замен в документе может быть любое количество
--если объединенных ячеек в таблице нет, то все линейно
--объединенные ячейки в шапке немного усложнят подход
Спасибо! Стараюсь разобраться в кодах.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768983
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__MichellewladimirrrНе хочет... 
rst дважды объявляется - в первой и третьей строках, сначала DAO, потом ADO.
Не хочет работать ни с DAO, ни с ADO.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768984
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wladimirrr__Michelleпропущено...

rst дважды объявляется - в первой и третьей строках, сначала DAO, потом ADO.
Не хочет работать ни с DAO, ни с ADO.
Зачем дважды-то объявлять?
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39768991
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle, это я понял). Пробовал объявлять как DAO, не работает, как ADO, тоже не работает.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39769009
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wladimirrr, set rst=new recordset - нужно удалить - это ошибочное действие.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39769010
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleckowladimirrr, set rst=new recordset - нужно удалить - это ошибочное действие.
не проходит
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39769012
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wladimirrr,
объявите DAO
Код: vbnet
1.
set rst=Currentdb.Openrecordset(strsql, dbOpenDynaset)
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39769061
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оказывается Round округляет не совсем по правилам математики. Замените код в запросе, а то если число платежей нечетное последний платеж выпадает

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



Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
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 или полностью программный метод.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39769088
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleckowladimirrr,
объявите DAO
Код: vbnet
1.
set rst=Currentdb.Openrecordset(strsql, dbOpenDynaset)


не хочет работать...
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39769098
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wladimirrrне хочет работать...
не пойму --с какой базой вы работаете
смотрели ли вы мой пример --он весьма наглядный(не выровняла только столбцы вчера)
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39769119
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Swa111Оказывается Round округляет не совсем по правилам математики. Замените код в запросе, а то если число платежей нечетное последний платеж выпадает

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



Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
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, нормальный вариант, работает хорошо! Единственно, как воткнуть денежный формат в таблицу для платежей? руб. или $.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39769120
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКАwladimirrrне хочет работать...
не пойму --с какой базой вы работаете
смотрели ли вы мой пример --он весьма наглядный(не выровняла только столбцы вчера)
Да, Ваш вариант я тестирую и он вполне рабочий. И параллельно я тестирую вариант от Swa111.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39769130
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wladimirrr,

Код: vbnet
1.
2.
3.
...
            " format(sum(nPayL), '### ##0.00 руб.') as [Платеж]," & vbCrLf & _
...
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39769157
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wladimirrrДа, Ваш вариант я тестирую и он вполне рабочий
поправила имя документа, деньги, выравнивание и строки
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39769194
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА, начал встраивать в реальную базу, что-то не срабатывает. Что это значит?
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39769198
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wladimirrr,

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

или в общем модуле
public strPathDot As String, strPathWord As String
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39769200
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКАwladimirrrДа, Ваш вариант я тестирую и он вполне рабочий
поправила имя документа, деньги, выравнивание и строки
Да, уже намного красивее таблица! А изменения в каких функциях,во все? А то, я уже начал встраивать коды в реальную базу.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39769202
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКАwladimirrr,

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

или в общем модуле
public strPathDot As String, strPathWord As String
Вроде все копировал из Вашего кода. Сейчас проверю.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39769203
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wladimirrr,
и я не люблю таких сокращений типов($), их легко потерять и получим вместо string -> variant

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

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

Public Function funOutputWord(strPathDot as string, strPathWord as string) As Boolean
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39769241
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА, а как у Вас отмечена в шаблоне таблица, в которую переносятся платежи? Я изменил шаблон, нарисовал такую-же таблицу в шаблоне и программа ее не видит, вставляет платежи в первую по тексту шаблона таблицу.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39769248
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wladimirrrвставляет платежи в первую по тексту шаблона таблицу.
исправьте на свой номер --я конечно больше ориентируюсь на тег (tab1), чтобы не зависеть от номера таблицы

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

для регулярных таблиц(без объединенных ячеек) --проблем нет
если есть объединения(хотя бы и в шапке ) --есть усложнения
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39769295
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКАwladimirrrвставляет платежи в первую по тексту шаблона таблицу.
исправьте на свой номер --я конечно больше ориентируюсь на тег (tab1), чтобы не зависеть от номера таблицы

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

для регулярных таблиц(без объединенных ячеек) --проблем нет
если есть объединения(хотя бы и в шапке ) --есть усложнения
А как узнать свой номер таблицы?
У меня в шаблоне 4 таблицы, из них вставлять нужно в 4-ю. Первые 3 таблицы, в т.ч. с объединенными ячейками используются для вставки отдельных полей контракта.
...
Рейтинг: 0 / 0
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #39769297
wladimirrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА, эмпирически вычислил, что надо просто поставить номер по порядку, т.е. 4. Правильно?
...
Рейтинг: 0 / 0
54 сообщений из 54, показаны все 3 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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