Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Слияние Access в Word, Выводится только одна запись 
:(
    Опции темы
Artmishin
Дата 17.8.2010, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



Необходимо, при нажатии на кнопку передать все записи (по условию фильтра) из Access в Word по готовому шаблону /dot/шаблон.dot при этом сколько записей столько и страниц в документе.
Написал в VBA следующий код, отталкиваясь от примера в Интернете.
Код

Function funOutputWord(strPathDot As String) As Boolean
Dim app As Object

Set app = CreateObject("Word.Application")
        app.Visible = True
        app.Documents.Add strPathDot
        
            With app.ActiveDocument
            .Bookmarks.Item("ФИО").Range.Text = Nz(Me.ФИО)
            .Bookmarks.Item("Улица").Range.Text = Nz(Me.Улица)
            .Bookmarks.Item("Дом").Range.Text = Nz(Me.Дом)
            .Bookmarks.Item("Квартира").Range.Text = Nz(Me.Квартира)
            End With

        Set app = Nothing
        funOutputWord = True
End Function

Затем код для кнопки на событие Click
Код

Dim strPathDot As String
    strPathDot = CurrentProject.Path & "\dot\шаблон.dot"
    Call funOutputWord(strPathDot)

Проблема в том что выводится только одна текущая запись. Что делаю не так подскажите, пожалуйста.
PM MAIL   Вверх
bopoha
Дата 17.8.2010, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



А где цикл по записям?
PM MAIL WWW ICQ Skype GTalk   Вверх
Artmishin
Дата 18.8.2010, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



Цитата(bopoha @  17.8.2010,  21:56 Найти цитируемый пост)
А где цикл по записям? 

Точно! А слона я и не увидел!
После правки выдает ошибку 5941 "Запрашиваемый номер семейства не существует"
Код

Function funOutputWord(strPathDot As String) As Boolean
Dim app As Object

Set app = CreateObject("Word.Application")
        app.Visible = True
        app.Documents.Add strPathDot
        
        Do While Me.Активация = True
            With app.ActiveDocument
            .Bookmarks.Item("ФИО").Range.Text = Nz(Me.ФИО)
            .Bookmarks.Item("Улица").Range.Text = Nz(Me.Улица)
            .Bookmarks.Item("Дом").Range.Text = Nz(Me.Дом)
            .Bookmarks.Item("Квартира").Range.Text = Nz(Me.Квартира)
            End With
        Loop
        Set app = Nothing
        funOutputWord = True
End Function


Это сообщение отредактировал(а) Artmishin - 18.8.2010, 06:40
PM MAIL   Вверх
bopoha
Дата 23.8.2010, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Artmishin, а переходить по записям кто будет?

Лучше делать так:
Код

dim rst as DAO.Recordset


set rst = me.recordsetclone
'-- rst.bookmark = me.bookmark '-- если нужно начать с текущей записи

do while not rst.EOF
   '-- берем данные из rst
   rst.MoveNext
Loop

PM MAIL WWW ICQ Skype GTalk   Вверх
Artmishin
Дата 28.8.2010, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



Решил проблему следующим кодом
Код

Public Sub otUved5000()

'Код для Word
Dim pstrAppPath As String
Dim objWord5000 As Word.Application

pstrAppPath = CurrentProject.Path

On Error Resume Next
                
Set objWord5000 = GetObject(, "Word.Application")
    
If objWord5000 Is Nothing Then
    Set objWord5000 = New Word.Application
    If objWord5000 Is Nothing Then
        MsgBox "MS Word не установлен на Вашем компьютере!"
    End If
End If
    
objWord5000.Documents.Add (pstrAppPath & "\Dot\Шаблон.dot")
    
objWord5000.ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
    objWord5000.ActiveDocument.MailMerge.OpenDataSource Name:= _
        pstrAppPath & "\DB.mdb", ConfirmConversions:=False, _
        ReadOnly:=True, LinkToSource:=True, AddToRecentFiles:=False, _
        PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
        WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
        Connection:="QUERY Main_group", SQLStatement:= _
        "SELECT * FROM Main_group WHERE Активация = True", SQLStatement1:=""

    With objWord5000.ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .Execute
    End With
    
objWord5000.Visible = True
    
Set objWord5000 = Nothing


Добавлено через 7 минут и 14 секунд
Теперь проблема в следующем, имеется таблица с двумя логическими полями "Поле1" и "Поле2". Выбор необходимых записей происходит по условию Поле1 = True. Необходимо после выполнения слияния с Word, сначала приравнять значения этих полей, а затем очистить Поле1. Написал код, но никак не пойму куда влепить условие отбора?
Код

Dim rst5000 As Recordset
Dim dbs5000 As Database

Set dbs5000 = OpenDatabase("DB.mdb")
Set rst5000 = dbs5000.OpenRecordset("Main_group", dbOpenForwardOnly)

    Do While Not rst5000.EOF
        Me.Поле2 = Me.Поле1
        Me.Поле1 = False
        
        rst5000.MoveNext
    Loop



PM MAIL   Вверх
bopoha
Дата 30.8.2010, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Цитата(Artmishin @  28.8.2010,  11:37 Найти цитируемый пост)
Написал код, но никак не пойму куда влепить условие отбора?

Не понятно что хотите сделать...
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.2006 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.