Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Параметры запроса, помогите 
:(
    Опции темы
MacTep
  Дата 15.7.2004, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: нет
Всего: 4



Есть таблица PFond.

Есть запрос:
SELECT *
FROM PFond
WHERE Death="24.04.2000".

Как сделать так, чтобы этот запрос выполнялся не только когда поле Death таблицы PFond равно 24.04.2000, а в любой другой момент, т.е. вместо статического запроса сделать динамический. Например, ввести переменную и сравнивать ее с Death. Мучался долго, но ничего не получилось.



--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
boevik
Дата 15.7.2004, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: нет
Всего: 35



Очень не понятный вопрос.
1) Данный запрос будет выполнятся в не зависимости от значений в поле Death. (Будет результат или нет, это уже второй вопрос)
2) Где вводится переменная?
3) На каком языке пишется клиент. (Желательно пример кода с запускам запроса)
4) И на конец, какая база данных. (Хотя это менее важно, в данном вопросе)


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
MacTep
Дата 15.7.2004, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: нет
Всего: 4



База данных - Paradox. Пишется все это дело на Дельфи. Есть форма, в которой вводится дата. А вот в самом запросе все должно сравниваться и выводится. Например есть записи с такими датами: 23.05.2001, 24.05.2001, 26.05.2001. Если запрос будет осуществлен при помощи переменной, то все будет окейно. Например:
d = '24.04.2000' // этот параметр получается из формы предыдущим шагом
SELECT *
FROM PFond
WHERE Death>=d.

Но ведь так нельзя писать. А как можно? Теперь понятно?



--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
boevik
Дата 15.7.2004, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: нет
Всего: 35



IMHO, тебе надо просто склеить два стринга, что б получился SQL
SELECT *
FROM PFond
WHERE Death>='24.04.2000' .

А ещё мне кажется, что этот вопрос ближе к теме Делфи, чем к базам данных.



--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Cashey
Дата 15.7.2004, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Ну, сначало программно напиши запрос, используя переменную, а потом пошли ее в TQuery


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
MacTep
Дата 15.7.2004, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: нет
Всего: 4



Так как же этот запрос-то правильно написать?
Я пишу так:

Код

         DataSource1.DataSet:=Query1;
         Query1.Close;
         Query1.SQL.Clear;
         Query1.SQL.Add('dd DATE :="29.01.2001";');
         Query1.SQL.Add('SELECT Fam, Name, Otch');
         Query1.SQL.Add('FROM PFond');
         Query1.SQL.Add('WHERE Death>=:dd');
         Query1.ExecSQL;
         Query1.Open;


Но так ни фига не работает. Именно в этом-то мне и нужна помощь.

boevik, я тебя вообще не понял про конкатенацию двух стрингов. Как это сделать? Какие именно стринги брать?



--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
MacTep
Дата 15.7.2004, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: нет
Всего: 4



Все, парни, сделал. Понял, что хотел сказать мне boevik. Написал так: в стринговой переменной date хранится дата типа "29.04.2002". А дальше так:

Код

    Table1.Active:=false;
    DataSource1.DataSet:=Query1;
    Query1.Close;
    Query1.SQL.Clear;
    Query1.SQL.Add('SELECT Fam, Name, Otch');
    Query1.SQL.Add('FROM PFond');
    MyQuery:='WHERE Death>="'+date;
    Query1.SQL.Add(MyQuery);
    Query1.ExecSQL;
    Query1.Open;


Вот и все. Спасибо всем огромное. Благодарю! smile.gif rolleyes.gif


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
<Spawn>
Дата 16.7.2004, 04:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 2
Всего: 64



MacTep ExecSQL делать не нужно - он применяется для DML конструкций.

Код
        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>=:dd');
        Query1.ParamByName('dd').AsDateTime := StrToDateTime('29.01.2001');
        Query1.Open;



--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
gemoglobin
Дата 16.7.2004, 06:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 8.7.2004

Репутация: нет
Всего: нет



Вот ответ:

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>=biggrin.gifd');
Query1.ParamByName('dd').Value = StrToDate("29.01.2001");
Query1.Open;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0836 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.