Хорошую помощь при составлении отчетов о проделанной работе
может оказать запуск формы Fill. Результаты ее работы показаны на рис. 4.32. В окружение данных
этой формы ничего помещать не надо. Необходимые выборки выполняются в процессе
работы и удаляются после закрытия формы.
Код события Load формы Fill:
* Создание временной таблицы Fill
SELECT * FROM INFO INTO TABLE 'C:\WINNT\TEMP\FILL'
SELECT INFO
USE
* Добавляем поля в таблицу-выборку
ALTER TABLE 'C:\WINNT\TEMP\FILL'
;
ADD COLUMN NumRec N(8);
ADD COLUMN DateModify D;
ADD COLUMN AllField N(2);
ADD COLUMN LenRec N(3);
ADD COLUMN AllByte
N(13,2)
* Создание глобальных переменных
PUBLIC nSumRecord,nSumByte
STORE 0 TO nSumRecord,nSumByte
SELECT FILL
SCAN
SCATTER MEMVAR
NameTable=[(']+ALLTRIM(M.DBF)+[')]
NameSelect=ALLTRIM(M.DBF)
IF .NOT. USED &NameTable
USE &NameTable IN 0
ENDIF
SELECT &NameSelect
M.NumRec=RECCOUNT()
M.DateModify=LUPDATE()
M.AllField=FCOUNT()
M.LenRec=RECSIZE()
M.AllByte=(RECCOUNT()*RECSIZE()+HEADER()+1)/1024
USE
SELECT FILL
GATHER MEMVAR
ENDSCAN
* Подсчет количества записей и размера таблиц
SUM NUMREC TO nSumRecord
ALL
SUM ALLBYTE TO nSumByte
ALL
nSumByte=nSumByte
* Создание индексов
INDEX ON ALLBYTE TAG ALLBYTE OF 'C:\WINNT\TEMP\FILL' DESCENDING
INDEX ON DBF TAG DBF OF 'C:\WINNT\TEMP\FILL'
INDEX ON INFO TAG INFO OF 'C:\WINNT\TEMP\\FILL'
SET ORDER TO TAG ALLBYTE
GOTO TOP
Код события Activate формы Fill:
ThisForm.Label1.Caption=[Всего таблиц
......]+;
STR(RECCOUNT(),7)+[
штук]
ThisForm.Label2.Caption=[Всего записей
.....]+;
STR(nSumRecord,7)+[
штук]
ThisForm.Label3.Caption=[Место на диске
....]+;
STR(nSumByte,7) +[ Кбайт]
ThisForm.Command1.SetFocus
Код события Destroy формы Fill:
* Освобождение глобальных переменных
RELEASE nSumRecord,nSumByte
* Удаление временных выборок
CLOSE TABLES ALL
IF FILE ('C:\WINNT\TEMP\Fill.dbf' )
DELETE FILE 'C:\WINNT\TEMP\Fill.dbf'
ENDIF
IF FILE ('C:\WINNT\TEMP\Fill.bak' )
DELETE FILE 'C:\WINNT\TEMP\Fill.bak'
ENDIF
IF FILE ('C:\WINNT\TEMP\Fill.cdx' )
DELETE FILE 'C:\WINNT\TEMP\Fill.cdx'
ENDIF