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

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

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

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

Откуда: Жуковский
Сообщений: 645
wladimirrr,

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

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

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

Не хочет...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

не проходит

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

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

Откуда:
Сообщений: 106
Оказывается 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

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

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

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

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

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

Откуда: Калужская обл.
Сообщений: 323
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

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

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

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

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

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

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

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

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

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

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

Откуда: Владимирская обл
Сообщений: 4609
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

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

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

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

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

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

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

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

Откуда: Владимирская обл
Сообщений: 4609
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]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить