Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Значение поля в параметре TQuery 
V
    Опции темы
Cashey
Дата 10.3.2009, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

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



Как сделать динамический запрос, что бы в условие Where фигурировало значение поля родительской таблицы?


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
vovk
Дата 10.3.2009, 17:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



А можно поподробнее и желательно с примером. А то не понятно что именно нужно.
PM MAIL   Вверх
pseud
Дата 10.3.2009, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

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



Цитата(vovk @  10.3.2009,  17:32 Найти цитируемый пост)
А можно поподробнее и желательно с примером. А то не понятно что именно нужно.

кащеюшка, просим, дай нам больше вводных данных. так мы не справимся.
 smile 


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Cashey
Дата 10.3.2009, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

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



SELECT * FROM Table WHERE Table.ID = Table2.ID2, где Table2.ID2 значение поля (конкретного поля конкретной записи), которое при перемещение по записям в таблице Table2 будет каждый раз различно.
или не понятно?


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
former
Дата 10.3.2009, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

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



Код

SELECT * FROM Table,Table2  WHERE Table.ID = Table2.ID2


Если я правильно тебя понял.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Cashey
Дата 10.3.2009, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

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



в общем решается такой конструкцией
в AfterScroll родительской таблы прописывается:

Код

if DM1.QueryName.Active then DM1.QueryName.Close;
DM1.QueryName.Parameters[0].Value :=DM1.TableName.FieldByName('FieldName').AsInteger;
DM1.QueryName.Open;




--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
vovk
Дата 10.3.2009, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

SELECT * FROM Table, Table2 WHERE Table.ID = Table2.ID2

Так чтоли?smile
Или имеется в виду что в этой второй таблице будет выбрано какоето одно значение? 


former я честно не списывал smile 

Это сообщение отредактировал(а) vovk - 10.3.2009, 18:13
PM MAIL   Вверх
Cashey
Дата 10.3.2009, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

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



Цитата(former @  10.3.2009,  19:06 Найти цитируемый пост)
код SQL1:SELECT * FROM Table,Table2  WHERE Table.ID = Table2.ID2highlightSyntax('sql_GFlM2M','sql');Если я правильно тебя понял.

нет, не правильно. в этом случае в результирующую выборку попадут все значения, соответсвюущие ВСЕМ записям в таблице Table2, т.е. декартово произведение

Добавлено через 1 минуту и 36 секунд
точнее не декартово. но все равно это не то совсем


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
former
Дата 10.3.2009, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

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



Код

SELECT * FROM Table WHERE ID = :Param


Может тогда так?

Цитата

former я честно не списывал smile 


 smile 

Это сообщение отредактировал(а) former - 10.3.2009, 18:14


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
vladimir74
Дата 10.3.2009, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



может что то типа этого?
Код

myquery1.sql.text := 'SELECT * FROM Table WHERE Table.ID = ' + myquery2.fieldbyname('id').asstring;
myquery1.active := True;

вариаций на тему тут много, через параметры и т.д. и т.п. например...
Код

myquery1.sql.add := 'SELECT * FROM Table WHERE Table.ID = :ID2';
myquery1.paramByName('id2').asstring := myquery2.fieldbyname('id').asstring;

--------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ.
PM MAIL   Вверх
pseud
Дата 10.3.2009, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

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



Цитата(former @  10.3.2009,  18:12 Найти цитируемый пост)
Может тогда так?

или так
Код

SELECT * FROM Table2  WHERE Table2.ID2 = :Param



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
former
Дата 10.3.2009, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

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



pseud,  smile  smile 

Код

SELECT * FROM Table2  WHERE ID2 = :Param




Это сообщение отредактировал(а) former - 10.3.2009, 18:24


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
vladimir74
Дата 10.3.2009, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Cashey @  10.3.2009,  16:07 Найти цитируемый пост)
в общем решается такой конструкцией
в AfterScroll родительской таблы прописывается:

а может проще воспользоваться MasterDetail соединением?

Добавлено через 5 минут и 40 секунд
former, pseud признайтесь вы же сидите паралельно в аське и договариваитесь что писать...  smile  smile 
--------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ.
PM MAIL   Вверх
former
Дата 10.3.2009, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

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



vladimir74, нет мы сидим за соседними компами. smile 

Просто не ясен каким должен быть конечный результат. Вот и приходится вариациями оперировать.

Это сообщение отредактировал(а) former - 10.3.2009, 18:34


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Cashey
Дата 11.3.2009, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

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



Цитата(former @  10.3.2009,  19:23 Найти цитируемый пост)
SELECT * FROM Table2  WHERE ID2 = :Param

пробовал. так не работает, он видимо принимает в параметре значение первой записи на момент срабатывания запроса и при меремещении на другую не работает.


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Frees
Дата 11.3.2009, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

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



Cashey, 
Код


SELECT * FROM Table2  WHERE ID2 = :MAS_ID1


у quwery с таким запросам укажи еще dataSurce главной таблицы у нее должно быть поле ID1 по которому они связаны

Это сообщение отредактировал(а) Frees - 11.3.2009, 10:30


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
former
Дата 11.3.2009, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

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



Цитата(Frees @  11.3.2009,  10:29 Найти цитируемый пост)
Выделить всёкод SQL
1:SELECT * FROM Table2  WHERE ID2 = :MAS_ID1


Цитата(pseud @  10.3.2009,  18:22 Найти цитируемый пост)
Выделить всёкод SQL
1:SELECT * FROM Table2  WHERE Table2.ID2 = :Param


Frees, а какая разница?




--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Frees
Дата 11.3.2009, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

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



Цитата(former @  11.3.2009,  13:27 Найти цитируемый пост)
Frees, а какая разница?

в моем примере будет браться значение поля ID1 из главной таблицы и передаваться в параметр, это будут делать сами компоненты!

Добавлено через 41 секунду
и это будет происходить при смене текущей записи в главной таблице


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
former
Дата 11.3.2009, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

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



Cashey, что тебе в конечном счете нужно получить? Какую выборку сделать?


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Cashey
Дата 12.3.2009, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

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



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


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Frees
Дата 12.3.2009, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

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



Цитата(Cashey @  12.3.2009,  13:56 Найти цитируемый пост)
такое наверное действительно не сделать...

сделать... см. выше


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
former
Дата 12.3.2009, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

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



Цитата(Cashey @  12.3.2009,  11:56 Найти цитируемый пост)
силами компонентов такое наверное действительно не сделать... 


Ну почему же не сделать?

Цитата(vladimir74 @  10.3.2009,  18:24 Найти цитируемый пост)
воспользоваться MasterDetail соединением?





--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


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

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

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


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

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


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

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


 




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


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

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