
- •Омский государственный технический университет кафедра Информатики и вычислительной техники пояснительная записка
- •Введение
- •Cодержание:
- •Проектирование реляционной бд “Торговая компания”
- •Создание бд “Торговая компания”
- •Процедура контроля вводимых значений при редактировании бд
- •Процедура выпадающего списка при вводе данных в бд
- •Процедура контроля ссылочной целостности при изменении данных
- •Процедура поиска по 1-ой таблице
- •Формирование отчётов средствами sql запросов
- •Вывод статистики
- •Заключение
- •Используемая литература
Создание бд “Торговая компания”
В соответствии с логической схемой была создана БД “Торговая компания”,
содержащая следующие таблицы:
Товар (товар.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;