Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчёт по БД / курсовик.doc
Скачиваний:
31
Добавлен:
15.06.2014
Размер:
99.33 Кб
Скачать

Создание бд “Торговая компания”

В соответствии с логической схемой была создана БД “Торговая компания”,

содержащая следующие таблицы:

Товар (товар.db)

N_t

integer

key

SI

Vid_t

integer

Naim

Char 30

Mony

integer

Заявка от обл. пред-ва (заявка.db)

N_z

integr

key

SI

Date_z

date

N_pred

integer

SI

N_t

integer

SI

Kol

Integer

N_s

Integer

SI

Заказ товаропр-лю (поставка.db)

N_z

integer

key

SI

Date_z

date

N_t

integer

SI

Kol

integer

Pr

Char 30

SI

Товаропр-ль (производитель.db)

Pr

Char 30

key

SI

Adress

Char 60

Phone

integer

Обл. предст-во (представит.db)

N_pred

integer

Key

SI

Adress

Char 60

Phone

integer

Счёт (счёт.db)

N_s

integer

key

SI

Date

Date

mony

integer

Процедура контроля вводимых значений при редактировании бд

procedure TForm1.Table1N_zChange(Sender: TField);

begin

if Table1N_z.Value<0 then

begin

ShowMessage(‘Номер не может быть отрицательным’);

Abort;

end;

Процедура выпадающего списка при вводе данных в бд

procedure TForm1.Table1BeforeInsert(DataSet: TDataSet);

Var n:integer;

Begin

N:=0;

While DBGrid1.Columns[n].FieldName<>'N_pred' do

Inc(n); //ищем номер нужного столбца по имени поля

DBGrid1.Columns[n].PickList.Clear; //очищаем список

With Table3 do //работаем с третьей таблицей

begin

First; // идём в начало

while not eof do // пока не дошли до конца таблицы

begin

DBGrid1.Columns[n].PickList.Add(Table3N_p.AsString);

// заполняем список PickList из другой таблицы

Next; // переходим к следующей записи

end;

end;

end;

procedure TForm1.Table6BeforeInsert(DataSet: TDataSet);

Var n:integer;

Begin

N:=0;

While DBGrid1.Columns[n].FieldName<>'Vid_t' do

Inc(n); //ищем номер нужного столбца по имени поля

DBGrid1.Columns[n].PickList.Clear; //очищаем список

//заполняем список

DBGrid1.Columns[n].PickList.Add('Монитор');

DBGrid1.Columns[n].PickList.Add(‘Системная плата');

DBGrid1.Columns[n].PickList.Add('Процессор');

DBGrid1.Columns[n].PickList.Add('Принтер’);

end;

Процедура контроля ссылочной целостности при удалении данных

procedure TForm1.Button5Click(Sender: TObject);

begin

//Если dbgrid в фокусе, то удаляем запись из соотв. таблицы, обновляем таблицу.

if dbgrid1.DataSource=dataSource1 then begin Table1.delete; mainform.Table1.Refresh end;

if dbgrid1.DataSource=dataSource2 then begin Table2.delete; mainform.Table2.Refresh end;

if dbgrid1.DataSource=dataSource3 then begin Table3.delete; mainform.Table3.Refresh end;

if dbgrid1.DataSource=dataSource4 then begin Table4.delete; mainform.Table4.Refresh end;

if dbgrid1.DataSource=dataSource5 then begin Table5.delete; mainform.Table5.Refresh end;

if dbgrid1.DataSource=dataSource6 then //если удаляем в таблице “Товар”

begin

// Устанавливаем связи

table1.MasterSource:=dataSource6;

table1.IndexName:='N_t_';

table1.MasterFields:='N_t';

table2.MasterSource:=dataSource6;

table2.IndexName:='N_t_';

table2.MasterFields:='N_t';

table5.MasterSource:=dataSource1;

table5.MasterFields:='N_s';

//Удаление в 1-ой и 5-ой таблице

if (table1['N_t']>=1) then begin //Если в первой таблице имеется хотя бы одна запись

//Удаление таблице “Счёт”

While not table5.EOF do //пока не достигли конца таблицы

begin

table5.Delete;

Table5.Next; //переход к следующей записи

end;

//удаление таблице “заказ обл. предст “

While not table1.EOF do

begin

table1.Delete;

Table1.Next;

end;

end;

table1.First;

//повтор удаления

if (table1['N_t']>=1) then begin

While not table5.EOF do

begin

table5.Delete;

Table5.Next;

end;

While not table1.EOF do

begin

table1.Delete;

Table1.Next;

end;

end;

//Удаление в таблице “Заказ товаропроизвод-лю”

if (table2['N_t']>=1) then begin //Если во 2-ой таблице имеется хотя бы одна запись

While not table2.EOF do //пока не достигли конца таблицы удаляем записи

begin

table2.Delete;

Table2.Next;

end;

end;

table2.First;

//повтор удаления во 2-ой таблице

if (table2['N_t']>=1) then begin

While not table2.EOF do

begin

table2.Delete;

Table2.Next;

end;

end;

Table6.delete;//Удаление в таблице “Товар”

//Отключение связей

table1.MasterFields:='';

table1.MasterSource:=nil;

table5.MasterFields:='';

table5.MasterSource:=nil;

table2.MasterFields:='';

table2.MasterSource:=nil;

//Обновление изменений в таблицах

mainform.Table5.Refresh;

mainform.Table2.Refresh;

mainform.Table1.Refresh;

mainform.Table6.Refresh

end;

end;

Соседние файлы в папке Отчёт по БД