Назад Оглавление Дальше

Работа 7 - Работа с отчетами - Quick Report


Справочную информацию по Interbase можно найти , например на http://klog.h17.ru/interbase/

Задание:

  1. Создайте БД формата InterBase для ведения компьютеризированного учета медицинских записей.
  2. Разработайте приложение в Delphi, позволяющее сформировать и распечатать отчет о текущем состоянии счетов за оказанные медуслуги для данного клиента.
Report Рис. 1. Форма на стадии разработки
Report
Рис. 2. Предварительный просмотр отчёта. Можно печатать

Создание базы данных

Создаю БД в C:\dbase1\MED.GDB . Запускаю IBConsole.exe . Далее:

Создаю таблицы, используя IBConsole и SQL-запросы:

CREATE TABLE "CLIENT" 
( "NOMPOLIS"	SMALLINT NOT NULL,
  "FIO"	CHAR(30) CHARACTER SET WIN1251 NOT NULL COLLATE PXW_CYRL,
  "ADRES"	CHAR(30) CHARACTER SET WIN1251 NOT NULL COLLATE PXW_CYRL,
  "PASP"	CHAR(15) CHARACTER SET WIN1251 NOT NULL COLLATE PXW_CYRL,
  "DATANAC"	DATE NOT NULL,
  "DATAKON"	DATE NOT NULL,
 PRIMARY KEY ("NOMPOLIS") )

CREATE TABLE "SCETA" 
( "NOMSCET"	SMALLINT NOT NULL,
  "NOMPOLIS"	SMALLINT NOT NULL,
  "KODUSL"	SMALLINT NOT NULL,
  "OPLATA"	SMALLINT NOT NULL,
 PRIMARY KEY ("NOMSCET") )

CREATE TABLE "USLUGI" 
( "KODUSL"	SMALLINT NOT NULL,
  "NAZVAN"	CHAR(20) CHARACTER SET WIN1251 NOT NULL COLLATE PXW_CYRL,
  "STOIM"	FLOAT NOT NULL,
 PRIMARY KEY ("KODUSL") )
Для ввода запросов: Меню | Tools | Interacive SQL.
Справку по синтаксису запросов можно найти в файле \Program Files\Borland\InterBase\bin\SqlRef.hlp (англ)

Для заполнения таблиц данными: щелкаю в левом окне Tables, затем - в правом: дв щелчок по таблице, перехожу на закладку Data. После заполнения 1-й строки - щелкнуть клавишу "стрелка вниз". Для сохранения изменений - щелкнуть кнопку Птичка, для сохранения в БД - щелкнуть кнопку Commit & Refresh. Можно также пользоваться кнопками: + (вставить), - (удалить) и т д. Добавляю в таблицу несколько записей:
Report
Report
Report

Создание Делфи-проекта для работы с базой данных

QuickReport идет в поставке Delphi 7, но по умолчанию его нет в палитре компонентов. Для добавления QuickReport в палитру компонент нужно выполнить следующую последовательность действий:
  1. В главном меню Delphi 7 выбрать пункт меню Component -> Install Packages...
  2. Откроется окно управления загружаемыми пакетами. В нем нужно нажать кнопку Add... Для добавления нового пакета.
  3. Откроется окно выбора файлов. В данном окне нужно перейти в папку куда была установлена Delphi (за частую это С:\Program Files\Borland\Delphi7\) и открыть папку Bin.
  4. В окне выбора файлов установим "Тип файлов" в Package library.bpl
  5. Выберем пакет с именем dclqrt70.bpl и нажмем кнопку Открыть для подтверждения выбора, после чего в списке установленных пакетов добавится QuickReport Components
  6. Нажимаем ОК для закрытия окно.
  7. Тестирование: Создаем новый проект и тестируем работоспособность.

Текст модуля unMed1

unit unMed1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, QuickRpt, QRCtrls, StdCtrls, ExtCtrls, DB, IBCustomDataSet,
  IBQuery, IBDatabase;

type
  TfrmMed = class(TForm)
    QuickRep1: TQuickRep;
    Label1: TLabel;
    edNom: TEdit;
    btnSQL: TButton;
    IBDatabase1: TIBDatabase;
    IBTransaction1: TIBTransaction;
    IBQuery1: TIBQuery;
    QRBand1: TQRBand;
    QRBand2: TQRBand;
    QRBand3: TQRBand;
    QRLabel1: TQRLabel;
    QRLabel2: TQRLabel;
    QRDBText1: TQRDBText;
    QRDBText2: TQRDBText;
    QRDBText3: TQRDBText;
    QRSysData1: TQRSysData;
    QRLabel3: TQRLabel;
    QRExpr1: TQRExpr;
    QRExpr2: TQRExpr;
    QRExpr3: TQRExpr;
    QRLabel4: TQRLabel;
    QRLabel5: TQRLabel;
    procedure edNomKeyPress(Sender: TObject; var Key: Char);
    procedure btnSQLClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMed: TfrmMed;

implementation

{$R *.dfm}

procedure TfrmMed.edNomKeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
    QRLabel2.Caption:=edNom.Text;
end;

procedure TfrmMed.btnSQLClick(Sender: TObject);
begin
QRLabel2.Caption:= edNom.Text;
IBQuery1.Active:=false;
IBQuery1.SQL.Clear;
IBQuery1.SQL.append('Select NOMSCET, Oplata, NAZVAN from Sceta, Uslugi ');
IBQuery1.SQL.append('where (Sceta.KodUsl = Uslugi.KodUsl) ');
IBQuery1.SQL.append('and (Sceta.NOMPOLIS =''' + edNom.Text+''')');
IBQuery1.Active:=true;
QuickRep1.Preview;

end;
end.
Скачать все файлы делфи-проекта и файл БД - MED.GDB
Rambler's Top100
Hosted by uCoz