Создаю БД в 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