Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.27;
Скачать: CL | DM;

Вниз

Связь один ко многим   Найти похожие ветки 

 
ST_   (2003-11-07 01:51) [0]

Многоуважаемый ALL, вот тебе ещё один вопрос. Необходимо связать две таблицы связью один ко многим в Pararox 7. Мои действия:
1) В первой (главной) таблице создаю поле Ind1 типа AutoIncrement.
2) В подчинённой тиблице создаю поле Ind2 типа Long Integer.
3) В подчинённой таблице создаю secondary index Ind1 -- Ind2
4) Выставляю всё в delphi.
Теперь при редактировании подчиненной таблици, когда я создаю вторую запись мне вылетает мат "Index Violation", и вылетает, пока я не удалю одну из зиписей. Как это порешать?


 
ST_   (2003-11-07 02:04) [1]

Прошу прощения, не Index Violation, а Key Violation!


 
MsGuns ©   (2003-11-07 13:25) [2]

Чтобы бала возможна связь "Один-ко-многим", надо, чтобы в подчиненной таблице было хотя бы на одно поле-ключ (или ун.индекс) больше, чем в основноу (мастер) таблице. Т.е. в твоем примере, у детальной таблицы должно быть как min 2 поля:
1. ind1 (или с любым другим именем) - для связки с мастером
2. ind2 - собств.уник.поле (Primary или Secondary index)


 
MsGuns ©   (2003-11-07 13:38) [3]

Блин, коряво получилось ;( Попробую на примере:

БД лицевых счетов плательщиков каб. TV
-----------------------------------------

Таблица плательщиков (Master):
1. ID int (autoinc) идент-р плательщика Primary Key
2. FAM Varchar Фамилия
3. NAM Varchar Имя
4. NAM2 Varchar Отчество
5.. Адрес + доп. информация

Таблица проплат (Detail)
1. ID int (autoinc) идент-р платежа Primary Key
2. IDP int (связка с Master) PK или Un.Index
3. PDAT Date дата платежа
4. PSUM Currency Сумма платежа
5.. данные о РС, МФО и др.


 
Виталий Панасенко   (2003-11-07 17:09) [4]

Во-первых, в подчиненной таблице должно быть как минимум два поля в Primary Index - Ind2 и еще одно типа AutoIncrement для обеспечения уникальности индекса (по двум полям - а так у вас дублируется значение Ind2 из главной таблицы, что противоречит понятию Primary Key).. Во-вторых, в обработчике подчиненной таблицы OnNewRecord Ind2 подчиненной таблицы присваивать значение Ind1 главной - и все будет (должно) работать...



Страницы: 1 вся ветка

Текущий архив: 2003.11.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
1-89979
Vitaliygavrilov
2003-11-17 15:22
2003.11.27
Как загрузить другую программу из своей


7-90144
Term
2003-09-17 09:51
2003.11.27
Мне нужно написать номеронабератель, установил


1-89817
hawkins
2003-11-16 07:09
2003.11.27
Не могу установить RxLib для Delphi6


3-89751
space
2003-11-08 00:06
2003.11.27
распространение базы данных на диске


1-89823
TUser
2003-11-17 04:30
2003.11.27
Range check error