Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / и еще раз Word :))) / 16 сообщений из 16, страница 1 из 1
11.09.2003, 11:13
    #32262074
Svetlana_613
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
и еще раз Word :)))
Люди добрые!!!
Можно ли из Access открыть сразу документ с результатами слияния без открытия основного документа?
Пользователям ну не нравится много кнопок нажимать, они путаются или :(((
...
Рейтинг: 0 / 0
11.09.2003, 15:53
    #32262635
Svetlana_613
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
и еще раз Word :)))
Да уж!!!
Либо вопрос опять глупый задала либо у всех пользователи - "опытные"
И еще тогда на засыпку (меня, наверное ) вопросик
почему иногда (но далеко не всегда!!!) при слияниии способом с использованием ODBC и представления не возможно открыть источник данных, а с использованием DDE без проблем.
не могу выловить причину :(((
...
Рейтинг: 0 / 0
11.09.2003, 15:58
    #32262649
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
и еще раз Word :)))
Либо вопрос опять глупый задала либо у всех пользователи - "опытные"
Либо мало кто слияниями занимался.
...
Рейтинг: 0 / 0
11.09.2003, 16:02
    #32262658
и еще раз Word :)))
Я занимался созданием отчетов через MSWord напрямую из VBA.
Если хочешь - могу дать подпрограмму для него.
...
Рейтинг: 0 / 0
11.09.2003, 16:07
    #32262674
Svetlana_613
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
и еще раз Word :)))
Хочешь!!!!
Спасибо огромное, хоть от кого-то доброе слово увидела, ДАВАЙ!!!
...
Рейтинг: 0 / 0
11.09.2003, 16:37
    #32262727
и еще раз Word :)))
Вот функция:

Код: plaintext
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.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
Function WordOutput(FilePath As String, _
                    strSQL As String, _
                    strWhere As String, _
                    Mode As Byte) As String
' Подпрограмма предназначена для экспорта информации из запроса
' в отчет. Условие одно, запрос должен содержать ровно одну запись
' Все остальные варианты отвергаются
' Параметры: FilePath - путь к файлу шаблона
'            strSQL - имя внешнего запроса или сам SQL запрос
'            strWhere - Параметры для выборки
'            Mode - Вывода результатов:
'                    1  - предварительный просмотр
'                   2 - печать
' Выход: результат операции или при сохранении на диске - имя файла
'
    Dim wrdObj As Object
    Dim rst As New ADODB.Recordset
    Dim fld As ADODB.Field
    Dim Source As String
    Dim Pole As String
    Dim i As Integer
    If Right(FilePath, 5) = "\.dot" Then Exit Function
    On Error Resume Next
    ' Проверка на присутствие данных
    If Len(Trim(FilePath)) =  0  Then Exit Function
    If Len(Trim(strSQL)) =  0  Then Exit Function
    ' Открытие объекта - Microsoft Word (любой версии)
    Set wrdObj = GetObject(, "Word.Application")
    If Err.Number <> 0 Then
        Err.Clear
        Set wrdObj = CreateObject("Word.Application")
    End If
    wrdObj.Visible = False
    ' Открытие шаблона документа и проверка на его присутствие
    wrdObj.Documents.Add FilePath
    If Err.Number <>  0  Then
        Err.Clear
        MsgBox  "Отсутствует файл шаблона документа,"  & vbCrLf & _
               FilePath, vbCritical + vbOKOnly,  "Ошибка" 
        wrdObj.Quit
        Set wrdObj = Nothing
        Exit Function
    End If
    ' Открытие данных и проверка на их присутствие
    If Len(Trim(strWhere)) = 0 Then
        rst.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    Else
        rst.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
        rst.Filter = strWhere
        If Err.Number <> 0 Then
            Err.Clear
            MsgBox "Неправильно задана выборка", vbCritical + vbOKOnly, "Ошибка"
            wrdObj.Quit
            Set wrdObj = Nothing
            Exit Function
        End If
        If rst.RecordCount Then
            rst.MoveLast
        Else
            MsgBox "Ни одна запись не удовлетворяет условию выборки", _
                   vbCritical + vbOKOnly, "Ошибка"
            wrdObj.Quit
            Set wrdObj = Nothing
            Exit Function
        End If
    End If
    ' Перебор полей (с предварительной проверкой на присутствие меток в док-те)
    With wrdObj.ActiveDocument.Bookmarks
        i =  1 
        Do Until .Count =  0 
            Pole = Trim(.Item(i).Name)
            ' Заполнение полей, если они присутствуют в запросе
            .Item(i).Range.Text = CStr(rst.Fields(Trim(Pole)).Value) & ""
            ' Заметает следы своей деятельности в документе
            .Item(i).Delete
        Loop
    End With
    ' Обработка "Спецзнаков"
    For Each fld In rst.Fields
        With wrdObj.ActiveWindow.Selection.Find
            .Text = "[" & fld.Name & "]"
            .Replacement.Text = ""
            .Forward = True
            .Wrap = 1
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        If wrdObj.ActiveWindow.Selection.Find.Execute Then
            wrdObj.ActiveWindow.Application.Keyboard (1049)
            If Len(Str(rst.Fields(fld.Name).Value)) > 0 Then
                wrdObj.ActiveWindow.Selection.TypeText Text:=rst.Fields(fld.Name).Value & ""
            Else
                wrdObj.ActiveWindow.Selection.TypeText Text:=" "
            End If
        End If
        With wrdObj.ActiveWindow.Selection.Find
            .Text = "[" & fld.Name & "]"
            .Replacement.Text = rst.Fields(fld.Name).Value & ""
            .Forward = True
            .Wrap = 1
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        wrdObj.ActiveWindow.Selection.Find.Execute Replace:=2 'wdReplaceAll
    Next
    rst.Close
    Select Case Nz(Mode,  1 )
        Case  1 
            ' Предварительный просмотр
            wrdObj.Visible = True
            wrdObj.SetFocus
        Case 2
            ' Печать на текущий принтер
            wrdObj.ActiveDocument.PrintOut
            wrdObj.ActiveDocument.Close ( 0 )
            MsgBox  "Печать закончена" , vbInformation + vbOKOnly
    End Select
    Set rst = Nothing
    Set wrdObj = Nothing
