Зв’язок типу один-запис-з-одним
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 …………………………………………………………… 5
- Лабораторна робота №2 …………………………………………………………… 29
- Лабораторна робота №3 …………………………………………………………… 48
- Лабораторна робота №4 …………………………………………………………… 74
Список літератури ……………………………………………………………………... 86
Для нотаток