Word при открытии данного документа будет выполнена следующая команда sql

Обновлено: 07.07.2024

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

Сделал док слияния в ворде, если нажать кнопку "слить", то все сработает. А надо, чтобы при открытии дока слияния тут же автоматом происходило слияние. Можно сделать через макрос, но это неудобно - не везде выставлен уровень безопасности, позволяющий запуск макросов. А вот какую опцию надо выставить, чтобы сливалось автоматом при открытии дока слияния?

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

Без макросов никак.
А что, сложно щелкнуть по одной кнопке? ;)

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

Смотря что сливаете и как. Что у Вас является источником данных? Если например использовать внешний источник, такой как листы Excel, то гарантированно при открытии вы будет получать то, о чем говорите.

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

Да? Вы сами то хоть пробовали так делать? ;)
При открытии документа Word ничего автоматически не сливается. Все равно нужно щелкать по кнопке Слияние в новый документ.
И не важно, что является источником данных.
И еще, что в Вашем понимании "Внешний источник данных"? Как может источник быть НЕ внешним? Поясните плиз.

PS: при открытии документа слияния выдается диалоговое окно с вопросом о разрешении подключить источник данных. Но и только. Само слияние при этом не происходит.

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

М-да, русский язык многозначен. Напоминает анекдот о том как программист в магазин ходил Я что-то говорил за "невнешний" источник? Странно. Я лишь посоветовал использовать в качестве источника листы Excel (для удобства), можно использовать и др. источники. 3 шаг слияния.

Если Вы имеете в виду диалог о поиске источника данных, значит у вас не подключен источник в "Свойствах связи с данными".

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

Все у меня включено.
При открытии документа слияния, по новой политике MS выдается запрос о подключении к источнику данных (это как раз тот запрос SQL о котором Вы пишите) - разрешать его или нет. Выбирать (искать) файл Word не просит, если он остался лежать на том же месте.
Давайте тогда уточнять: какая версия Word? У меня 2003, и в ней процесс открытия документа слияния немного изменен.

Запрос на выполнение команды SQL выдается, но это еще НЕ результаты слияния.
Результат слияния (это имел ввиду автор), это когда получается много страничек, столько - сколько записей в базе.
И если у Вас эти много страничек получаются просто при открытии основного файла слияния, то это меня удивляет.

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

В смысле много страничек?
У меня всего одна страница - на ней в таблице отображаются данные из 9 записей листа Excel. Т.е. те 9 из около 300, на которых я остался в прошлый раз перед закрытием документа (точнее в прошлый раз сохранения). Чтобы перейти к другим записям, естественно нужен Поиск (в Слиянии). Чтобы печатать документ, не нужно больше ничего.

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

ок. Проблемы терминологии.
Давайте с начала.
Есть понятие основного документа слияния (бланка документа) и документа с результатами слияния.
Основной документ слияния, это тот, в котором вставлены поля слияния, тот с которым мы работали в мастере слияния. В этом документе, если включен редим просмотра данных (но не полей), то отображается подставленная текущая запись из базы. Конечно можно печатать этот документ, но это еще пока не само слияние. Это предварительный просмотр, в отличие от того, что описывается ниже.

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

AsIs, я кажется только теперь понимаю, о чем идет речь. Судя по всему, я невнимательно прочел вопрос или не понял автора. Но тут действительно есть некоторая неоднозначность между "слить" и "слить в новый документ"

В таком случае, если автора вопроса не устраивает возможность нажать на Панели слияния кнопку Слияние в новый документ, то для автоматизации необходим макрос.

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

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

  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"

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

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

Сейчас мы с Вами рассмотрим пример реализации того, как можно выполнить слияние данных Word с данными Microsoft SQL Server, при этом данный процесс будет автоматизирован средствами VBA Access 2003.

Слияние Word с SQL Server

Многие, наверное, уже умеют осуществлять слияние документов Word, например, с источником данных Excel или с тем же SQL сервером, но не все знают, как можно автоматизировать данный процесс или внедрить его в какую-нибудь программу.

