
- •Работа с “Word”, “Excel” и ActiveX
- •Понятие о com-клиенте и com-сервере
- •Листинг программы экспорта в Word
- •.TypeParagraph
- •Основные структуры программы.
- •Комментарии к каждой строке листинга
- •Листинг программы экспорта в Excel
- •Use data1!rukovoditely
- •From data1!rukovoditely;
- •Into array a
- •Release a
- •Endwith
- •ActiveX → Календарь
- •Процедура определения календарной даты
Работа с “Word”, “Excel” и ActiveX
-
Понятие о com-клиенте и com-сервере
Если VTF использует Word или Excel или любое другое объектное приложение, то такое приложение называется COM-клиент.
Если Access использует VTF как свой объект, то это приложение VTF называется COM-клиент.
-
VTF как COM-клиент.
Для того чтобы получить ссылку на COM-объект нужно использовать функцию CreateObject(). В скобках указывается имя объекта и его класс.
Листинг программы экспорта в Word
Процедуру необходимо адаптировать к Вашему проекту.
-
LOCAL loWord
-
loWord=CREATEOBJECT("Word.Application")
-
loWord.displayAlerts=.F.
-
loWord.Documents.Add("Normal",.F.)
-
with loWord
-
.Visible=.t.
-
with .Selection
-
.Font.Bold=.T.
-
.Font.SIZE=16
-
.Font.NAME="Times New Roman"
-
.ParagraphFormat.ALIGNMENT=1
-
.typeText('Динамика выполнения дипломного проектирования на кафедре ИТС')
-
.Font.SIZE=12
-
.Font.NAME="Times New Roman"
-
.typeParagraph
-
.Font.Bold=.F.
-
Use data1!rukovoditely
-
SELECT TRIM(s_fam),Trim(r_fam),TRIM(group),Trim(sr_1),Trim(sr_2);
-
FROM data1!rukovoditely;
-
order by group,s_fam;
-
INTO ARRAY a
-
IF _TALLY>0
-
.TypeParagraph
-
.typeText('')
-
rowsCount=ALEN(a,1)
-
colsCount=ALEN(a,2)
-
loWord.ActiveDocument.TABLES.ADD(.RANGE,rowsCount+1,colsCount)
-
T=.TABLES(1)
-
WITH T
-
.cell(1,1).RANGE.TEXT='Дипломник'
-
.cell(1,1).RANGE.FONT.Bold=.T.
-
.cell(1,2).RANGE.TEXT='Руководитель'
-
.cell(1,2).RANGE.FONT.Bold=.T.
-
.cell(1,3).RANGE.TEXT='Группа'
-
.cell(1,3).RANGE.FONT.Bold=.T.
-
.cell(1,4).RANGE.TEXT='На 27.11.06'
-
.cell(1,4).RANGE.FONT.Bold=.T.
-
.cell(1,5).RANGE.TEXT='На 12.12.06'
-
.cell(1,5).RANGE.FONT.Bold=.T.
-
j=2
-
FOR j=2 TO rowsCount+1
-
.cell(j,1).RANGE.TEXT=a[j-1,1]
-
.cell(j,2).RANGE.TEXT=a[j-1,2]
-
.cell(j,3).RANGE.TEXT=a[j-1,3]
-
.cell(j,4).RANGE.TEXT=a[j-1,4]
-
.cell(j,5).RANGE.TEXT=a[j-1,5]
-
ENDFOR
-
ENDWITH
-
.EndKey(6)
-
.typeParagraph
-
RELEASE a
-
ELSE
-
.typeParagraph
-
.typeText("Нет сведений о дипломниках")
-
.typeParagraph
-
ENDIF
-
ENDWITH
-
ENDWITH
-
RELEASE TO WORD
Структура таблицы rukovoditely
r_fam |
r_im |
r_ot |
s_im |
s_fam |
s_ot |
group |
|
|
|
|
|
|
|
С помощью этой процедуры выполняется SQL-запрос к таблице базы данных и распечатка результата этого запроса в виде таблицы с заданными полями.
Схема таблицы rukovoditely приведена на листе, где дан листинг программы. В этой таблице хранятся данные о ходе дипломного проектирования на кафедре, где
r_fam
r_im Фамилия, имя и отчество руководителя
r_ot дипломного проекта
s_fam
s_im Фамилия, имя и отчество студента
s_ot
group – учебная группа студента