Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 22.12.2018
Сообщений: 42
1

Слияние с WORD базы данных ACCESS (изменение вида передачи данных)

22.05.2019, 10:09. Показов 2148. Ответов 31
Метки нет (Все метки)

Уважаемые знатоки! В VBA новичок, прошу помощи, очень надо.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2019, 10:09
Ответы с готовыми решениями:

Перенос данных из базы данных Access в Word
Имеем составную форму из который нужно заполнить данными документ ворд, путем нажатия на кнопку....

Создание базы данных, открытие из под одной базы данных MS Access
Здравствуйте. В общем, C# начал заниматься только вот и сразу была поставлена задача создать базу...

Экспорт данных из базы данных *.DB в Word через Table (DateSet)
Всем Hello! у меня проблема не могу выгрузить данные из DB через table много чего перепробовал но...

Слияние баз данных Access
Имеется две базы данных Access c одинаковой структурой и связями между таблицами (в каждой по три...

31
8110 / 5014 / 550
Регистрация: 27.03.2013
Сообщений: 17,936
22.05.2019, 10:13 2
Крутите колесиком мыши и в самом низу будет окошко - Похожие темы.
0
0 / 0 / 0
Регистрация: 22.12.2018
Сообщений: 42
22.05.2019, 10:17  [ТС] 3
Уважаемые знатоки! В VBA новичок, прошу помощи, очень надо.
Имеется код для слияния с БД:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub Document_Open()
 
    ActiveDocument.MailMerge.OpenDataSource Name:="C:\БАЗЫ ДАННЫХ\учеты.accdb", _
        ConfirmConversions:= _
        True, ReadOnly:=False, LinkToSource:=True, AddToRecentFiles:=False, _
        PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
        WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
        Connection:="QUERY ОТМЕНА  ЭКСПОРТ", SQLStatement:= _
        "SELECT * FROM [ОТМЕНА ЭКСПОРТ]", SQLStatement1:="", SubType:= _
        wdMergeSubTypeOther
                       
    With ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
        .Execute Pause:=False
    End With
При таком коде по умолчанию используется тип передачи данных OLE, мне данный вариант не подходит, т.к. есть вычисляемые поля в запросе, которые при данном типе передачи не экспортируются. Нужно чтобы передача данных происходила через DDE. Вручную когда меняю тип данных, все работает нормально, все поля экспортируются. Необходимо в данном коде как то прописать, чтобы использовался тип передачи DDE. думаю тут не сложно все, но т.к. я новичок, прошу помощи.
0
Модератор
Эксперт MS Access
10285 / 4197 / 681
Регистрация: 07.08.2010
Сообщений: 11,819
Записей в блоге: 4
22.05.2019, 10:30 4
посмотрите пример на не слияние
https://www.cyberforum.ru/blogs/110723/
0
0 / 0 / 0
Регистрация: 22.12.2018
Сообщений: 42
22.05.2019, 10:51  [ТС] 5
Спасибо, надо посмотреть, очень хороший вариант.

Добавлено через 6 минут
А все-таки через слияние есть какие-нибудь варианты экспортировать вычисляемые поля (изменить тип передачи данных)?
Вопрос еще актуален.
0
3992 / 1389 / 382
Регистрация: 07.08.2013
Сообщений: 3,484
22.05.2019, 11:14 6
а зачем менять тип передачи
вариант 1
пропишите правильно запрос с вычисляемыми полями
вот это место
Visual Basic
1
2
.......SQLStatement:= _
        "SELECT * FROM [ОТМЕНА ЭКСПОРТ]"......
вариант 2
слияние с вордом производить не со стороны ворда
а производить выгрузку со стороны акса
0
0 / 0 / 0
Регистрация: 22.12.2018
Сообщений: 42
22.05.2019, 12:14  [ТС] 7
А как правильно? Посторюсь – я новичок, поможете с тем, что тут нужно правильно написать?
0
Модератор
Эксперт MS Access
10285 / 4197 / 681
Регистрация: 07.08.2010
Сообщений: 11,819
Записей в блоге: 4
22.05.2019, 12:32 8
Цитата Сообщение от Максим645 Посмотреть сообщение
А как правильно? Посторюсь – я новичок, поможете с тем, что тут нужно правильно написать?
правильным могут быть оба варианта

вариант слияние идет со стороны ВОРДа, это в общем случае рассылка какого-то шаблона по списку получателей, программирование не требуется

остальные почти 15 вариантов --это заполнение закладок , которыми в шаблоне ВОРД помечены места вставки переменной информации, это различные акты, договора, накладные ....., почти всегда это написание кода, иногда простого(почти стандартного), иногда сложнее(когда есть таблицы, рисунки, закладки в коллонтитулах, надписях....
0
3992 / 1389 / 382
Регистрация: 07.08.2013
Сообщений: 3,484
22.05.2019, 12:41 9
в аксе еще есть мастер слияния (в том числе с ворд) там тоже ни чего сложного
0
0 / 0 / 0
Регистрация: 22.12.2018
Сообщений: 42
22.05.2019, 12:46  [ТС] 10
С закладками это вообще не вариант (не подходит)
Хотелось бы доработать вариант со слиянием со стороны ворда:
вариант 1
"пропишите правильно запрос с вычисляемыми полями
вот это место
Visual BasicВыделить код
1
2
.......SQLStatement:= _
"SELECT * FROM [ОТМЕНА ЭКСПОРТ]"......"
Вопрос как это самое место правильно прописать?
Можно ли используя тот код (с исправлениями и дополнениями, которые Вы предлагаете правильно прописать), который я вначале скинул, экспортировать данные, в том числе вычисляемые поля? Буду очень благодарен за помощь!
Если можно использовать тип передачи данных OLE и чтобы экспортировались вычисляемые поля, то меня такой вариант тоже устроит, вопрос только, что конкретно нужно и где дописать (исправить)?
0
Модератор
Эксперт MS Access
10285 / 4197 / 681
Регистрация: 07.08.2010
Сообщений: 11,819
Записей в блоге: 4
22.05.2019, 12:51 11
попробуйте запрос типа

select tovar, kol,cena,kol*cena as summa from tab1
и настройте слияние на этот запрос(не обязательно ведь таблица)
0
0 / 0 / 0
Регистрация: 22.12.2018
Сообщений: 42
22.05.2019, 12:55  [ТС] 12
Ничего сложного нет, только есть 2 проблемы:
- не экспортируются вычисляемые поля, т.к. используется тип передачи OLE по умолчанию;
- нужен код VBA, чтобы на кнопку повесить его (но если не экспортируются вычисляемые поля, то толку от такого кода нет)

Добавлено через 2 минуты
У меня слияние на запрос и сделано.
0
0 / 0 / 0
Регистрация: 22.12.2018
Сообщений: 42
22.05.2019, 12:59  [ТС] 13
shanemac51, у меня на запрос слияние сделано и вычисляемые поля так и не экспортируются....
Вариант с таки способом как в приложении в принципе подходит, но там, я так понимаю данные берутся из формы, мне нужно из запроса брать данные.
0
Вложения
Тип файла: zip word1810meta.zip (70.8 Кб, 4 просмотров)
3992 / 1389 / 382
Регистрация: 07.08.2013
Сообщений: 3,484
22.05.2019, 13:02 14
если данные берутся с формы
и вы обращаетесь к запросу (не к таблице) то должны вылетать сообщения с требованием ввести параметры
0
0 / 0 / 0
Регистрация: 22.12.2018
Сообщений: 42
22.05.2019, 13:25  [ТС] 15
snipe, нее, Вы не поняли,
в моей БД данные берутся из запроса (ошибок никаких не вылетает)
В БД которую я приобщил (данный способ экспорта в ВОРД рекомендовали выше) данные берутся толи из формы, толи из таблицы, я не совсем понял.
Если по другому нельзя экспортировать вычисляемые поля из запроса Базы данных, то меня предложенный вариант тоже устраивает. но Мне необходимо, чтобы данные подтягивались из запроса.

А по существу, можно ли предложенный мною код (скидывал в самом начале) переделать, чтобы вычисляемые поля экспортировались?

Добавлено через 10 минут
Visual Basic
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
Option Compare Database
Option Explicit
 
Function funOutputWord(strPathDot As String, strPathWord As String) As Boolean
On Error GoTo Err_
 
Dim DlgUser As Integer
    If Dir(strPathWord) <> "" Then
        DlgUser = MsgBox("Документ с таким именем ранее уже был создан. Заменить его?", vbYesNo, "admin")
        If DlgUser = vbNo Then
            Set app = CreateObject("Word.Application")
            With app
                .Visible = True
                .Documents.Open strPathWord
            End With
            Set app = Nothing
        Else
            GoTo nn
        End If
    Else
nn:
        Set app = New Word.Application
        app.Visible = True
        app.Documents.Add strPathDot
        
        With app.ActiveDocument
        .SaveAs strPathWord
            mrepl "Гражданин", Гражданин
            mrepl "Датарождения", ДатаРождения
            mrepl "АдресЖит", АдресЖит
            mrepl "СерияНомер", СерияНомер
            mrepl "Код", Код
            mrepl "Выдан", Выдан
            mrepl "Датавыдачи", Датавыдачи
            
        End With
        Set app = Nothing
    End If
    funOutputWord = True
Exit_:
    Exit Function
Err_:
    funOutputWord = False
    Err.Clear
    app.Quit
    Resume Exit_
End Function
 
Private Sub butExit_Click()
    DoCmd.Close
End Sub
 
Private Sub butWord_Click()
Dim strPathDot As String, strPathWord As String
    strPathDot = CurrentProject.Path & "\Dot\Данные заказчика2.dot"
    strPathWord = CurrentProject.Path & "\Word\ww" & Гражданин & Format(Now, "yyyy-mm-dd-hh-mm-ss") & ".doc"
    Call funOutputWord(strPathDot, strPathWord)
End Sub
Вот такой код есть, он берет данные из таблицы "Заказчик", как его переделать, чтобы он брал данные из запроса?
0
Модератор
Эксперт MS Access
10285 / 4197 / 681
Регистрация: 07.08.2010
Сообщений: 11,819
Записей в блоге: 4
22.05.2019, 14:09 16
Цитата Сообщение от Максим645 Посмотреть сообщение
А по существу, можно ли предложенный мною код (скидывал в самом начале) переделать, чтобы вычисляемые поля экспортировались?
вы уже уморили меня
--где выложен пример вашей базы
--где выложен ваш шаблон с полями слияния
0
0 / 0 / 0
Регистрация: 22.12.2018
Сообщений: 42
22.05.2019, 15:21  [ТС] 17
Прилагаю пример: при экспорте поле "выражение 2" не экспортируется, остальные поля нормально экспортируются. В чет проблема?
0
Вложения
Тип файла: zip Новая папка (2).zip (142.3 Кб, 5 просмотров)
Модератор
Эксперт MS Access
10285 / 4197 / 681
Регистрация: 07.08.2010
Сообщений: 11,819
Записей в блоге: 4
22.05.2019, 17:27 18
что то я сомневаюсь, что у запроса правильный синтаксис( у параметра Switch)
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT m.[№ МАТЕР-ЛА АРХ],
 m.[КУСП НОМЕР],
 m.[ДАТА  РЕГИСТРАЦИИ В КУСП],
 m.СРОК,
 R.Код,
 R.[Код учет материалов],
 R.[ДАТА ПОСТУПЛЕНИЯ ПОСТАНОВЛЕНИЯ],
 R.СОТРУДНИК,
 R.[ДАТА ПРИНЯТОГО РЕШЕНИЯ],
 [ДАТА  РЕГИСТРАЦИИ В КУСП]+5 AS КОНТРОЛЬ,
 [ДАТА ПОСТУПЛЕНИЯ ПОСТАНОВЛЕНИЯ]+10 AS Выражение1,
 
 Switch([СОТРУДНИК] LIKE "*Иванов*","Иванович",
   [СОТРУДНИК] LIKE "*Петров*","Петрович") AS Выражение2
 
FROM [УЧЕТ МАТЕРИАЛОВ] AS m
 LEFT JOIN [УЧЕТ РЕШЕНИЙ ПО МАТЕРИАЛАМ] AS R
 ON m.Код = R.[Код учет материалов];
Добавлено через 45 минут
лучше ответьте, что вы хотите получить из двух записей(Иванов и Петров)
--две строки на 1-й странице(текстом)
--две строки на 1-й странице(таблицей)
--по одной строке на странице(текстом)
--есть ли другие дополнительные строки

если у вас есть код в аксесс, то зачем еще нужен код и в ворде
причем открывается и портится документ у вас DOCM, а не шаблон
0
0 / 0 / 0
Регистрация: 22.12.2018
Сообщений: 42
22.05.2019, 18:34  [ТС] 19
Запись Иванов и петров это пример. Смысл вычисляемого поля в том, чтобы преобразовать информацию. Например в поле введено Кировская область, мне нужно будет поле где будет только вид субъекта (область, край ит. Д.) и поле где будет только Кировская, Московская и т. Д.
В акцесс кода у меня нет, что нашёл, тем и пользуюсь... Если есть лучшие предложения по экспорту в ворд то с радостью их приму. Лучше на примере какой нибудь бд простенький.
0
Модератор
Эксперт MS Access
10285 / 4197 / 681
Регистрация: 07.08.2010
Сообщений: 11,819
Записей в блоге: 4
22.05.2019, 19:00 20
Цитата Сообщение от Максим645 Посмотреть сообщение
Лучше на примере какой нибудь бд простенький.
простенькая, но реалистичная --так задача лучше воспринимается
и вы не ответили на заданный вопрос --- какая выдача вам нужна(список или по-листово каждая строка)

выложите нормальный шаблон, того что надо, убрав излишние детали
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2019, 19:00

Изменение набора данных ADOQuery без изменения подключенной к нему базы данных
Проблема следующая Есть база данных, есть подключенный к ней ADOQuery, в котором ЧАСТЬ записей...

Экспорт данных MS Access - MS Word - проверка существующих данных
Доброго времени суток Уважаемые форумчане!!! Вновь обращаюсь за Вашей помощью! Вопрос: как при...

Какой формат базы данных DSN Access (атрибуты и типы данных)?
В настройках IIS можно выбирать формат журнала, один из форматов - это DSN Access, то есть события...

Не открывается база данных Access , пишет неразпознаваемый формат базы данных
Не открывается база данных Access , пишет неразпознаваемый формат базы данных,что делать


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.