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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2011, 20:56   #1
3Dfx
Новичок
Джуниор
 
Регистрация: 23.12.2011
Сообщений: 4
Вопрос sql запрос с переменной в mdb

Подскажите пожалуйста, что не так.. Уже замучился - не работает и всё(
Ошибки не какой не выдаёт, тупо нечего не находит в базе.
Скорее всего не правильно использую переменную в запросе.
тип переменной integer, в базе поле числовое.

Если ввожу так:
ADOQuery1.SQL.Add('SELECT * FROM dvd WHERE god>2000');
ясное дело, всё работает.


Код:
di1:=2000;
begin
try
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM dvd WHERE god>''&di1&''');
ADOQuery1.Active:=True;
except
on e:Exception do
end;
end;

Последний раз редактировалось 3Dfx; 23.12.2011 в 20:59.
3Dfx вне форума Ответить с цитированием
Старый 23.12.2011, 21:10   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
ADOQuery1.SQL.Add('SELECT * FROM dvd WHERE god>:god');
ADOQuery1.SQL.Parameters.ParamByName('god').Value:=di1;
ADD

Ну, извините. Описки у каждого бывают.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 23.12.2011 в 22:17.
Аватар вне форума Ответить с цитированием
Старый 23.12.2011, 22:12   #3
3Dfx
Новичок
Джуниор
 
Регистрация: 23.12.2011
Сообщений: 4
По умолчанию

Огромное спасибо, натолкнули на правильный вариант)
Код:
ADOQuery1.SQL.Add('SELECT * FROM dvd WHERE god>:di1');
ADOQuery1.Parameters.ParamByName('di1').Value:=di1;
3Dfx вне форума Ответить с цитированием
Старый 26.12.2011, 17:22   #4
3Dfx
Новичок
Джуниор
 
Регистрация: 23.12.2011
Сообщений: 4
По умолчанию

В продолжение этой темы.

Никак не могу написать запрос следующего вида -
есть таблица dvd - в ней есть столбцы год и страна, пытаюсь сделать запрос на последний фильм выпущенный данной странной.
По отдельность запросы выглядят вот так:

поиск по стране заданной стране

Код:
ADOQuery1.SQL.Add('SELECT * FROM dvd WHERE (st LIKE '''+q+''')');
поиск макс года

Код:
ADOQuery1.SQL.Add('SELECT * FROM dvd WHERE god=(SELECT MAX( god )FROM dvd)');
Подскажите пожалуйста, как можно сделать двойной запрос - сначала найти по стране, и уже из них выбрать максимальный год?
3Dfx вне форума Ответить с цитированием
Старый 28.12.2011, 15:50   #5
IliaIT
Форумчанин
 
Аватар для IliaIT
 
Регистрация: 17.03.2009
Сообщений: 977
По умолчанию

а "order by" уже не работает?
выборку делаешь по стране а сортируешь по году. (последняя запись будет максимальный год)
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
IliaIT вне форума Ответить с цитированием
Старый 28.12.2011, 20:20   #6
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

select top 1 * FROM dvd order by god desc;
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подстановка переменной в запрос Pellegrino SQL, базы данных 0 13.10.2011 21:04
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
Запрос к БД с меняющейся переменной Pamparam Общие вопросы C/C++ 14 12.11.2009 19:34
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15