powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
25 сообщений из 54, страница 2 из 3
Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
    #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
25 сообщений из 54, страница 2 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Перенос данных из подчиненной формы в шаблон Ворд в заданном виде.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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