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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2009, 16:30   #1
Tomatos
Пользователь
 
Регистрация: 29.05.2009
Сообщений: 31
По умолчанию Параметрический запрос

Здравствуйте

Подскажите как сделать параметрический запрос, где параметр принимает два числа

Например:

Select * From Table
Where REGNUMB IN (:CODE)

Query1.ParamByName('CODE').AsString := Edit1.text;

Вот мне нужно что бы в качестве параметра CODE было значение 3, 4
Tomatos вне форума Ответить с цитированием
Старый 26.08.2009, 16:41   #2
havok
Пользователь
 
Аватар для havok
 
Регистрация: 24.08.2009
Сообщений: 42
По умолчанию

не проще?
Код:
query.sql.add('Select * From Table Where REGNUMB IN ['+ Edit1.text+']');
и пишите в edit хоть 1,2,3,4,5,6,7,8,9
icq 580047636 You're WELCOME!!!

Последний раз редактировалось havok; 26.08.2009 в 16:44.
havok вне форума Ответить с цитированием
Старый 26.08.2009, 17:53   #3
Tomatos
Пользователь
 
Регистрация: 29.05.2009
Сообщений: 31
По умолчанию

Тогда, может быть, сразу в запросе указать
Select * From Table
Where REGNUMB IN (Edit1.text) ?
Tomatos вне форума Ответить с цитированием
Старый 26.08.2009, 18:35   #4
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от Tomatos Посмотреть сообщение
Тогда, может быть, сразу в запросе указать
Select * From Table
Where REGNUMB IN (Edit1.text) ?
не проще
потому что так работать не будет

а здесь все-таки круглые скобочки
Код:
query.sql.add('Select * From Table Where REGNUMB IN ('+ Edit1.text+')');
а чтобы передавать параметром весь список ИН нужно заюзать компоненты, которые умеют работать с макросами
soleil@mmc вне форума Ответить с цитированием
Старый 27.08.2009, 16:00   #5
Tomatos
Пользователь
 
Регистрация: 29.05.2009
Сообщений: 31
По умолчанию

Спасибо, а еще подскажите как это можно организовать: "а чтобы передавать параметром весь список ИН нужно заюзать компоненты, которые умеют работать с макросами" более подробно
Tomatos вне форума Ответить с цитированием
Старый 27.08.2009, 16:57   #6
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

для этого нужно юзать компоненты, например, Jedi (Rx - зависит от версии дельфи), ODAC (+ FIBPlus - не помню умеют ли они с макросами работать)

и дальше все как обычно:
- кидаем компонент на форму или создаем его в динамике
- выбираем символ предшествующий названию макроса (по умолчанию % или &)
- добавляем запрос с макросом
например такой (можем передать туда целое выражение)
Код:
Select * 
From Table 
Where 0=0
  and %CODE
далее зполняем значение макроса
Код:
Query1.MacroByName('CODE').Value := format('REGNUMB IN (%s)', [Edit1.Text]);
soleil@mmc вне форума Ответить с цитированием
Старый 27.08.2009, 20:57   #7
reboot
 
Регистрация: 27.08.2009
Сообщений: 9
По умолчанию

у меня вопрос немного другого плана.

есть запрос в аксессе, уже принимающий два параметра типа дата.

как передать эти параметры из дельфи?

такого плана алгоритм не работает.

Код:
    Query.Parameters.AddParameter();
    Query.Parameters[0].Name:='start_date';
    Query.Parameters.ParamByName('start_date').Value:=DatePeriodStart.DateTime;
    Query.Parameters.AddParameter();
    Query.Parameters[1].Name:='end_date';
    Query.Parameters.ParamByName('end_date').Value:=DatePeriodEnd.DateTime;
использую Delphi 6, TADOQuery.

Последний раз редактировалось reboot; 27.08.2009 в 21:48. Причина: так надо.
reboot вне форума Ответить с цитированием
Старый 27.08.2009, 22:29   #8
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Код:
 Query.Parameters.ParamByName('start_date').Value:=DatePeriodStart.DateTime;
    Query.Parameters.ParamByName('end_date').Value:=DatePeriodEnd.DateTime;
soleil@mmc вне форума Ответить с цитированием
Старый 27.08.2009, 22:57   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

когда-то помогал тут на форуме решить похожую задачу...
Тогда задача решалась через принудительное задание
типа параметра перед присвоением значения:
Код:
Query.Parameters.ParamByName('start_date').DataType := ftDateTime;
Query.Parameters.ParamByName('start_date').Value:=DatePeriodStart.DateTime;
Query.Parameters.ParamByName('end_date').DataType := ftDateTime;
Query.Parameters.ParamByName('end_date').Value:=DatePeriodEnd.DateTime;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.08.2009, 00:46   #10
reboot
 
Регистрация: 27.08.2009
Сообщений: 9
По умолчанию

спасибо за ответы, но результат остался тот же: слишком мало параметров. Требуется два.

не вдупляю вообще как быть тут

выложу более полный листинг:

Код:
    Query.Close();
    Query.SQL.Clear();
    Query.SQL.Add('select name,measure,quant_start_tail,sum_start_tail');
    Query.SQL.Add('from turnover order by name asc, measure asc;');
    Query.Parameters.Clear();
    Query.Parameters.AddParameter();
    Query.Parameters[0].Name:='start_date';
    Query.Parameters.ParamByName('start_date').DataType:=ftDateTime;
    Query.Parameters.ParamByName('start_date').Value:=DatePeriodStart.DateTime;
    Query.Parameters.AddParameter();
    Query.Parameters[1].Name:='end_date';
    Query.Parameters.ParamByName('end_date').DataType:=ftDateTime;
    Query.Parameters.ParamByName('end_date').Value:=DatePeriodEnd.DateTime;
    Query.Open();
//  ...
    Query.Close();
    Query.SQL.Clear();
turnover - запрос в аксессе, внутри которого запрашивается две даты, в переменных start_date и end_date.

не фурычит хоть убей((

Последний раз редактировалось reboot; 28.08.2009 в 01:09.
reboot вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Параметрический запрос с логическим операторм Skolot Microsoft Office Access 8 10.03.2010 15:18
Преобразование SQL-запроса в Параметрический запрос oblachko БД в Delphi 3 05.06.2009 19:55
запрос ссылается на несвязанный с ним запрос kolebatel SQL, базы данных 0 11.06.2008 12:50
параметрический запрос с частью слова в качестве параметра yulia БД в Delphi 6 09.05.2008 20:27
Запрос Инночка БД в Delphi 1 01.05.2008 23:46