![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 06.01.2008
Сообщений: 61
|
![]()
Как правильно такие вещи делаются, я незнаю
![]() Но пишу свое виденья процесса.... есть Ouery в свойстве SQL запись ........ General.ID= :PR ........ Мне надо, чтобы по нажатию кнопки в программе, параметр PR принимал определенное значение. (становилось так: General.ID= необходимое значение ) Реализовал так: procedure TGeneralForm.Button1Click(Sender: TObject); var xPR : string; begin xPR := 'необходимое значение'; .... DataModule2.Query_SQL_FAM.Parameter s.ParamByName('PR').Value:= xPR; .... Но необходимого результата не получил ![]() |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
в принципе мыслите правильно.
А какой результат не получили? И давайте код заполнения/вызова Query_SQL_FAM полностью. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 06.01.2008
Сообщений: 61
|
![]()
Это содержимое SQL в Query:
SELECT* FROM Главная, ST, SG, SM, Группы WHERE Главная.Фамилия LIKE :Fam AND Группы.Key_group=Главная.LinkGroup AND Главная.GeneralID= :PR в самой программе код на double click по записи в DB Grid: var xPR : string; begin if DataModule2.GroupTable.Fields[2].AsString ='значение' then begin xPR := 'ST.LinkGeneral'; else .... DataModule2.Query_SL_FM.Parameters. ParamValues['PR']:= xPR; .... и т.д. Смысл в том, что Grid содержит записи из разных таблиц, и по двойному щелчку на определенной записи выскакивает некая сводная форма. У меня сейчас эта форма выскакивает, но пустая. Если просто в Query написать FROM Главная, ST, SG, SM, Группы WHERE Главная.Фамилия LIKE :Fam AND Группы.Key_group=Главная.LinkGroup AND Главная.GeneralID= : ST.LinkGeneral (или SG.LinkGeneral...) то таблицы подключаются и форма заполняется Последний раз редактировалось R11; 16.04.2010 в 23:07. Причина: уточнил |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
ясно..
Вы код всё равно не полностью привели, но, ИМХО, я понял, где у Вас ошибка: для того, чтобы параметры вступили в силу, запрос надо закрыть, потом присвоить новое значение параметра и потом запрос открыть: Код:
Он же НЕПРАВИЛЬНЫЙ у Вас!!!! Параметер подставляется, НО! Это же ПАРАМЕТЕР! а не текст запроса!!!!! т.е. Вы получаете такой запрос: Код:
во-вторых, у вас очень плохо со знанием SQL (крайне рекомендую почитать книжки. Например, "классику" М.Грубер -"Понимание SQL") Вкратце, если Вы указали в источнике данных (после ключевого слова FROM ) пять таблиц, значит в связях ( WHERE ... ) должно быть указано минимум четыре реляции, связывающие эти таблицы (или ограничивиющие выбор из каждой таблицы)! Иначе получите перемножение записей всех таблиц! а, конкретно, в Вашем случае нужно как раз таки использовать изменение текста запроса в процессе работы программы! Код:
Последний раз редактировалось Serge_Bliznykov; 17.04.2010 в 06:46. |
![]() |
![]() |
![]() |
#5 | |
Пользователь
Регистрация: 06.01.2008
Сообщений: 61
|
![]() Цитата:
![]() Чувствовал, что надо весь запрос переписывать, но была надежда ![]() Только тогда, наверное, надо еще одну переменную, чтобы не подключать все три таблицы ( ST, SG, SM) а подключать одну, в зависимости от значения переменной? |
|
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
во-вторых, скорее всего, так Вам и надо сделать... ![]() |
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 06.01.2008
Сообщений: 61
|
![]()
Спасибо, теперь все работает!
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 06.01.2008
Сообщений: 61
|
![]()
что-то все перерыл, не могу собразить...
в выше указаном примере, по щелчку на записи в гриде выскакивает форма, это форма состоит из таблицы. В зависимости от подключенной таблицы, в гриде разные столбцы. Как передать гриду параметр Add all fields ? |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 06.01.2008
Сообщений: 61
|
![]()
вроде нашел. своство: TDBGridColumnsState = (csDefault, csCustomized);
Только где такое свойство у элемента cxDbVerticalGrid ?! |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Передача переменной в EXE | Evgen1503 | Общие вопросы Delphi | 6 | 03.05.2010 15:56 |
sql запрос через Query | Lokos | БД в Delphi | 21 | 03.03.2010 14:38 |
Передача переменной в php | Ruska882009 | PHP | 2 | 23.09.2009 12:57 |
Передача переменной PHP | tsergey | PHP | 4 | 02.06.2009 03:20 |