Главная страница
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
3-89763
ZMaxim
2003-11-07 15:52
2003.11.27
ПОМОГИТЕ ПОЖАЛУЙСТА. Выделенные строки в DBGrid


7-90139
Basil
2003-09-08 18:08
2003.11.27
Помогите спрятать прогу от CTRL+ALT+DEL в NT!


3-89788
IGORYOK
2003-11-06 16:01
2003.11.27
Почему после того как я ввожу Connection String внутри программы


1-89855
Боян Георгиев
2003-11-16 14:33
2003.11.27
Функция Read для стрингов


1-89884
Igg
2003-11-15 18:21
2003.11.27
Использование приложения под другими ОС