End Function


Теперь как ей пользоваться:
1. Создаешь запрос, из которого будут выводиться данные
2. Создаешь шаблон в программе Microsoft Word
Метки, куда будут вставляться данные бывают двух типов:
a. Закладки (с уникальными именами, соответствующими полям запроса)
Недостаток - конкретное поле из запроса можно вставить только один раз
б. Метки (пример: [Familiya], [Imya], [BirthDay])
Недостаток - возможны искажения вставки значений полей объемом более 4 кбайт

P.S.: Никаких библиотек дополнительно подключать не надо. Функция работает с данными через ADO. Функция взята из рабочего проекта. Приношу извинения за возможные неоптимальные решения некоторых возможностей функции.
...
Рейтинг: 0 / 0
11.09.2003, 17:30
    #32262787
Svetlana_613
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
и еще раз Word :)))
ОК!!!
Пошла пользоваться...
ОООгромное спасибо!!!!
...
Рейтинг: 0 / 0
11.09.2003, 18:52
    #32262883
Svetlana_613
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
и еще раз Word :)))
Не, поспешила :(((
во-первых у меня гораздо больше одной записи, более того, они подчиненные, т.е. под одним заголовком несколько, да и самих заголовков не один :(((
или я чет не поняла? :(((
...
Рейтинг: 0 / 0
11.09.2003, 18:57
    #32262889
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
и еще раз Word :)))
повторюсь
word_lib2000.mdb
http://msa.polarcom.ru/downloads.htm
посмотри должна подойти
...
Рейтинг: 0 / 0
11.09.2003, 19:14
    #32262905
Alex_Juice
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
и еще раз Word :)))
http://msa.polarcom.ru/downloads.htm
А там разве есть возможности работать с подчиненными?
...
Рейтинг: 0 / 0
11.09.2003, 19:20
    #32262909
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
и еще раз Word :)))
там просто строится документ ворда.
с табличками...
и такого понятия как подчиненный нет.
в принципе "подчиненный " и не надо .
последовательное построенние документа ...
есть плюсы есть минусы...
можно совместить вариант с шаблоном и с построением - это кому как нравится.
...
Рейтинг: 0 / 0
11.09.2003, 19:33
    #32262918
Alex_Juice
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
и еще раз Word :)))
там просто строится документ ворда.
с табличками...
С одной табличкой...
Кстати, автора я знаю - меня взяли на его место на нынешней работе...
В его произведениях обычно трудно разобраться :) (впрочем, у каждого свои тараканы)
Но лично я обычно делаю по-другому: сначала вручную оформляю нужный шаблон (если нужно, с несколькими таблицами), потом ставлю закладки где нужно, а дальше процедурой ввожу текст (для таблиц есть своя, так что их можно в одном документе наставить сколько угодно - сначала переходишь на закладку в начале таблицы, затем заполняешь строки, а когда нужно - переходишь к другой таблице).
...
Рейтинг: 0 / 0
11.09.2003, 19:33
    #32262919
Alex_Juice
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
и еще раз Word :)))
там просто строится документ ворда.
с табличками...
С одной табличкой...
Кстати, автора я знаю - меня взяли на его место на нынешней работе...
В его произведениях обычно трудно разобраться :) (впрочем, у каждого свои тараканы)
Но лично я обычно делаю по-другому: сначала вручную оформляю нужный шаблон (если нужно, с несколькими таблицами), потом ставлю закладки где нужно, а дальше процедурой ввожу текст (для таблиц есть своя, так что их можно в одном документе наставить сколько угодно - сначала переходишь на закладку в начале таблицы, затем заполняешь строки, а когда нужно - переходишь к другой таблице).
...
Рейтинг: 0 / 0
11.09.2003, 19:59
    #32262935
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
и еще раз Word :)))
тесен мир...
вариантов построения "отчетов" в ворде хватает, нада только выбрать тот который пнравится. пусть не самый-самый . главное делать в нем то что требуется быстро и красиво.
...
Рейтинг: 0 / 0
11.09.2003, 20:29
    #32262952
Alex_Juice
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
и еще раз Word :)))
нада только выбрать
или самому написать
...
Рейтинг: 0 / 0
11.09.2003, 20:33
    #32262956
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
и еще раз Word :)))
выбираешь вариант (по шаблону или еще как)

и ручками, ручками...

профи выбирают особей противоположного пола, чтоб не ручками баловаться....
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / и еще раз Word :))) / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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