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

Вниз

Cвязанные таблицы (не могу разобраться)...   Найти похожие ветки 

 
_reset   (2002-08-26 10:10) [0]

Что то не могу разобраться (да и времени нету), помогите, плз.
Имеем: две таблицы 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". Почему?


 
Reindeer Moss Eater   (2002-08-26 10:29) [1]

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


 
_reset   (2002-08-26 10:49) [2]

Это как же я его сделал Read Only? Ежели имеется ввиду поле ID, то я его и просто Long Integer делал - результат тот же...


 
_reset   (2002-08-26 12:23) [3]

хм..., немного непонятно написал:

Возникает следующая ситуация: ежели "забить" данные в базу в DDesctop - вся подчиненность при запуске формы в дельфи нормально просматривается

однако ежели попробовать в подчиненной таблице при запуске формы в дельфи, в DBGrid2 добавить новую запись возникает ошибка: "Index is Read Only". Почему?

!Если таблицы в дельфях не связывать, то данные нормально вводяться в оба грида.



 
Lola ©   (2002-08-26 13:30) [4]

А если на момент добавления отключить связь между таблицами?
Я в таких случаях использую другой компонент TTable без связи главная подчиненная.


 
_reset   (2002-08-26 14:26) [5]

"Каличный" выход нашел, но не нравиться он мне.

Меняем 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?


 
Lord Warlock ©   (2002-08-26 14:35) [6]

Все дело в целостности таблиц Парадокса. Для постоянной безглючной работы в таблице обязательно нужен PrimaryKey, чего у тебя не было в первом варианте. Пусть это поле (ID во второй таблице) ничего не делает, но оно нужно обязательно.


 
_reset   (2002-08-26 14:48) [7]

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

выдает ту же ошибку, дело именно в индексе подчиненной таблицы.



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

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

Наверх




Память: 0.48 MB
Время: 0.011 c
3-50583
mas_alexey
2002-08-23 19:11
2002.09.16
DBtext


4-51041
Igor_Z
2002-07-21 22:53
2002.09.16
Как отключить запуск приложения при двойном клике по иконке ???


6-50881
Марина
2002-07-09 09:44
2002.09.16
Использование FastNet


3-50577
RDA
2002-08-23 15:56
2002.09.16
Пара вопросов.


3-50581
Link
2002-08-23 14:03
2002.09.16
Отбор по дате