| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Параметры запроса |
| Автор: MacTep 15.7.2004, 13:39 |
| Есть таблица PFond. Есть запрос: SELECT * FROM PFond WHERE Death="24.04.2000". Как сделать так, чтобы этот запрос выполнялся не только когда поле Death таблицы PFond равно 24.04.2000, а в любой другой момент, т.е. вместо статического запроса сделать динамический. Например, ввести переменную и сравнивать ее с Death. Мучался долго, но ничего не получилось. |
| Автор: boevik 15.7.2004, 13:54 |
| Очень не понятный вопрос. 1) Данный запрос будет выполнятся в не зависимости от значений в поле Death. (Будет результат или нет, это уже второй вопрос) 2) Где вводится переменная? 3) На каком языке пишется клиент. (Желательно пример кода с запускам запроса) 4) И на конец, какая база данных. (Хотя это менее важно, в данном вопросе) |
| Автор: MacTep 15.7.2004, 17:32 |
| База данных - Paradox. Пишется все это дело на Дельфи. Есть форма, в которой вводится дата. А вот в самом запросе все должно сравниваться и выводится. Например есть записи с такими датами: 23.05.2001, 24.05.2001, 26.05.2001. Если запрос будет осуществлен при помощи переменной, то все будет окейно. Например: d = '24.04.2000' // этот параметр получается из формы предыдущим шагом SELECT * FROM PFond WHERE Death>=d. Но ведь так нельзя писать. А как можно? Теперь понятно? |
| Автор: boevik 15.7.2004, 17:37 |
| IMHO, тебе надо просто склеить два стринга, что б получился SQL SELECT * FROM PFond WHERE Death>='24.04.2000' . А ещё мне кажется, что этот вопрос ближе к теме Делфи, чем к базам данных. |
| Автор: Cashey 15.7.2004, 18:09 |
| Ну, сначало программно напиши запрос, используя переменную, а потом пошли ее в TQuery |
| Автор: MacTep 15.7.2004, 23:11 | ||
| Так как же этот запрос-то правильно написать? Я пишу так:
Но так ни фига не работает. Именно в этом-то мне и нужна помощь. boevik, я тебя вообще не понял про конкатенацию двух стрингов. Как это сделать? Какие именно стринги брать? |
| Автор: MacTep 15.7.2004, 23:29 | ||
Все, парни, сделал. Понял, что хотел сказать мне boevik. Написал так: в стринговой переменной date хранится дата типа "29.04.2002". А дальше так:
Вот и все. Спасибо всем огромное. Благодарю! |
| Автор: <Spawn> 16.7.2004, 04:58 | ||
MacTep ExecSQL делать не нужно - он применяется для DML конструкций.
|
| Автор: gemoglobin 16.7.2004, 06:25 |
| Вот ответ: DataSource1.DataSet:=Query1; Query1.Close; Query1.SQL.Clear; Query1.SQL.Add('SELECT Fam, Name, Otch'); Query1.SQL.Add('FROM PFond'); Query1.SQL.Add('WHERE Death>= Query1.ParamByName('dd').Value = StrToDate("29.01.2001"); Query1.Open; |