Зв’язок типу один-запис-з-одним

SET RELATION TO [ <ключ> INTO <область>

[, <ключ> INTO <область> …]

[ADDITIVE] ]

– зв’язує вказівник запису в активній робочій області з вказівником записів з інших робочих областей, імена яких вказані після слова INTO, по заданому загальному полю (ключу).

Єдина умова - файл, з яким встановлюється зв’язок, повинен бути проіндексований по цьому полю.

Якщо із старшим файлом, який вже зв'язаний з іншим, необхідно зв’язати інший третій (4-й,5-й,…), потрібно до всіх наступних команд SET RELATION включити слово ADDITIVE.

SET RELATION TOбез параметрів розриває зв’язок між таблицями.

 

Наприклад

Є три таблиці kartotec, pos, pidr

           
   
  Картотека співробітн
*   Табельний № ПІБ Код посади. Код підрозділу ............

 

     
  Довідник підрозділів
*   Код підрозд Назва  

 

 
  Довідник посад
*   Код посади Назва посади Ставка  

 

 

 

 


Спочатку потрібно проіндексувати таблиці :

use pos

index on kod_pos tag k_pos

use pidr

index on kod_pidr tag k_pidr

 

Встановлюємо тимчасові зв’язки

procedure sv

sele 1

use kartotec

sele 2

use pos

set order to tag k_pos

sele 3

use pidr

set order to tag k_pidr

 

sele 1

set relation to kod_pos into pos && зв‘язуємо поле kod_pos з таблиці kartotec з таблицею pos

set relation to kod_pidr into pidr additive && зв‘язуємо поле kod_pidr з таблиці kartotec з таблицею pos

browse fields FIO : h=”П.І.Б.”, dol.nazv_dol : h=”Посада”, podr.nazv_p : h=”Підрозділ”

 

 

Зв’язок типу один-запис-з-багатьма

SET SKIP TO [<область 1> [, <область 2>]…]

Працює аналогічно зв‘язку “один запис – з – одним”.

Можна сказати, що ми зв’язуємо не таблицю Договір з довідниками, а навпаки – один запис у довіднику з декількома записами з таблиці Договір.

Спочатку потрібно встановити SET RELATION, а потім вказуємо SET SKIP TO

 

Наприклад дані взято з таблиць

Structure for database : D:\FOXPRO\PROB\DOGOVOR.DBF

Number of data records : 5

Date of last update : 12/07/97

Field Field Name Type Width Dec Index
N Numeric    
KOD_PR Numeric   Asc
KOD_TOV Numeric   Asc
KOL Numeric    
DATA Date    

 

Structure for database : D:\FOXPRO\PROB\PREDPR.DBF

Number of data records : 2

Date of last update : 12/07/97

Field Field Name Type Width Dec Index
KOD_PR Numeric   Asc
NAME Character    
ADR Character    
R_S Numeric    

 

Structure for database : D:\FOXPRO\PROB\TOVAR.DBF

Number of data records : 2

Date of last update : 12/07/97

Field Field Name Type Width Dec Index
KOD_TOV Numeric   Asc
NAME Character    
CENA Numeric  

Master index : D:\FOXPRO\PROB\PREDPR.CDX TAG : KOD_PR

Master index : D:\FOXPRO\PROB\DOGOVOR.CDX TAG : KOD_PR

Master index : D:\FOXPRO\PROB\TOVAR.CDX TAG : KOD_TOV

 

Procedure SV2

Use predpr in a order kod_pr

use dogovor in b order kod_pr

use tovar in c order kod_tov

 

sele b

set relation to kod_tov into tovar

sele a

set relation to kod_tov into dogovor

set skip to dogovor

 

summa=0

browse fields name:h=”Підприємство”,;

b.N:h=”№ договора”,b.data:h=”Дата”,;

c.name:h=”Товар”,b.kol:h=”Кількість”,;

summa=b.kol*c.cena:h=”Сума”

close data

 

Отримаємо

Підприємство № договора Дата Товар Кількість Сума
Электрон 12/12/97 TV 77.50
************ 05/05/97 IBM 200.00
************ 05/05/97 TV 108.50
Протон 05/05/97 IBM 140.00
************ 07/07/97 TV 263.50

 

Постійні зв’язки між таблицями

Встановити постійні зв‘язки між таблицями можна за допомогою команд SQL :

SET ALTER TABLE <ім’я дочірньої таблиці>

ADD FOREIGN KEY <ключ> TAG <ключ>

REFERENCES <ім’я батьківської таблиці>

Знищити постійні зв‘язки :

 

ALTER TABLE <ім’я таблиці>

DROP FOREIGN KEY TAG <ключ> SAVE

 

Ці команди будуть розглядатися пізніше при вивченні команд мови SQL

 


Список літератури

 

1. Каратыгин С., Тихонов А., Тихонова Л., Visual FoxPro 5. К вершинам мастерства. -М.: Восточная книжная компания, 1997.

2. Горев А. Разработка приложений в Microsoft Visual FoxPro 5.0

3. Баженова И.Ю. Visual FoxPro 6.0.-М.:ДиалогМИФИ,2000-416с.

4. Сосински Б. Разработка приложений в среде Visual FoxPro 5.: - К. : Диалектика, 1997.

5. foxtalk.newmail.ru

6. www.sourceoffsite.com

7. homepage.msn.com

 

 

Зміст

 

  1. Лабораторна робота №1 …………………………………………………………… 5
  2. Лабораторна робота №2 …………………………………………………………… 29
  3. Лабораторна робота №3 …………………………………………………………… 48
  4. Лабораторна робота №4 …………………………………………………………… 74

Список літератури ……………………………………………………………………... 86

 

 

Для нотаток