powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Поля VS Закладки или "Когда есть выбор, тогда и глаза разбегаются...."
8 сообщений из 8, страница 1 из 1
Поля VS Закладки или "Когда есть выбор, тогда и глаза разбегаются...."
    #33396037
MikeZa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток ))

задача стандартная:

Имеем Бланк, в нужные места надо будет програмно из базы поместить инфу...

База будет на МС СКЛ 2000, софтина на Builder

вариантов как обычно:
1) слияние
2) закладки
3) тестовые поля (которые серенькие, и берутся с панели формы)

1 вариант не очень хочется: дополнительный конект из ворда с СКЛ, да и полей много... половину вычислять легче програмно чем через запросы...

а вот 2 и 3... по сути одно и тоже...
-програмно пихать данные одинаково просто
-оба видны в макете,
-оба достаточно просто добавлять
-по закладкам удобнее ориентироваться при разработке бланка... но поля сморятся как то нагляднее


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

Мне Поля больше нравятся - но пока чисто субьективно))

Задававшиеся подобным вопросом, поделитесь мыслями

скажем критерии скорость или еще что нибудь)))
...
Рейтинг: 0 / 0
Поля VS Закладки или "Когда есть выбор, тогда и глаза разбегаются...."
    #33396139
Я бы сделал с закладками.
...
Рейтинг: 0 / 0
Поля VS Закладки или "Когда есть выбор, тогда и глаза разбегаются...."
    #33396510
павывп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По поводу полей: пробовал, не получилось программно записать значение в поле. С закладками все получилось элементарно. Каков синтаксис записи в поле?
...
Рейтинг: 0 / 0
Поля VS Закладки или "Когда есть выбор, тогда и глаза разбегаются...."
    #33396714
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub AddTextToTextBox()
    Dim txtFormField As FormField
    
    Set txtFormField = ActiveDocument.FormFields.Add( _
      Range:=ActiveDocument.Range(Start:= 0 , End:= 0 ), _
      Type:=wdFieldFormTextInput)
    
    txtFormField.Result = "Test"
End Sub

Прикол в том, что это поле тоже считается закладкой.
...
Рейтинг: 0 / 0
Поля VS Закладки или "Когда есть выбор, тогда и глаза разбегаются...."
    #33396996
павывп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пользователь2
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub AddTextToTextBox()
    Dim txtFormField As FormField
    
    Set txtFormField = ActiveDocument.FormFields.Add( _
      Range:=ActiveDocument.Range(Start:= 0 , End:= 0 ), _
      Type:=wdFieldFormTextInput)
    
    txtFormField.Result = "Test"
End Sub

Прикол в том, что это поле тоже считается закладкой.

Все то ты знаешь! :-)
Сработало. Вставил
ActiveDocument.Protect Password:="", NoReset:=False, Type:= _
wdAllowOnlyFormFields для перед txtFormField.Result = "Test". - Тоже сработало. Спасбибо!
...
Рейтинг: 0 / 0
Поля VS Закладки или "Когда есть выбор, тогда и глаза разбегаются...."
    #33397957
MikeZa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторtxtFormField.Result = "Test"

ну да.. оно самое....

авторActiveDocument.FormFields.Add
мне даже этого делать не придется - макет все равно деалается вручную

так все же) преимущества есть какие ?!
...
Рейтинг: 0 / 0
Поля VS Закладки или "Когда есть выбор, тогда и глаза разбегаются...."
    #33398858
ALEX_DV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Текстовое поле(FormField) - понятно, причем здесь закладки.
По существу:
1. Слияние (MegreField) - хрень какая.

2. FormField - это уже ближе. Плюсы - удобно использовать в документе - наглядно, можно устанавливать текст по-умолчанию. Шаблон может разработать не очень опытный пользователь. Минусы - нельзя использовать в колонтитулах (а иногда надо); ограничение на длину строки-255 символов; некорректно воспринимается символ Chr(10). Решение ограничений: для колонтитулов можно использовать сбособы, описанные ниже; ограничение на длину строки - все просто - проверяем длину строки, если больше 255 или если строка содержит символ Chr(10), то заменяем САМО ПОЛЕ на текст, т.е. не присваем полю значение, а на место поля вставляем нужный текст.

3. DocVariable - Переменные документа. Плюсы - создавать шаблон просто, как и с FormField, но переменные выглядят в документе не очень наглядно, хотя если включать режим - <коды полей>, то всё понятно. Нет ограничения на длину строки.

4. Пишешь свой скромный алгоритм по заполнению определенных масок в документе. Например: шаблон документа содержит всякий статический тест и тект вида [текст] или {тест} или $текст$ (на свой вкус и цвет). В программе, которая работает с документом ищем соответсвующий текст - [...] и заменяем его нужным нам тектом. Таким способом можно помещать (и искать) идентификаторы [...] где угодно - докумет, колонтитул, фигура с текстом (shape), хоть в модуле VB.

Как ПЕРЕДАТЬ данные в документ:
1. Общаться с документом можно либо из сторонней программы (delphi/builder/vc...) с использованием стандартных компонентов, ч/з OLE...
2. Программно формируем файл (txt, dbf) определенного формата с нужными нам данными. Документ(шаблон) содержит макрос, который откроет этот файл, разберёт его и перетащит данные в документ (в поля, переменные, идентификаторы...).
3. Из документа(шаблона) стучимся в базу данных. Можно использовать ADO, DAO, RDO (odbc, jet). И с помощью парочки SELECTов выбираем нужные данные и распихиваем их в нужные места.

Я использовал следующие способы (пока работает):
1. Программа формирует dbf-файл с данными из БД. Формат файла:
-Ind byte идентификатор
-Name Char(255) имя поля
-Value Char(255) значение поля
-Comment Char(100) комментарий
Ind нужен, если хотим передать значение длиной больше 255 символов, тогда в файле будет несколько строк с одинаковым полем Name и с разными Ind, по которым и соберём окончательную строку.
Программа запускает word-документ, который в свою очередь знает где лежит файл с данными. Документ (шаблон), содержит макрос, который при открытии, начинает работать с dbf-файлом (DAO/odbc) и заполняет поля. Достаточно просто, быстро и надёжно.

2. Программа через OLE работает с документом. Программа собирает данные из БД и с формы (от пользователя), создает объект Word, открывает файл(шаблон) и начинает заполнять поля (formField, DocVariables, [...]).
И ВСЁ.

Тоже можно делать в Excel'e, если у нас в основном таблицы. Хотя небольшие таблицы можно пихать и в Word.

Cristal и Oracle Reports отдыхают в тёплой ванне. (Если конечно у нас не 10 различных таблиц, 15 представлений и 20 запросов).
...
Рейтинг: 0 / 0
Поля VS Закладки или "Когда есть выбор, тогда и глаза разбегаются...."
    #33400659
MikeZa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Поля VS Закладки или "Когда есть выбор, тогда и глаза разбегаются...."
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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