Однажды у меня встала задача автоматизировать слияние некого шаблона Word с данными расположенными на SQL сервере, при этом все это необходимо было внедрить в программу, разработанную в Access 2003 (ADP проект). И сегодня я покажу пример решения данной задачи.

Исходные данные

И для начала давайте разберем исходные данные, т.е. что мы имеем.

Итак, в качестве клиента, как я уже сказал, у нас будет выступать ADP проект Access 2003. В качестве источника данных для примера будет выступать SQL Server 2012 Express. На компьютере установлен Microsoft Office 2013 (и Access 2003).

Создадим на сервере тестовую таблицу и заполним ее данными (допустим в базе данных Test). Для этого Вы можете запустить следующую SQL инструкцию.

Заметка! Начинающим программистам рекомендую почитать книгу «SQL код», с помощью которой Вы научитесь работать с языком SQL во всех популярных системах управления базами данных.

Скриншот 1

Заметка! Если Вы не знаете, что делает вышеуказанная инструкция, рекомендую посмотреть мой видеокурс «T-SQL. Путь программиста от новичка к профессионалу. Уровень 1 – Новичок», который предназначен для начинающих. В нем подробно рассмотрены все базовые конструкции языка SQL, включая все вышеперечисленные.

Создаем файл подключения к источнику данных MS SQL Server

Теперь давайте создадим файл подключения (ODC) к нашему источнику данных. Данный файл будет выступать своего рода «шаблоном файла подключения», так как впоследствии мы можем, и будем переопределять и базу данных и сам SQL запрос.

Переходим на вкладку рассылки и в меню «Выбрать получателей» выбираем «Использовать существующий список».

Скриншот 2

Затем в окне выбора источника данных нажимаем кнопку «Создать».

Скриншот 3

Далее выбираем тип источника данных, т.е. Microsoft SQL Server. Жмем «Далее».

Скриншот 4

Потом вводим адрес сервера и нажимаем «Далее».

Скриншот 5

Затем выбираем базу данных и таблицу для подключения, еще раз напомню, это всего лишь шаблон, все эти параметры мы будем переопределять, жмем «Далее».

Скриншот 6

И в заключение вводим понятное название файла подключения, а также мы можем сразу его сохранить в нужный нам каталог путем кнопки «Обзор», по умолчанию он сохраняется в «C:\Users\Имя_Пользователя\Documents\Мои источники данных». Нажимаем «Готово».

Скриншот 7

Все, файл создан, Word можем закрыть без сохранения.

Создаем шаблон Word для слияния

Теперь давайте подготовим шаблон Word, т.е. это тот документ, в который мы будем подставлять данные из базы данных SQL сервера.

Вся подготовка сводится к тому, что нам необходимо вставить поля слияния там, где это нам нужно. Это делается следующим образом. Вкладка «Вставка -> Экспресс-блоки -> Поле».

Скриншот 8

Ищем поле MERGEFIELD и вводим название поля, которое будет соответствовать полю в источнике данных (в моем случае это ProductName и Price). Жмем «ОК».

Скриншот 9

Так как у меня это тестовый шаблон в нем текста практически не будет, и выводить я буду всего два поля, у Вас скорей всего будет много текста и много полей слияния.

Скриншот 10

Код VBA Access 2003 для слияния документа Word с источником данных MS SQL Server

Осталось написать код VBA, который будет осуществлять слияние. Для примера давайте добавим на форму кнопку StartMerge и поле Price для фильтрации данных. Затем в редакторе Visual Basic напишем процедуру для слияния, допустим с названием MergeWord, и в обработчик события кнопки StartMerge (нажатие кнопки) вставляем код вызова этой процедуры. Весь код будет выглядеть следующим образом (я его прокомментировал). Сразу поясню, что шаблон Word и файл ODC у меня лежат в каталоге D:\Test\.

Сохраняем и проверяем работу.

После нажатия на кнопку (StartMerge) запустится Word, в котором уже все данные заполнены и документов будет столько, сколько строк в источнике.

Скриншот 11

Как видим, все работает. На этом у меня все, надеюсь, материал был полезен. Пока!

Читайте также: