Создаю БД в C:\dbase1\MED.GDB . Запускаю IBConsole.exe . Далее:
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.
IBDatabase1, IBTransaction1, IBQuery1, С закладки QReport: QuickRep1, QRBand1 (полоса заголовка отчёта) .BandType= rbTitle, QRBand2 (полоса итогов), QRBand3(полоса данных (поля результата запроса)). На QRBand1 устанавливаю: QRLabel1 (Отчет о состоянии счетов по полису № ), QRLabel2 (здесь будет № полиса) На QRBand3 (.BandType= rbDetail) устанавливаю: QRDBText1, QRDBText2, QRDBText3 Настройка для них: .DataSet = IBQuery1, .DataField = NOMSCET, NAZVAN, OPLATA (соответственно). На QRBand2 (.BandType= rbSummary) устанавливаю: QRLabel3, QRLabel4, QRLabel5, для вывода выражений: QRExpr1, QRExpr2, QRExpr3. Настройка: Удобно использовать построитель выражений, например: QRExpr1.Expression - щёлкаю кнопку ... в строке Expression инспектора объектов, щёлкаю кнопку Function, выбираю COUNT (т е число строк в результате запроса). Все построенные выражения видны на рисунке Рис. 1. (При этом IBQuery1 должен быть активен)
IBDatabase1.DefaultTransaction = IBTransaction1, IBTransaction1.Default = IBDatabase1, IBDatabase1.Connected = true; IBTransaction1.Active = true; IBQuery1.Database = IBDatabase1; IBQuery1.SQL = Select NOMSCET, OPLATA, NAZVAN from Sceta, Uslugi where (Sceta.KodUsl = Uslugi.KodUsl) QuickRep1.DataSet = IBQuery1; QuickRep1.Units = MM;
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