Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не могу настроить связь 3х таблиц по ключам 
V
    Опции темы
sanek1990
Дата 20.10.2009, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 19.10.2009

Репутация: нет
Всего: нет



Здравствуйте! Делаю лабу по SQL. Создал БД, в ней 3 таблицы, EMPLOEES POSTS и SECTIONS. Написал приложение для работы с этой БД. так вот в чем вопрос. 
Надо связать таблицу EMPLOEES (она IBTable1 на скринах) и таблицу POSTS(IBTable2)  по полям Post_code = > Code
Post_Code = внешний ключ для IBTable1 EMPLOEES
Code = первичный ключ  для POSTS(IBTable2).
Итак.
user posted image
Далее проверяем = все работает! в таблице EMPLOEES отображаюся только персонал с выбраной должностью
user posted image
user posted image
А вот теперь надо связать таблицу EMPLOEES и таблицу SECTIONS по полям
Section_Code = внешний ключ для IBTable1 EMPLOEES
Code = первичный ключ для SECTIONS
а вот собственно и загвоздка
user posted image
Подскажите пожалуйста как тут быть, а то уже голову сломал! Может что то в корне неправильно делаю?
Вот на всякий пожарный скрпиты SQL по которым содавал таблицы!

Код

create table Employees(
Tab_No Integer Not Null Primary Key,
SurName varChar(20) Not Null,
Name VarChar(15),
Patronymic VarChar(15),
BirthDay Date,
Post_Code Integer Not Null,
Section_No Integer Not Null,
Foreign Key (Post_Code) references posts on delete cascade on update cascade,
Foreign Key (Section_No) references sections on delete cascade on update cascade);


Код

create table Sections (
Code integer not null,
Name varchar(20) not null,
Primary Key (Code));


Код

Create Table Posts (
Code integer not null,
Name varchar(20),
Oklad Numeric(8,2),
Primary Key (Code));



Это сообщение отредактировал(а) sanek1990 - 20.10.2009, 17:25
PM MAIL WWW Skype   Вверх
Gudinya
Дата 20.10.2009, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 2.2.2008

Репутация: 1
Всего: 8



Мой совет, не пользуйся связью через мастерсурс, лучше прописывай все связи вручную, так как это даст большую гибкость и прозрачность производимых действий. 
Т.е. например при действии ончендж в твоей таблицы фильтруется следующая и так далее... по крайней мере при работе с датасетами сложные связи только так и можно настроить.
PM MAIL ICQ   Вверх
Akella
Дата 20.10.2009, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



sanek1990
картинки ещё большего не мог вставить в сообщения?? smile

Добавлено через 1 минуту и 9 секунд
sanek1990прочитай все закреплённые темы!!
http://forum.vingrad.ru/forum/Vingrad-help-center.html
PM MAIL   Вверх
sanek1990
Дата 20.10.2009, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 19.10.2009

Репутация: нет
Всего: нет



Цитата(Akella @ 20.10.2009,  16:10)
sanek1990
картинки ещё большего не мог вставить в сообщения?? smile

Добавлено @ 16:11
sanek1990прочитай все закреплённые темы!!
http://forum.vingrad.ru/forum/Vingrad-help-center.html

Прошу прощения! smile  действительно не досмотрел немного! Исправил на картинки меньшего размера!

Добавлено через 6 минут и 29 секунд
Цитата

Мой совет, не пользуйся связью через мастерсурс, лучше прописывай все связи вручную, так как это даст большую гибкость и прозрачность производимых действий. 
Т.е. например при действии ончендж в твоей таблицы фильтруется следующая и так далее... по крайней мере при работе с датасетами сложные связи только так и можно настроить.

Знать бы еще как это делать просто у меня в пояснениях к лабораторной написано как делать а там ничего про ручные связи нет...((
PM MAIL WWW Skype   Вверх
Gudinya
Дата 20.10.2009, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 2.2.2008

Репутация: 1
Всего: 8



С interbase дело не имел, но к любому набору данных можно сделать запрос.
Для интербейза есть TIBDataSet, вот и строй таблицы на основе запросов в этих компонентах(по крайней мере я бы так делал)
Когда ты выбираешь какую либо строку в гриде, проиходит смена текущего значения и в твоем набор данных, так вот при этом событии тебе нужно фильтровать другие, зависимые TIBDataSet, запросы в них должны содержать параметры, по которым ты и будешь фильтровать. Как работать с параметрами TIBDataSet должно быть в справке по делфи. Большим помочь вряд ли смогу, потому что как я уже сказал дело с интербез не имел.
PM MAIL ICQ   Вверх
sanek1990
Дата 21.10.2009, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 19.10.2009

Репутация: нет
Всего: нет



Спасибо, понял примерно о чем ты,попыаюсь разобратся с TIBDataSet по справке!
PM MAIL WWW Skype   Вверх
sanek1990
Дата 19.11.2009, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 19.10.2009

Репутация: нет
Всего: нет



тему решил... ошибка не в делфи а в логике построения приложения... для того чтобы сделать три таблицы связанными, необходимо чтобы одна из таблиц не изменялась, то есть эта основная таблица не связана ни с какой другой, сортировки в ней не должно быть. в нее выводятся все записи(например  весь список персонала)  которые есть в БД, и уже при клике на запись в других двух гридах отображаются данные связанные с главной таблицей по ключевым полям.
Вопрос решен.
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0638 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.