|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.04.2010, 19:21 | #1 |
Пользователь
Регистрация: 06.01.2008
Сообщений: 61
|
Передача значения переменной в Query. SQL
Как правильно такие вещи делаются, я незнаю
Но пишу свое виденья процесса.... есть 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; .... Но необходимого результата не получил |
16.04.2010, 22:21 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
в принципе мыслите правильно.
А какой результат не получили? И давайте код заполнения/вызова Query_SQL_FAM полностью. |
16.04.2010, 22:58 | #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. Причина: уточнил |
17.04.2010, 06:25 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
ясно..
Вы код всё равно не полностью привели, но, ИМХО, я понял, где у Вас ошибка: для того, чтобы параметры вступили в силу, запрос надо закрыть, потом присвоить новое значение параметра и потом запрос открыть: Код:
Он же НЕПРАВИЛЬНЫЙ у Вас!!!! Параметер подставляется, НО! Это же ПАРАМЕТЕР! а не текст запроса!!!!! т.е. Вы получаете такой запрос: Код:
во-вторых, у вас очень плохо со знанием SQL (крайне рекомендую почитать книжки. Например, "классику" М.Грубер -"Понимание SQL") Вкратце, если Вы указали в источнике данных (после ключевого слова FROM ) пять таблиц, значит в связях ( WHERE ... ) должно быть указано минимум четыре реляции, связывающие эти таблицы (или ограничивиющие выбор из каждой таблицы)! Иначе получите перемножение записей всех таблиц! а, конкретно, в Вашем случае нужно как раз таки использовать изменение текста запроса в процессе работы программы! Код:
Последний раз редактировалось Serge_Bliznykov; 17.04.2010 в 06:46. |
17.04.2010, 10:37 | #5 | |
Пользователь
Регистрация: 06.01.2008
Сообщений: 61
|
Цитата:
Чувствовал, что надо весь запрос переписывать, но была надежда Только тогда, наверное, надо еще одну переменную, чтобы не подключать все три таблицы ( ST, SG, SM) а подключать одну, в зависимости от значения переменной? |
|
17.04.2010, 16:37 | #6 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
во-вторых, скорее всего, так Вам и надо сделать... |
|
18.04.2010, 12:12 | #7 |
Пользователь
Регистрация: 06.01.2008
Сообщений: 61
|
Спасибо, теперь все работает!
|
18.04.2010, 22:37 | #8 |
Пользователь
Регистрация: 06.01.2008
Сообщений: 61
|
что-то все перерыл, не могу собразить...
в выше указаном примере, по щелчку на записи в гриде выскакивает форма, это форма состоит из таблицы. В зависимости от подключенной таблицы, в гриде разные столбцы. Как передать гриду параметр Add all fields ? |
18.04.2010, 23:57 | #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 |