Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.01.2011, 19:27
Аватар для NightVamp
NightVamp NightVamp вне форума
Прохожий
 
Регистрация: 03.01.2011
Адрес: г. Улан-Удэ
Сообщения: 18
Репутация: 10
По умолчанию Межтабличные связи

Собственно, буду кратка - как создать связи между таблицами, например 1:1 или один ко многим. Я имею ввиду с помощью какого компонента? Поподробнее, пожалуйста, напишите! Тип таблиц - dBase IV, создать связи нужно для базы данных, не для приложения. Читала, что компонент MasterSource делает связи, но тогда как с ним работать, если так?
Ответить с цитированием
  #2  
Старый 04.01.2011, 01:01
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Вообще, создать физическую связь для таблиц dBase невозможно (на сколько я помню), т.к. данный функционал не поддерживается на уровне БД. Однако, в программе можно настроить компоненты доступа к данным (TTable и TQuery) так, чтобы получить желаемую связь.

Связь создается с помощью свойства MasterSource в подчиненном компоненте. Там при установке значения должен появиться диаложек, где указываются поля для связи.
Ответить с цитированием
  #3  
Старый 04.01.2011, 14:17
Аватар для NightVamp
NightVamp NightVamp вне форума
Прохожий
 
Регистрация: 03.01.2011
Адрес: г. Улан-Удэ
Сообщения: 18
Репутация: 10
По умолчанию

А можно поподробнее, пожалуйста, про настройку компонентов Table и Ouery? Знаю, что как-то можно создать связь через компонент Table по принципу главная-подчинённая таблицы, но как точно? Если знаете, и не трудно, по шагам можете написать? Благодарна за ответ!
Ответить с цитированием
  #4  
Старый 04.01.2011, 14:49
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Допустим вы подключаетесь к DBF через BDE.
1. Добавляете на форму компоненты Table1 и Table2
2. Добавляете на форму компонент DataSource1
Допустим Table1 у вас главная, а Table2 подчиненая, тогда:
Код:
DataSource1.DataSet := Table1;
Table2.MasterSource := DataSource1;
Table2.MasterFields := 'ID'; // ID - это ключевое поле мастер-таблицы
Table2.IndexFieldNames := 'MasterID'; // MasterID - это поле из детайл-таблицы по которому осуществялется связь с мастер-таблицей

Вот собственно и все. Теперь при смене записи в мастер-таблице будет автоматом выбраны подходящие записи из детайл-таблицы
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 04.01.2011, 17:45
Аватар для NightVamp
NightVamp NightVamp вне форума
Прохожий
 
Регистрация: 03.01.2011
Адрес: г. Улан-Удэ
Сообщения: 18
Репутация: 10
По умолчанию

А можно ли так связать таблицы находящиеся на разных формах? Дело в том, что у меня концептуальная модель с бинарными связями и нет таблиц с общими полями соответсвенно...Т.е. на форме с главной таблицей поставить Table1 и DataSource1, а на форме с подчинённой таблицей поставить Table2, который будет видеться как Table1, т.к он на другой форме..? И где писать код, в смысле надо просто писать его во вкладке Unit, если не ошибаюсь?
Ответить с цитированием
  #6  
Старый 04.01.2011, 20:06
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Можно, достаточно в секции Uses упомянуть имя модуля с таблицей, но обычно так не делают. В Дельфи есть специальный вид формы Data Module в котором и размещают все компоненты доступа к БД, а уже потом подключают его к нужным формам по той-же схеме, что я упомянул вначале.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:08.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025