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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2009, 13:55   #1
andirock2112
Пользователь
 
Аватар для andirock2112
 
Регистрация: 07.04.2009
Сообщений: 35
По умолчанию Связь многие-ко-многим

Здравствуйте!

Кто-нибудь объясните, пожалуйста, доходчиво, как можно в Delphi организовать связь между таблицами (Paradox) многие-ко-многим? Или киньте ссылочку, где это уже описано (только подробно, для начинающих)
Это я... просто я.
А здесь моя подпись
andirock2112 вне форума Ответить с цитированием
Старый 12.04.2009, 11:14   #2
andirock2112
Пользователь
 
Аватар для andirock2112
 
Регистрация: 07.04.2009
Сообщений: 35
По умолчанию

Хм, неужели никто не знает?
Это я... просто я.
А здесь моя подпись
andirock2112 вне форума Ответить с цитированием
Старый 12.04.2009, 13:46   #3
KingOfNothing
Пользователь
 
Регистрация: 06.02.2009
Сообщений: 89
По умолчанию

Если не ошибаюсь связь многие-ко-многим реализуется с помощью 3 таблиц например.
Код:
Table A
id     A
1     a1
2     a2
Код:
Table B
id      B
1      b1
2      b3
Код:
Table BC
id   A   B
1   1    1
2   2    1
3   2    2
Собственно, третья таблица - многие-ко-многим
Если вдруг захотите сказать мне спасибо - воспользуйтесь кнопкой "Добавить отзыв"
KingOfNothing вне форума Ответить с цитированием
Старый 12.04.2009, 13:53   #4
andirock2112
Пользователь
 
Аватар для andirock2112
 
Регистрация: 07.04.2009
Сообщений: 35
По умолчанию

KingOfNothing, да, насчет 3 таблиц я знаю. Проблема в том, что до этого я создавала связи в Delphi при помощи вкладки Diagram модуля данных. Но связь многие-ко-многим там реализовать не получается даже с использованием 3 таблицы. Я читала, что это можно как-то кодом прописать... вот собственно это мне бы и хотелось узнать
Это я... просто я.
А здесь моя подпись
andirock2112 вне форума Ответить с цитированием
Старый 12.04.2009, 14:03   #5
KingOfNothing
Пользователь
 
Регистрация: 06.02.2009
Сообщений: 89
По умолчанию

Я не знаю про диаграммы в делфи, но если там есть возможность выбрать данные с помощью SQL, то работайте с этими таблицами с помощью SQL.
Если вдруг захотите сказать мне спасибо - воспользуйтесь кнопкой "Добавить отзыв"
KingOfNothing вне форума Ответить с цитированием
Старый 12.04.2009, 14:10   #6
andirock2112
Пользователь
 
Аватар для andirock2112
 
Регистрация: 07.04.2009
Сообщений: 35
По умолчанию

Ну тогда встречный вопросик: а как это сделать с помощью SQL?
Это я... просто я.
А здесь моя подпись
andirock2112 вне форума Ответить с цитированием
Старый 12.04.2009, 14:21   #7
KingOfNothing
Пользователь
 
Регистрация: 06.02.2009
Сообщений: 89
По умолчанию

Но я ведь не знаю, что нужно сделать - и вообще не очень понимаю, что значит реализовать связь, она либо есть между данными, либо нет. С помощью SQL можно выбрать любые нужные данные.
Если вдруг захотите сказать мне спасибо - воспользуйтесь кнопкой "Добавить отзыв"
KingOfNothing вне форума Ответить с цитированием
Старый 12.04.2009, 14:33   #8
andirock2112
Пользователь
 
Аватар для andirock2112
 
Регистрация: 07.04.2009
Сообщений: 35
По умолчанию

Эээ... ну ладно. Спасибо.
Это я... просто я.
А здесь моя подпись
andirock2112 вне форума Ответить с цитированием
Старый 12.04.2009, 15:57   #9
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Насколько я читал в литературе для Paradox и Access таблиц в Delphi такие связи нелегко сделать автоматически. Поэтому по личному опыту приходится их делать действительно вручную, а потом через запрос выводит на сетку. Как было уже сказано ранее создаются три таблицы (постараюсь объснить на программе которую делаю сейчас) например:
DateDobav(Kod,DateDobav)
InfoFile(Kod,Caption,NameFile,KodDa teDobav,KodPath)
Path(Kod,Path);
Связующими полями здесь явлются KodDateDobav и KodPath, в которые ручным способом при необходимости вносится инфа из поля DateDobav.Kod в InfoFile.KodDateDobav и из Path.Kod в InfoFile.KodPath

Потом используя Query составляется примерно такой запрос:
select Caption,NameFile
from InfoFile,Path
where InfoFile.KodPath=Path.Kod

Примерно так, если кто то знает как это лучше сделать поделитесь......
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 12.04.2009, 20:34   #10
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

этим кодом ты как раз и не показал связь многие-ко-многим
зачем-то объединил 2 таблицы, а инфу вывел только из первой
Код:
select Caption,NameFile
from InfoFile,Path
where InfoFile.KodPath=Path.Kod
а нужно хотя бы так
Код:
select 
    i.Caption,
    i.NameFile,
    d.DateDobav,
    p.Path 
from 
    InfoFile i,
    Path p,
    DateDobav d
where 0=0
  and i.KodPath = p.Kod
  and i.KodDate = d.Kod
soleil@mmc вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многие ко многим ("")(Э_Є)("") БД в Delphi 1 12.03.2009 01:18
2 листа. 2 массива данных. Совмещение с отношением многие к одному. Jenya Microsoft Office Excel 3 13.08.2008 06:24
Хелп!!!Многие компоненты в т.ч. DelphiX не компилируются! NNN Компоненты Delphi 4 29.04.2008 16:35
Связь с БД Elena БД в Delphi 4 03.05.2007 16:08