Назад Оглавление

Работа 11 - Запросы: список фирм по виду деятельности, средний уставный фонд по видам собственности


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

Задание:

  1. Создайте базу данных «Организации», которая будет содержать таблицу «Организации».
  2. Создать приложение для работы с базой данных «Организации». Клиентская часть приложения должна содержать форму для работы с таблицей и выдавать информацию по запросам:
    • Выбор списка организаций по виду деятельности с указанием Названия, Вида собственности, Номера лицензии и Уставного фонда;
    • Количество организаций и средний уставный фонд по видам собственности.


    Таблица "Организации"

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

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

(Запросы на создание таблицы см ниже, в метаданных ). Для ввода запросов: Меню | Tools | Interacive SQL.
Справку по синтаксису запросов можно найти в файле \Program Files\Borland\InterBase\bin\SqlRef.hlp (англ)

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

/* CREATE DATABASE 'C:\DB1\ORGAN.GDB' PAGE_SIZE 4096

 DEFAULT CHARACTER SET WIN1251 */

/* Table: SPISOK, Owner: SYSDBA */

CREATE TABLE "SPISOK" 
(
  "KOD"	SMALLINT NOT NULL,
  "NAZVAN"	VARCHAR(30) CHARACTER SET WIN1251,
  "VID_SOBSTV"	VARCHAR(20) CHARACTER SET WIN1251,
  "NOMLICENZ"	INTEGER,
  "DATLICENZ"	TIMESTAMP,
  "VID_DEAT"	VARCHAR(50) CHARACTER SET WIN1251,
  "FOND"	NUMERIC(9, 0) NOT NULL,
 PRIMARY KEY ("KOD")
);

/* Grant Roles for this database */

/* Grant permissions for this database */

Регистрация БД в BDE

Если нужно работать с БД используя SQL Explorer (..\delpi7\bin\dbexplor.exe = SQL Explorer), то зарегистрируйте её, используя BDE Administrator: Для работы данного проекта BDE не нужен.

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

zapros
Для вызова запросов на форму добавлено меню из двух пунктов.

Текст модуля

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, DBCtrls, DB, IBDatabase, IBCustomDataSet, IBTable,
  Grids, DBGrids, StdCtrls, Menus, IBQuery;

type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    IBTable1: TIBTable;
    IBDatabase1: TIBDatabase;
    IBTransaction1: TIBTransaction;
    DataSource1: TDataSource;
    DBNavigator1: TDBNavigator;
    Button1: TButton;
    MainMenu1: TMainMenu;
    DBGrid2: TDBGrid;
    IBQuery1: TIBQuery;
    DataSource2: TDataSource;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
   IBDatabase1.Connected:= false;
   IBDatabase1.Connected:= true;
   IBTransaction1.Active:= true;
   IBTable1.Active:= true;
   IBQuery1.Active:= true;
end;

procedure TForm1.N2Click(Sender: TObject);
var vidd: string;
begin
  IBQuery1.Active:= false;
  IBQuery1.SQL.Clear;
  vidd:= InputBox('Выберите из таблицы вид деятельности',
  'Введите вид деятельности', 'торговля');
  IBQuery1.SQL.Append
  ('SELECT NAZVAN as "Название", '+
  'VID_SOBSTV as "Вид собств.",NOMLICENZ as "№ лиценз.", '+
  ' FOND as "Фонд"');
  IBQuery1.SQL.Append
  ('FROM SPISOK ');
  IBQuery1.SQL.Append
  ('WHERE VID_DEAT = '''+vidd+'''');
  IBQuery1.Active:= true;
end;
     {STARTING WITH}
procedure TForm1.N3Click(Sender: TObject);
begin
  IBQuery1.Active:= false;
  IBQuery1.SQL.Clear;
  IBQuery1.SQL.Append
  ('SELECT VID_SOBSTV as "Вид собств", '+
  'COUNT(KOD) as "Кол-во", AVG(FOND) as "Средн.фонд"');
  IBQuery1.SQL.Append
  ('FROM SPISOK ');
  IBQuery1.SQL.Append
  ('GROUP BY VID_SOBSTV');
  IBQuery1.Active:= true;
end;

end.
Скачать все файлы делфи-проекта и файл БД - ORGAN.GDB
Не забудьте перенести файл ORGAN.GDB в C:\DB1\
Rambler's Top100
Hosted by uCoz