powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите с отчетом!
5 сообщений из 5, страница 1 из 1
Помогите с отчетом!
    #32071120
bella
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, как сделать, что бы отчет выдавался в Word на основе выбранных полей: на пример открываешь окно и ставишь галочки, какие поля нужно вывести отчет?
...
Рейтинг: 0 / 0
Помогите с отчетом!
    #32071159
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почитайте в MSDN про CreateObject("Word.Document") ...
Вам нужно создать через OLE Автоматизацию (ActiveX) объект MSWord и записывать в него все что нужно.
...
Рейтинг: 0 / 0
Помогите с отчетом!
    #32073146
WWW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно создать шаблон документа в WORD в нем каким-либо образом обозначить поле в которое необходимо вывести значение.Напрмер "девятками":
Заказчик: 99999
Исполнитель: 99999
Дата заключения договора: 99/99/9999

Затем выделяем например "девятки" около "Заказчик:" и заходим в меню "Вставка\Закладка".В открывшемся окошке присваиваем закладке какое-либо имя (я использую имя поля БД,например "Cust_code") и жмем "Добавить".Таким образом мы присваиваем любой нужной нам области документа имена и сохраняем все это в файле шаблона (с расширением dot,например "Prot.dot").Из VB6.0 заполняем эти закладки следующим образом:

Dim w As Object
Set w = CreateObject("Word.Application")
w.Documents.Add App.Path & "\Prot.dot"
With w.ActiveDocument.Bookmarks
.Item("Cust_code").Range.Text = "12345"
................ заполняем остальные закладки

End With
w.Visible=True
set w=Nothing

Вот и все!
...
Рейтинг: 0 / 0
Помогите с отчетом!
    #32277416
Strannik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая проблема: OLE контрол, в него помещается WORD document с помощью CreateEmbed. При закрытия формы делаю OLE_object.Close и все равно Word висит в запущенных процессах.

Может кто-то знает как это исправить ??
...
Рейтинг: 0 / 0
Помогите с отчетом!
    #32277421
Фотография ulis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 www - чуть только уточню твою идею:

Для пересылки данных из базы в ворд, когда вэбэшные отчеты меня не устраивают, я использую идею, описанную в q210271. Т.е. есть шаблон ворд-документа. В те места, в которые нужно вставить данные, помечаются как закладки с уникальными именами (по-другому и не получится). Ну а далее, в вэбэ открываешь документ и вставляешь в нужные места свои данные. Поскольку нет никакого интереса изучать модель ворда, с его помощью сначала формируем нужный макрос и потом, подправив вставляем в свое приложение. И вот тут как раз возникала похожая проблема, вроде бы документ закрываешь, а он (иногда) сидит в таскменеджере. При попытке вторичного открытия документа вылетала ошибка, точно не помню, но в мсдн она есть. В общем, в коде нужно использовать полные ссылки на объекты ворда, а не через "." Кроме того, ворд может не закрыться, если при переносе данных была какая-нибудь ошибка, например, не найдена закладка. Поэтому лучше не восстанавливать шаблон (закладки стираются), а просто его перезаписывать перед каждым переносом данных. После этих манипуляций еще не разу не возникало проблем. Ну а это кусок кода, где все это работает:

' Рутина формирования отчетного word-документа "Счет за оказанные услуги"
' Если intParan = 0 то просто открываем документ для просмотра, если равен 1,
' то сразу выводим на печать
' Перед началом формирования документа перезаписываем его
Private Function wdParaBill(intParan As Integer) As Boolean

'On Error GoTo Err_Wd

Dim wdСчет As New Word.Application ' переменная для word-отчета по параклинике
Dim rstBill As New ADODB.Recordset ' набор к отчетной таблице tbtОтчетПара
Dim dblSumm As Double ' сумма услуг
Dim strSumm As String ' строковое выражение суммы оказанных услуг


Dim fsoFile As New FileSystemObject
Dim strSourcePath As String ' расположение исходного файла
Dim strDestPath As String ' путь к перезаписываемому файлу
Dim strFileName As String ' имя перезаписываемого файла

strFileName = "wpara.doc"
strSourcePath = GetAppPath & "\EmptyDBF\" & strFileName
strDestPath = GetAppPath & "\" & strFileName

' Удаляем старый файл
If fsoFile.FileExists(strDestPath) Then
fsoFile.DeleteFile (strDestPath)
End If

' Копируем пустой документ на место удаленного
If fsoFile.FileExists(strSourcePath) Then
Call fsoFile.CopyFile(strSourcePath, strDestPath, True)
End If


rstBill.Open "SELECT * FROM tbtОтчетПараК", cnn
dblSumm = cnn.Execute("SELECT SUM(СуммаУслуг) AS Total From tbtОтчетПараК")("Total")

wdСчет.Visible = False
wdСчет.Documents.Open (GetAppPath & "\" & strFileName)

With wdСчет

.ActiveDocument.Bookmarks("НазвУчреждения").Select
.Selection.Text = "Магнитогорского кожно-венерологический диспансера"
' поскольку мы только что стерли прежнюю закладку данными из набора, то для возможности повторного
' использования документа - восстанавливаем закладку
.ActiveDocument.Bookmarks.Add Name:="НазвУчреждения", Range:=.Selection.Range

.ActiveDocument.Bookmarks("ДатаНачало").Select
.Selection.Text = CStr(rstBill![ДатаНачало])
.ActiveDocument.Bookmarks.Add Name:="ДатаНачало", Range:=.Selection.Range

.ActiveDocument.Bookmarks("ДатаКонец").Select
.Selection.Text = CStr(rstBill![ДатаКонец])
.ActiveDocument.Bookmarks.Add Name:="ДатаКонец", Range:=.Selection.Range


.ActiveDocument.Bookmarks("НазвСМО").Select
.Selection.Text = "Астра-Металл"
.ActiveDocument.Bookmarks.Add Name:="НазвСМО", Range:=.Selection.Range

.ActiveDocument.Bookmarks("СуммаУслуг").Select
.Selection.Text = CStr(dblSumm)
.ActiveDocument.Bookmarks.Add Name:="СуммаУслуг", Range:=.Selection.Range

.ActiveDocument.Bookmarks("СуммаРегИсков").Select
.Selection.Text = " "
.ActiveDocument.Bookmarks.Add Name:="СуммаРегИсков", Range:=.Selection.Range

.ActiveDocument.Bookmarks("СуммаКОплате").Select
.Selection.Text = CStr(dblSumm)
.ActiveDocument.Bookmarks.Add Name:="СуммаКОплате", Range:=.Selection.Range
.ActiveDocument.Save
.ActiveDocument.Close savechanges:=wdSaveChanges
.Quit

End With

Set wdСчет = Nothing
rstBill.Close
Set rstBill = Nothing

DoEvents

If intParan = 0 Then
wdСчет.Visible = True
wdСчет.Documents.Open (GetAppPath & "\" & strFileName)
End If

Exit Function

Err_Wd:

Err.Clear
Resume Next
MsgBox "Счет стоимости услуг по параклинике не сформирован!", vbCritical + vbOKOnly, "Ошибка формирования счета"

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


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