- •Создание отчётов с использованием компонентов вкладки qReport.
- •Создание отчётов с использованием генератора отчётов RaveReports
- •Создание отчёта с использованием табличного процессора ms Excel.
- •Разработка приложений с использование кэширования.
- •Архитектура клиент-сервер. Sql-сервер InterBase.
- •Представление. Триггеры
Создание отчёта с использованием табличного процессора ms Excel.
Этапы подготовки отчёта:
В раздел Uses добавить модуль ComObj. Описать необходимые переменные; Var Excel, WorkBook, Sheet: Variant I : integer begin
Проверить установлен ли Excel на компьютере пользователя. Проверить, запущен ли Excel. Если нет, то запустить его. try //Подключение к уже запущенному Excel := GetActiveOleObject(‘Excel.Application); except try //Запуск и подключение к нему Excel := CreateOleObject(‘Excel.Application’); except ShowMessage(‘Ошибка доступа к Microsoft Excel (он не установлен!)’); exit; end; end;
После подключения к Excel создать новую пустую рабочую книгу WorkBook := Excel.WorkBooks.Add; //Создание книги Sheet := WorkBook.Sheets[1]; // Отчёт будем создавать на первой странице Если в качестве параметра метода Add указан файл с шаблоном рабочей книги, то новая книга будет создана на основе шаблона. Например: WorkBook := Excel.Workbooks.Add (OpenDialog.FileName);
Вывести все записи из выбранной таблицы БД на лист 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 := цвет; //ячейка
После формирования рабочего листа вывести 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 – по убыванию)