Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД.docx
Скачиваний:
4
Добавлен:
15.08.2019
Размер:
42.71 Кб
Скачать

Создание отчёта с использованием табличного процессора ms Excel.

Этапы подготовки отчёта:

  1. В раздел Uses добавить модуль ComObj. Описать необходимые переменные; Var Excel, WorkBook, Sheet: Variant I : integer begin

  2. Проверить установлен ли Excel на компьютере пользователя. Проверить, запущен ли Excel. Если нет, то запустить его. try //Подключение к уже запущенному Excel := GetActiveOleObject(‘Excel.Application); except try //Запуск и подключение к нему Excel := CreateOleObject(‘Excel.Application’); except ShowMessage(‘Ошибка доступа к Microsoft Excel (он не установлен!)’); exit; end; end;

  3. После подключения к Excel создать новую пустую рабочую книгу WorkBook := Excel.WorkBooks.Add; //Создание книги Sheet := WorkBook.Sheets[1]; // Отчёт будем создавать на первой странице Если в качестве параметра метода Add указан файл с шаблоном рабочей книги, то новая книга будет создана на основе шаблона. Например: WorkBook := Excel.Workbooks.Add (OpenDialog.FileName);

  4. Вывести все записи из выбранной таблицы БД на лист Excel. Для обращения к ячейке листа используется свойство Cells[Row,Col]. Нумерация начинается с 1. Table1.First; for i:= 1 to Table1.RecordCount do begin Sheet.Cells[I,1] := Table1.FieldByName(‘Surname’).AsString; Sheet.Cells[I,2] := Table1.FieldByName(‘Group’).AsString; Sheet.Cells[I,3] := Table1.FieldByName(‘Year’).AsInteger; Table1.Next; end; Способ через ‘While’: Table1.First; I := 1; While not Table1.EOF do begin Sheet.Cells[I,1]:= Table.Fields[0].AsString; Sheet.Cell[I,2] := Table1.Fields[1].AsString; Sheet.Cell[I,3] := Table1.Fields[1].AsInteger; Table1.Next; I := i+1; end; При выводе данных можно задать начертание, размер и цвет шрифта. Например: Sheet.Cells[1,1].Font.Italic := true; //курсив Sheet.Cells[1,2].Font.Bold := true; //жирный Sheet.Cells[1,3].Font.Size := 20; //размер шрифта Для изменения цвета строки и столбца можно использовать: Sheet.Row[строка].Font.Color := цвет; //строка Sheet.Columns[столбец].Font.Color := clBlue; //столбец Sheet.Cells[строка,столбец].Font.Color := цвет; //ячейка

  5. После формирования рабочего листа вывести Excel на передний план: Excel.Visible := True; end;

Fields

Fields.byName

Next, Prior, Last, First.

Insert, Edit, Post, Cancel, Append

dsInsert, dsEdit, dsBrowse

Форматирование значений полей. Пусть значение поля хранится не в том виде, в каком оно должно выводиться. В этом случае алгоритм форматирования значения поля перед выводом задаётся в обработчике события onGetText

Procedure TForm1.Table1BNameGetText(..);

begin

Text:=TableBName.Value+’\’+Table1BAuthor.Value+’\’+Table1BPublish.Value;

End;

Procedure TForm1.Table1CompanyGetText(..);

begin

Text:=’”’+Table1Company.AsString+’”’;

End;

Проверка введённого в поле значения. Ограничение для вводимых в поля значений могут быть заданы либо при создании таблицы в Access, либо в обработчике события onValidate (onChange). Событие onValidate происходит каждый раз при изменении значения поля вручную или программно. Это событие наступает до выполнения метода Post, сохраняющего информацию в таблице.

Procedure TForm1.Table1CompanyValidate(..);

begin

if Pos(‘@’,Table1Company.AsString)>0

then begin

ShowMessage(‘Обнаружен символ @!’);

Abort;

End;

End;

Свойство EditMask служит для контроля правильности значений вводимых в поле. Ограничения задаются с помощью маски, если вводимый символ не соответствует маске, то он не воспринимается. Некоторые символы маски: L-в данной позиции должен появляться символ алфавита, l – символ может отсутствовать, A-обязателен символ алфавита или цифра, а-символ может отсутствовать, С-обязателен любой символ, 0 – обязателен цифровой символ, # - должен появляться цифровой символ, знак плюс или минус, или не появляться никакой.

(000)000-00-00 (029)745-11-70

Создание вычисляемых полей. Для создания вычисляемого поля нужно в инспекторе объектов выбрать fields для нужной таблицы и в контекстом меню выбрать NewField. Для нового поля задать имя, тип, размер (для строкового типа) и установить переключатель Calculated. Затем обязательно создать обработчик события onCalcFields для компонента набора данных, которому принадлежит вычисляемое поле.

Procedure TForm1.ADOTable1CalcFields(..);

Begin

ADOTAble1Summa.Value:=ADOTable1Kolvo.Value*ADOTable1Zena.Value;

End;

Данной событие происходит всякий раз при изменении набора данных и следует помнить, что в данном обработчике значение может быть присвоено только вычисляемому полю и не может быть присвоено полю, определённого в структуре таблицы базы данных.

Управление отображением данных в компоненте DBGrid. Если требуется выделить цветом определённые ячейки, отвечающие какому-либо условию, то алгоритм прорисовки записывается в обработчик события onDrawColumnCell (onDrawDataCell).

Procedure TForm1.DBGrid1DrawColumnCell(..);

Begin

With DBGrid1.Canvas.do begin

If ADOTAble1Datazakaza.Value<Date

Then begin

Brush.Color:=clRed;

Font.Color:=clWhite;

FillRect(Rect);

TextOut(Rect.Left, Rect.Top, Column.Field.Text);

End; end;

End;

Метод FildRect очищает старые ячейки, закрашивая заданную область цветом фона. Метод TextOut выводит текст ячейки. Возможные состояния ячейки DBGrid: gdSelected - выделенная, gdFocused – получила фокус ввода, gdFixed – ячейка является фиксированной.

Для сортировки информации в таблице можно воспользоваться методом Sort.

ADOTAble1.Sort:=’Фамилия ASC’; (desc – по убыванию)