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

Работа 6 - Кеширование изменений


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

Задание:

  1. Создайте БД с информацией о товарах в супермаркете и их поставщиках формата InterBase.
  2. Создайте приложение в Delphi для ведения кэшированных изменений этой БД.
  3. Использовать компонент TIBUpdateSQL
Создаю приложение, в котором с таблицей Поставки нужно работать через IBQuery, а с таблицами Товары и Поставщики - через IBTable. Все изменения кешируются, для сохранения изменений в базе данных - кнопка "Обновить на сервере"

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

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

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

CREATE TABLE "POSTAVSC" 
( "KODPOSTAVSC"	SMALLINT NOT NULL,
  "POSTAVSC"	CHAR(30) CHARACTER SET WIN1251 NOT NULL COLLATE PXW_CYRL,
  "REKVIZIT"	CHAR(30) CHARACTER SET WIN1251 NOT NULL COLLATE PXW_CYRL,
 PRIMARY KEY ("KODPOSTAVSC") )

CREATE TABLE "PRODUCTION" 
( "KODTOV"	SMALLINT NOT NULL,
  "KODPOSTAVSC"	SMALLINT NOT NULL,
  "KOLIC"	SMALLINT NOT NULL,
  "DATPOST"	DATE NOT NULL,
  "SROKREAL"	SMALLINT NOT NULL )

CREATE TABLE "TOVARY" 
( "KODTOV"	SMALLINT NOT NULL,
  "TOVAR"	CHAR(20) CHARACTER SET WIN1251 NOT NULL COLLATE PXW_CYRL,
  "CENA"	FLOAT NOT NULL,
 PRIMARY KEY ("KODTOV") )

ALTER TABLE "PRODUCTION" ADD FOREIGN KEY ("KODPOSTAVSC") REFERENCES POSTAVSC ("KODPOSTAVSC");
ALTER TABLE "PRODUCTION" ADD FOREIGN KEY ("KODTOV") REFERENCES TOVARY ("KODTOV");
Для ввода запросов: Меню | Tools | Interacive SQL.
Справку по синтаксису запросов можно найти в файле \Program Files\Borland\InterBase\bin\SqlRef.hlp (англ)

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

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

Кеширование

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

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    IBDatabase1: TIBDatabase;
    IBTransaction1: TIBTransaction;
    IBTable1: TIBTable;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    IBQuery1: TIBQuery;
    DBNavigator1: TDBNavigator;
    DBGrid2: TDBGrid;
    DataSource2: TDataSource;
    RG2: TRadioGroup;
    IBUpdateSQL1: TIBUpdateSQL;
    Button1: TButton;
    DBNavigator2: TDBNavigator;
    Label1: TLabel;
    procedure RG2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.RG2Click(Sender: TObject);
begin
  IBTable1.Active:= false;
  case RG2.ItemIndex of
  0: IBTable1.TableName:= 'TOVARY';
  1: IBTable1.TableName:= 'POSTAVSC';
  // 2: IBTable1.TableName:= 'PRODUCTION';
  end;
  IBTable1.Active:= true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 try
  IBDatabase1.ApplyUpdates([IBQuery1,IBTable1]);
  except
  MessageDlg('Изменения не сохранены', mtError, [mbOK],0);
  IBQuery1.CancelUpdates;
  IBTable1.CancelUpdates;
  end;
  IBTable1.Active:= false;
  IBTable1.Active:= true;
end;

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