Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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]

Потому что ты таким его сделал


Наверх

Титульная страница Поиск, карта сайта Написать письмо