Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

связанные таблицы


Страницы:   1 2

Женя ©   (2010-03-12 03:19:00) 

Всем доброй ночи! Помогите пожалуйста новичку решить проблему. Проблема следующая: пытаюсь связать две таблицы с помощью query но неполучается. сам запрос следующий:
select *
from CKBI,telephone
where keylink=key1

Связь в таблицах вообще отсутствует, тоесть таблица с ключевым полем keylink выдает абсолютно все игнорируя условие. Может я что не так делаю? Пожалуйста помогите, заранее благодарен!


Женя   (2010-03-12 18:30:00) [1]

Спасибо))))))))))))


Sergey13   (2010-03-12 16:44:00) [2]

> [28] Женя   (12.03.10 16:28)
> Еще одна просьба, не мог бы ты сбросить ссылки на тему мастер-детальное связывание таблиц.

Легко.

http://www.google.ru/

8-)


Женя   (2010-03-12 16:28:00) [3]

Да, все получилось, огромное спасибо! Еще одна просьба, не мог бы ты сбросить ссылки на тему  мастер-детальное связывание таблиц. Я имею ввиду доступные для понимания простым смертным))


Sergey13   (2010-03-12 15:56:00) [4]

> [26] Женя   (12.03.10 15:30)

:keylink - это параметр, который по идее должен заполняться значением ключевого поля из материнского датасета, который привязан к датасорсу, который у тебя CKBISource. Это мастер-детальное связывание таблиц.
Если материнский датасорс не указывать, то можно в принципе сделать это руками, повесив на событие афтерскролл материнского датасета присваивание значения этому параметру и переоткрытие дочернего датасета.
Не понял - у тебя заработало или нет?


Женя   (2010-03-12 15:30:00) [5]


> Anatoly Podgoretsky ©   (12.03.10 14:45) [25]

Обьясняю, если бы я не хотел понимать что делаю, то разве не проще бы было это сделать заменив компонент query  на компонент table, где кстати все прекрасно работало!
> Sergey13 ©   (12.03.10 14:43) [24]

Обьясните пожалуйста строку:
SQL=select * from telephone WHERE keylink=: keylink
я так понимаю что keylink- переменная, но каким образом в нее передается какое либо значение поля key1? Или этой переменной нужно присваивать значение уже в ходе программы, с помощью команды:
tlfQuery.Parameters.ParamByName('keylink').Value:=CKBIQuery.FieldValues['key1'];


Anatoly Podgoretsky   (2010-03-12 14:45:00) [6]

> Sergey13  (12.03.2010 14:03:21)  [21]

А ему понимать не надо, ему надо выполнить задание.


Sergey13   (2010-03-12 14:43:00) [7]

> [22] Женя   (12.03.10 14:17)

Тогда запрос должен быть такой
tlfquery('DataSource=CKBISource',SQL= select * from telephone WHERE keylink=:keylink)->tlfsource('DataSet=tlfquery')


Женя   (2010-03-12 14:21:00) [8]


> Плохиш ©   (12.03.10 14:01) [20]

Что за методичку вы имеете ввиду?


Женя   (2010-03-12 14:17:00) [9]


> Sergey13 ©   (12.03.10 14:03) [21]

В таблице CKBI (ключевое поле key1,  счетчик) хранятся данные людей (ФИО, год рожденья, и т.д.). Но поскольку номеров телефонов у одного человека может быть несколько, я создаю еще одну таблицу telephone, где в строки поля keylink прописываю соответствующие значения поля key1, для осуществления фильтрации номеров текущего человека с индексом key1. И затем хочу отобразить эти данные с помощью двух гридов. Тоесть например при переключении абонента в левом гриде, в правом отображались номера его телефонов


Sergey13   (2010-03-12 14:03:00) [10]

> [19] Женя   (12.03.10 13:51)

так и надо сказать ему WHERE telephone.keylink =1

Ты бы задачу лучше описал свою. А то чувствуется, что ты не понимешь что делаешь.


Плохиш   (2010-03-12 14:01:00) [11]


> Женя   (12.03.10 13:51) [19]
>
>

В вашей методичке это раздел, в названии которого упоминаются слова Master/Detail.


Женя   (2010-03-12 13:51:00) [12]


> Sergey13 ©   (12.03.10 13:04) [17]

а что нужно прописать, чтобы выдало не произведение, а например если курсор в CKBIquery указывает на строку где key1=1(при условии что 1 - индекс который не повторяется), то выдало в соседнем гриде все строки где поле keylink=1 (компонента tlfquery)?


Anatoly Podgoretsky   (2010-03-12 13:35:00) [13]

> Женя  (12.03.2010 12:20:12)  [12]

Под алиасом понимается псевдоним, просто не переведено.


Sergey13   (2010-03-12 13:04:00) [14]

> [15] Женя   (12.03.10 12:36)
> я так понимаю должно выдать все строки где поле telephone.keylink = CKBI.key1
Должно выдать произведение (количественно) всех записей одной таблицы и всех другой. Т.е. если в каждой таблице есть 1 запись с key1=1, а в другой 10 записей с keylink=1, то выдаст 10 (10*1) записей в результирующем наборе при WHERE telephone.keylink = CKBI.key1.


Плохиш   (2010-03-12 12:38:00) [15]


> Женя   (12.03.10 12:36) [15]

goto [7]


Женя   (2010-03-12 12:36:00) [16]


> Sergey13 ©   (12.03.10 12:23) [13]

> Это как? Число похоже на другое?

WHERE telephone.keylink = CKBI.key1
Да, при совпадении числа поля key1 с полем keylink, я так понимаю должно выдать все строки где поле telephone.keylink = CKBI.key1. Если ошибаюсь, то подскажите пожалуйста как сделать правильно, и подскажите пожалуйста, как красиво писать код?


Ega23   (2010-03-12 12:30:00) [17]

Ещё раз, в Select * fromуберите звёздочку. Либо у ней алиас таблицы поставьте.


Sergey13   (2010-03-12 12:23:00) [18]

> [9] Женя   (12.03.10 12:12)
> WHERE telephone.keylink like CKBI.key1

Это как? Число похоже на другое?

> [10] Amir   (12.03.10 12:12)

Что из запроса
> [0] Женя   (12.03.10 03:19)
тебе не понятно?


Женя   (2010-03-12 12:20:00) [19]

Прошу прощение за возможно глупый вопрос,но что подразумевается под алиасом?


Плохиш   (2010-03-12 12:16:00) [20]


> Женя   (12.03.10 12:12) [9]

И как это вяжется с запросом из > Женя   (12.03.10 03:19)  


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо