![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Cвязанные таблицы (не могу разобраться)... [D5, Paradox]
_reset © (2002-08-26 10:10:00)Что то не могу разобраться (да и времени нету), помогите, плз.
Имеем: две таблицы Paradox
tb1.db
ID - Autoincrement, Key
Name - Alpha
tb2.db
Master_id - Long Integer
Input_Date - Date
во второй таблице Secundary Index master_id_idx (т. е. связь один ко многим).
Кидаю на форму соотвественно по две TTable (1 и 2) и DataSource (1 и 2). Во второй таблице указываю:
Table2.MasterSource = DataSource1
Table2.MasterField = ID
Table2.IndexName = master_id_idx
Кидаю два DBGrid.
Возникает следующая ситуация: ежели "забить" данные в базу в DDesctop - вся подчиненность нормально просматривается, однако ежели попробовать в подчиненной таблице добавить новую запись возникает ошибка: "Index is Read Only". Почему?
_reset (2002-08-26 14:48:00) [1]To: Lord Warlock © (26.08.02 14:35)
нет, ты не прав, я только что проверил!
если сделать:
ID - Autoincrement, Key
Master_id - Long Integer
Input_Date - Date
оставляем Secundary Index master_id_idx по полю Master_id
т.е. PrimaryKey по ID есть, а по мастер ID - только индекс (Key убрали, он блин, ведь и не нужен!)
и
Table2.MasterSource = DataSource1
Table2.MasterField = ID
Table2.IndexName = master_id_idx
выдает ту же ошибку, дело именно в индексе подчиненной таблицы.
Lord Warlock (2002-08-26 14:35:00) [2]Все дело в целостности таблиц Парадокса. Для постоянной безглючной работы в таблице обязательно нужен PrimaryKey, чего у тебя не было в первом варианте. Пусть это поле (ID во второй таблице) ничего не делает, но оно нужно обязательно.
_reset (2002-08-26 14:26:00) [3]"Каличный" выход нашел, но не нравиться он мне.
Меняем tb2
ID - Autoincrement, Key
Master_id - Long Integer, Key
Input_Date - Date
Secundary Index master_id_idx убиваем (он теперь нафиг не нужен).
Во второй таблице указываем:
Table2.MasterSource = DataSource1
Table2.MasterField = ID
Table2.IndexFieldName = master_id
работает, блин, без всяких доп. таблиц и т.п.!
Однако! Мастера! Вопрос, все таки что за ерунда вылазит в первом варианте? Какой у меня индекс Read Only?
Lola (2002-08-26 13:30:00) [4]А если на момент добавления отключить связь между таблицами?
Я в таких случаях использую другой компонент TTable без связи главная подчиненная.
_reset (2002-08-26 12:23:00) [5]хм..., немного непонятно написал:
Возникает следующая ситуация: ежели "забить" данные в базу в DDesctop - вся подчиненность при запуске формы в дельфинормально просматривается
однако ежели попробовать в подчиненной таблице при запуске формы в дельфи, в DBGrid2добавить новую запись возникает ошибка: "Index is Read Only". Почему?
!Если таблицы в дельфях не связывать, то данные нормально вводяться в оба грида.
_reset (2002-08-26 10:49:00) [6]Это как же я его сделал Read Only? Ежели имеется ввиду поле ID, то я его и просто Long Integer делал - результат тот же...
Reindeer Moss Eater (2002-08-26 10:29:00) [7]Потому что ты таким его сделал