C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Модификация запроса
woltermin
Отправлено: 27.11.2006, 19:30


Ученик-кочегар

Группа: Участник
Сообщений: 7



Есть IBase7.1, fibplus
На форме есть Grid , существует выборка и она работает , но процессе работы необходимо изменить запрос . Вызывается форма фильтра где расположены DateTimePicker ( их 6 шт.) с помощью их задается промежуток дат для фильтровки. Запрос передается но таблица пустая
Как передать значения Pickerov взапрос?. Просмотрел все записи форума на данную тему ничего не помогло. При редактировании записей по дате все нормально.
AVC
Отправлено: 28.11.2006, 09:25


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE (woltermin @ 27.11.2006, 18:30)
Как передать значения Pickerov взапрос?.

Для этого есть несколько путей, но, по моему мнению, самый лучший — параметризованный запрос. А про него на форуме есть много. smile.gif
VilgelmKaizer
Отправлено: 02.12.2006, 06:21


Дежурный стрелочник

Группа: Участник
Сообщений: 38



Если мы работаем с ADO
то можно так:
1.Для создания параметров нужно в SQL запросе указать переменную с двоеточием впереди — это и будет папаметр. Их может быть много.

Например:
declare @Date1 datetime, @Date2 datetime
set @Date1 =:_Date1
set @Date2 =:_Date2

select *
from Archives
where
arch_DateOpen>= @Date1
and
arch_DateOpen < @Date2
order by arch_DateOpen

2.Открываем свойство Parameters нашего запроса и видим там 2 параметра _Date1 и _Date2. Если после сохранения запроса их там не будет — создаем их вручную. Не забудь прописать тип параметра.


3. Как менять их программно:
ADOQuery->Close();
ADOQuery->Parameters->ParamByName("_Date1")->Value = Date1;
ADOQuery->Parameters->ParamByName("_Date2")->Value = Date2;
ADOQuery->Open();
ADOQuery->First();

Воти все

Вернуться в Работа с базами данных в C++Builder