Разработка базы данных
Реферат - Компьютеры, программирование
Другие рефераты по предмету Компьютеры, программирование
/>
public
{ Public declarations }
end;
var
DM: TDM;
implementation
uses Unit4;
{$R *.dfm}
procedure TDM.IBTable2BeforePost(DataSet: TDataSet);
begin
if ibtable2.State=dsinsert then IBTable2.FieldByName('KOD1').AsInteger:=-1;
end;
procedure TDM.IBTable3BeforePost(DataSet: TDataSet);
var str:ansistring;
begin
if ibtable2.State=dsinsert then begin // если у нас верхняя таблица в режиме вставки
str:=ibtable3.fieldbyname('NAIM').AsString;
ibtable3.Cancel;
ibtable2.Post;
ibtable3.Append;
ibtable3.fieldbyname('NAIM').AsString:=str;
end;
if ibtable3.State=dsinsert then IBTable3.FieldByName('KOD2').AsInteger:=-1;
end;
procedure TDM.IBTable4BeforePost(DataSet: TDataSet);
var str:ansistring;
begin
if ibtable3.State=dsinsert then begin // если у нас верхняя таблица в режиме вставки
str:=ibtable4.fieldbyname('MODEL').AsString;
ibtable4.Cancel;
ibtable3.Post;
ibtable4.Append;
ibtable4.fieldbyname('MODEL').AsString:=str;
end;
if ibtable4.State=dsinsert then IBTable4.FieldByName('KOD3').AsInteger:=-1;
end;
procedure TDM.IBTable2AfterPost(DataSet: TDataSet);
begin
ibtable2.Close; ibtable2.open; ibtable2.Last;
end;
procedure TDM.IBTable3AfterPost(DataSet: TDataSet);
begin
ibtable3.Close; ibtable3.open; ibtable3.Last;
end;
procedure TDM.IBTable4AfterPost(DataSet: TDataSet);
begin
ibtable4.Close; ibtable4.open; ibtable4.Last;
end;
procedure TDM.IBTable5BeforePost(DataSet: TDataSet);
begin
if ibtable5.State=dsinsert then IBTable5.FieldByName('KOD').AsInteger:=-1;
end;
procedure TDM.IBTable5AfterPost(DataSet: TDataSet);
begin
ibtable5.Close; ibtable5.open; ibtable5.Last;
end;
procedure TDM.IBTable1BeforePost(DataSet: TDataSet);
begin
if ibtable1.fieldbyname('K4').AsString='' then begin
MessageDlg('Введите номер воинской части',mterror,[mbok],0);
ibtable1.fieldbyname('K4').FocusControl;
abort;
end;
if ibtable1.fieldbyname('SerNo').AsString='' then begin
MessageDlg('Введите серийный номер аппарата!',mterror,[mbok],0);
ibtable1.fieldbyname('SerNo').FocusControl;
abort;
end;
if ibtable1.fieldbyname('K3').AsString='' then begin
MessageDlg('Введите модель аппарата!',mterror,[mbok],0);
ibtable1.fieldbyname('K3').FocusControl;
abort;
end;
if ibtable1.State=dsinsert then IBTable1.FieldByName('KOD5').AsInteger:=-1;
end;
procedure TDM.IBTable1AfterPost(DataSet: TDataSet);
begin
ibtable1.Close; ibtable1.open; ibtable1.Last;
end;
procedure TDM.DataModuleCreate(Sender: TObject);
var
Inii: TIniFile;
str:ansistring;
begin
Inii := TIniFile.Create(getcurrentdir+'\del.ini');
try
str:=Inii.ReadString( 'Baza', 'Put', '');
ibdatabase1.databaseName:=str;
IBDatabase1.Connected:=true;
IBTransaction1.Active:=true;
IBTable1.Active:=true;
IBTable2.Active:=true;
IBTable3.Active:=true;
IBTable4.Active:=true;
IBTable5.Active:=true;
IBTable44.Active:=true;
finally
inii.Free;
end;
end;
end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, ExtCtrls, DBCtrls, Buttons;
type
TSvazka = class(TForm)
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
DBGrid3: TDBGrid;
DBNavigator1: TDBNavigator;
DBNavigator2: TDBNavigator;
DBNavigator3: TDBNavigator;
Check: TCheckBox;
C1: TCheckBox;
C2: TCheckBox;
C3: TCheckBox;
SpeedButton2: TSpeedButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure CheckClick(Sender: TObject);
procedure C3Click(Sender: TObject);
procedure C2Click(Sender: TObject);
procedure C1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Svazka: TSvazka;
implementation
uses Unit3, Unit10;
{$R *.dfm}
procedure TSvazka.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ShowWindow(Svazka.Handle, SW_HIDE);
action:=canone;
dm.IBTable44.Close; dm.IBTable44.Open;
end;
procedure TSvazka.CheckClick(Sender: TObject);
begin
if check.Checked then begin
svazka.Caption:='Редактирование связанных таблиц: Раздел->Наименование->Модель';
dm.IBTable3.active:=false;
dm.IBTable4.active:=false;
dm.IBTable3.IndexFieldNames:='K1';
dm.IBTable3.MasterSource:=dm.DataSource2;
dm.IBTable4.IndexFieldNames:='K2';
dm.IBTable4.MasterSource:=dm.DataSource3;
dm.IBTable3.active:=true;
dm.IBTable4.active:=true;
end
else begin
svazka.Caption:='Редактирование не связанных таблиц';
dm.IBTable3.MasterSource:=nil;
dm.IBTable3.IndexFieldNames:='NAIM';
dm.IBTable4.MasterSource:=nil;
dm.IBTable4.IndexFieldNames:='MODEL';
end;
end;
procedure TSvazka.C3Click(Sender: TObject);
begin
if c3.Checked then begin
c2.Checked:=false;
c1.Checked:=false;
end;
end;
procedure TSvazka.C2Click(Sender: TObject);
begin
if c2.Checked then begin
c3.Checked:=false;
c1.Checked:=false;
end;
end;
procedure TSvazka.C1Click(Sender: TObject);
begin
if c1.Checked then begin
c2.Checked:=false;
c3.Checked:=false;
end;
end;
procedure TSvazka.SpeedButton2Click(Sender: TObject);
begin
with dm do begin
Zapr3.Active:=false;
zapr3.SQL.Clear;
{
select *
from naimm,modell,chastt,svodka
where svodka.k3=modell.kod3
and modell.k2=naimm.kod2
and naimm.k1=24
and svodka.k4=chastt.kod
order by vch
}
zapr3.SQL.Add('select *');
zapr3.SQL.Add('from naimm,modell,chastt,svodka');
if c3.Checked then begin
{where svodka.k3=41
and modell.kod3=41
and modell.k2=naimm.kod2
and svodka.k4=chastt.kod}
zapr3.SQL.Add('where svodka.k3='+dm.ibtable4.fieldbyname('KOD3').AsString);
zapr3.SQL.Add('and modell.kod3='+dm.ibtable4.fieldbyname('KOD3').AsString);
zapr3.SQL.Add('and modell.k2=naimm.kod2');
zapr3.SQL.Add('and svodka.k4=chastt.kod');
end
else if c2.Checked then begin
zapr3.SQL.Add('where svodka.k3=modell.kod3');
zapr3.SQL.Add('and naimm.kod2='+dm.ibtable3.fieldbyname('KOD2').AsString);
zapr3.SQL.Add('and modell.k2='+dm.ibtable3.fieldbyname('KOD2').AsString);
zapr3.SQL.Add('and svodka.k4=chastt.kod');
end
else if c1.Checked then begin
zapr3.SQL.Add('where svodka.k3=modell.kod3');
zapr3.SQL.Add('and modell.k2=naimm.kod2');
zapr3.SQL.Add('and naimm.k1='+dm.ibtable2.fieldbyname('KOD1').AsString);
zapr3.SQL.Add('and svodka.k4=chastt.kod');
end;
zapr3.SQL.Add('and svodka.k4=chastt.kod');
zapr3.SQL.Add('order by vch');
if c1.Checked or c2.Checked or c3.Checked then Zapr3.Active:=true
else messag