Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 03.05.2009, 15:56   #21
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

В добавление к посту №14. Планировал сделать такую связь с таблицами:
table_infa <-> table_marks по ID
table_marks <-> table_critery по ID_Predmeta
table_critery <-> table_infa по ID
table_critery <-> table_predmety по ID_Predmeta
table_period_1 <-> table_infa по ID
table_period_1 <-> table_chetverty_1 по ID_Chetverty_1
table_period_2 <-> table_infa по ID
table_period_2 <-> table_chetverty_2 по ID_Chetverty_2
Так вроде получаются, что все таблицы связаны. Или нет?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума
Старый 03.05.2009, 20:11   #22
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Сделал исходник и таблицы.
Всего таблиц 5 : PersonalInfo, Predmet, Criteria,Chetvert, CurrentYear
Самое уникальное поле как я понял является criteria (там Ko, dvoek и так далее), через нее и будем делать связь с другими таблицами через индексы Id других таблиц.
А потом в запросе примерно пишется что в исходнике в Query1.SQL;
На мой взгляд при этом избыточность будет меньше.
Сначала в базе вводятся фамилии. Потом выбираются поля текущими фамилии, года, четверти, предмета. и их Id заносятся в критерии.
Пока что на первый взгляд у меня такое представление связи таблиц.

---------------------////////////////
Добавлю так же что запросы в данном случае легче писать через SQL Builder (правой кнопкой на Query), а потом уже редактировать получившийся запрос (там путь прописывать относительный, а не абсолютный и т.д.)
Вложения
Тип файла: rar PersonalInfo2.rar (16.2 Кб, 10 просмотров)
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.

Последний раз редактировалось ArtInt; 04.05.2009 в 12:02.
ArtInt вне форума
Старый 08.05.2009, 12:47   #23
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Злость

Народ, объясните мне одну вещь. Когда я делаю связь по ID(оба поля имеют тип N, главная таблица - infa) через Master Source двух таблиц infa(ID,ФАМИЛИЯ,ИМЯ,ОТЧЕСТВО) и period(ID,Chetvert,ГОД), то у меня в списке, где я должен по идее выбрать в списке полей дочерней таблице поле ID для связи с главной таблицей, нет этого самого поля. Почему? Если сделать в дочерней таблице поле ID ключевым (*), то я не могу добавлять и редактировать данные, а если не делаю ключевым, то не отображается поле в списке. Почему на примере двух таблиц из папки Delphi customer и order, все работает, а у меня нет (. В чем может быть моя проблема??
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума
Старый 08.05.2009, 14:37   #24
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Ты уверен, что правильно организовываешь связь? Когда организуется связь мастер-подчиненный, то id (автоинкрементное (+))-> IdInfa(целочисленное(N).
Во второй таблице где idInfa для него делаешь Secondary Index (с любым названием) и уже потом в дельфи выбираешь Мастер Id (автоинкрементное) - IdInfaSecondaryIndex (типа N).
Где то примерно так, и по моемому Id должно быть ключевым.(*)
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума
Старый 08.05.2009, 14:48   #25
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Сообщение от ArtInt Посмотреть сообщение
Когда организуется связь мастер-подчиненный, то id (автоинкрементное (+))-> IdInfa(целочисленное(N).
Автоикриментное в главной таблице, а целочисленное в дочерней?
Цитата:
Сообщение от ArtInt Посмотреть сообщение
Где то примерно так, и по моемому Id должно быть ключевым.(*)
ключевым только в главной таблице?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума
Старый 08.05.2009, 14:55   #26
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Да, потому что значения счетчика из первой таблицы заносятся во вторую, именно по этому данные строчки и находятся.
Id - ключевое в первой таблице. А во второй просто есть другое ключевое автоинкрементное поле, можешь назвать его тоже Id, но оно не используется для связи, для связи используешь IdInfo для которого мы делали вторичный индекс.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума
Старый 08.05.2009, 15:09   #27
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Такие будут поля в таблицах и так будет связь осуществляться?
Изображения
Тип файла: jpg 2.JPG (15.3 Кб, 116 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума
Старый 08.05.2009, 16:32   #28
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Да, такие, потом только в Дельфи в дочерней таблице выбираешь MasterSource, и там связываешь первичный индекс Id первой таблицы(главной) с вторичным индексом IdInfoSecondaryIndex. И все, они должны быть связаны между собой.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума
Старый 08.05.2009, 17:20   #29
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Сделал поля, сделал вроде связь таблиц, поле ID в главной таблице *. Но сейчас когда указываю связь IDInfa -> ID, то появляется типа ошибка: "Field index out of range". Что это значит? Далее, когда нажиммаю ОК, то это сообщение исчезает. Я запускаю программу, вношу данные в главную таблицу. Заносятся вроде без проблем. Но когда я нажимаю на кнопку, чтобы занести данные в дочернюю таблицу, то появляется ошибка: "Index is read only", а в коде внесения данных выделяет строку кода, которая показана на скриншоте. В дочернюю таблицу заносится только первая строчка. В чем дело? :'(
Изображения
Тип файла: jpg 3.jpg (45.2 Кб, 145 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума
Старый 08.05.2009, 17:31   #30
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Никакие присваивания полю Id делать нельзя так как оно автоинкрементное...Оно автоматически увеличивается на 1 при создании новой записи и предназначено только для чтения.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.

Последний раз редактировалось ArtInt; 08.05.2009 в 17:34.
ArtInt вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Связь таблиц в Database Desctop Sergius X БД в Delphi 0 22.04.2009 16:53
Связь с кучей dbf файлов (таблиц) через OLEDB через UNION ALL Sasha811 SQL, базы данных 0 01.01.2009 14:04
Связь таблиц в Delphi adinadin111 БД в Delphi 3 10.07.2008 14:50
связь таблиц в локальной БД IGREK БД в Delphi 3 30.06.2008 19:46
Связь таблиц БД kaa БД в Delphi 5 18.09.2007 18:29