Форум: "Базы";
Текущий архив: 2002.09.16;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c