Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.15;
Скачать: CL | DM;

Вниз

Помогите с запросом sql. Заранее благодарен   Найти похожие ветки 

 
Ted   (2004-07-08 13:48) [0]

procedure TForm1.Button8Click(Sender: TObject);
var
s:string;
begin
memo1.Lines.Add("Select * From buzdey");
memo1.Lines.Add("Where data =");
s:= datetostr(date);
memo1.Lines.Add(s);

Query1.Close;
Query1.SQL.Assign(Memo1.Lines);
Query1.Open;


end;


 
Ted   (2004-07-08 13:52) [1]

Собственно задача в том, чтобы отобрать данные с текущим днем +10 дней... ДОлго парился решил сделать это через поле мемо...
Помогите кто-нибудь решить через SQL, плиззз....


 
Ильш ©   (2004-07-08 13:54) [2]

A Query1.SQL.Add уже отменили?


 
Ted   (2004-07-08 13:58) [3]

Мне нужно менять запрос при старте программы...  чтобы менялась дата запроса... в этом и плюшка...


 
Наталия ©   (2004-07-08 13:59) [4]

Используй параметры для передачи нужного значения в запрос


 
Ильш ©   (2004-07-08 14:00) [5]


> Мне нужно менять запрос при старте программы...  чтобы менялась
> дата запроса... в этом и плюшка

стоп стоп стоп
не пойму в чем проблема то? разве при старте проги нельзя вызвать Query1.SQL.Add ???? Или же ты вопрос некорретно ставишь!


 
Ted   (2004-07-08 14:01) [6]

>Наталия
Я никогда не работал с SQL, можно немного поподробрней?


 
Ted   (2004-07-08 14:03) [7]

Мне в запросе нужно сделать выборку все данные с текущего дня + 10 дней...пробовал через add добавлять (date) пишет ошибку....


 
Ильш ©   (2004-07-08 14:03) [8]

запрос:
select * from tbl
where data=:data

потом в проге
Query1.Prepare;
Query1.ParamByName("date").AsDate=date;
Query1.ExecSQL;
Query1.UnPrepare;


 
Ted   (2004-07-08 14:04) [9]

> Ильш
Сапасибо огромное... 3 дня убил: ))))


 
Ильш ©   (2004-07-08 14:04) [10]

заработало что ли?
ты проверь для начала


 
Ted   (2004-07-08 14:07) [11]

Пробую


 
Ted   (2004-07-08 14:16) [12]

Работает... показывает все записи с текущей датой... а можно ли задать чтобы показывались записи определенных дат?


 
Ильш ©   (2004-07-08 14:19) [13]

определенных из периода какого то? типа с такого то по такео то или вообще в разнобой?


 
Ted   (2004-07-08 14:20) [14]

Вообще прога для вывода дней рождений... т.е. сегодня 8 июля нужно показать все дни рождения на ближайшие 10 дней... Вот такой гимор...
Помоги плиз составить запрос...


 
Ильш ©   (2004-07-08 14:22) [15]

beetwen используй в запросе...
date beetwen data1 and data2


 
Ted   (2004-07-08 14:33) [16]

Query1.Prepare;
Query1.ParamByName("date").AsDate=date;
Query1.ExecSQL;
Query1.UnPrepare;
^^^^^^^^^^^^^
Нет не фурычит говорит:
cannot perform this operation on an open dataset


 
Соловьев ©   (2004-07-08 14:41) [17]


> Query1.ExecSQL;
> Query1.UnPrepare;

Query.Open;


 
Ted   (2004-07-08 14:45) [18]

>Соловьев

Query1.Prepare;
Query1.ParamByName("Data").AsDate:=Date;
Query1.ExecSQL;
Query1.UnPrepare;
Query1.Open;

Как я понял должно быть так?
И все равно не хочет фурычить....:(((
HELP!!!!!!!!


 
Соловьев ©   (2004-07-08 14:48) [19]


> Как я понял должно быть так?

нет заменить надо те две строки.
А вот эту строку надо переделать

> Query1.Prepare;

if not Query1.Prepared then Query1.Prepare;


 
Ted   (2004-07-08 14:53) [20]

>Соловьев

Query1.Prepare;
Query1.ParamByName("Data").AsDate:=Date;
Query1.Open;

Кричит туже ошибку
cannot perform this operation on an open dataset
(((


 
Соловьев ©   (2004-07-08 14:54) [21]


> Query1.Prepare;
> Query1.ParamByName("Data").AsDate:=Date;
> Query1.Open;

if Query1.Active then Query1.Close;
if not Query1.Prepared then Query1.Prepare;
Query1.ParamByName("Data").AsDate:=Date;
Query1.Open;


 
Ильш ©   (2004-07-08 15:00) [22]


> cannot perform this operation on an open dataset
> (((

ну пишет же что открыта база !!!!
закрой


 
Ted   (2004-07-08 15:01) [23]

>Соловьев
Ура!!!!!! ЗАработало!!!!
Огромное спасибо!!!!
А можно ли задать диапазон дат в запросе через переменные?
Так будет верно?
if Query1.Active then Query1.Close;
if not Query1.Prepared then Query1.Prepare;
Query1.ParamByName("Data").AsDate:=Date beetwen data1 and data2;
Query1.Open;


 
Соловьев ©   (2004-07-08 15:02) [24]


> Query1.ParamByName("Data").AsDate:=Date beetwen data1 and
> data2;

нет. два параметра надо использовать


 
Ted   (2004-07-08 15:14) [25]

>Соловьев
Пните на путь истинный, плиз...
if Query1.Active then Query1.Close;
if not Query1.Prepared then Query1.Prepare;
Query1.ParamByName("Data").AsDate:=Date;
Query1.ParamByName("Data").AsDate:=date beetwen Data1 and data2;
Query1.Open;


 
MORA   (2004-07-08 15:31) [26]


> Query1.ParamByName("Data").AsDate:=date beetwen Data1 and
> data2;

Что это???
Твой запрос, который ты используешь, не
select * from tbl
where data = :data
, а select * from tbl
where data between :data1 and :data2

Кстати, плохо выбрано название переменной - лучше не DATA (что переводится как ДАННЫЕ), а DATE (собственно, дата).
А остальное правильно:
if Query1.Active then Query1.Close;
if not Query1.Prepared then Query1.Prepare;
Query1.ParamByName("Data1").AsDate:=Date1;
Query1.ParamByName("Data2").AsDate:=Date2;
// - это удаляем с лица программы - Query1.ParamByName("Data").AsDate:=date beetwen Data1 and data2;
Query1.Open;


 
MORA   (2004-07-08 15:33) [27]

Короче, вот так:

if Query1.Active then Query1.Close;
if not Query1.Prepared then Query1.Prepare;
Query1.ParamByName("Data1").AsDate:=Date1;
Query1.ParamByName("Data2").AsDate:=Date2;
Query1.ParamByName("Data").AsDate:=date beetwen Data1 and data2;
Query1.Open;


 
Ted   (2004-07-08 15:42) [28]

>Соловьев
>Mora
Спасибо за терпение...
Еше глупый вопрос... можно ли в ходе выполнения программы поменять дату... т.е. как получить  data1+10дней?


 
Соловьев ©   (2004-07-08 15:47) [29]


> т.е. как получить  data1+10дней?

F1+Date function


 
MORA   (2004-07-08 15:50) [30]


> Еше глупый вопрос... можно ли в ходе выполнения программы
> поменять дату... т.е. как получить  data1+10дней?

Зачем? Ты же и так задаешь диапазон. Дата1 - например сегодняшняя, а Дата2 := Дата1 + 10 дней. Или тебе нужна ф-ция, добавляющая N дней к дате?


 
Ted   (2004-07-08 15:54) [31]

>Соловьев
>MORA
Дата2 := Дата1 + 10 дней
это мне и надо... но для этого дата1 перевести в string и прибавить 10 или как?


 
HSolo ©   (2004-07-08 16:04) [32]

> Ted   (08.07.04 15:54) [31]

Или как :)
Поскольку
type  TDateTime = type Double;
то достаточно Дата2 := Дата1 + 10;


 
MORA   (2004-07-08 16:05) [33]

Тип TDateTime - это дробное число, целая часть к-рого - дни начиная с 30 декабря 1899 года, а дробная - часы (например,
0 12/30/1899 12:00 am
2.75 1/1/1900 6:00 pm
-1.25 12/29/1899 6:00 am
35065 1/1/1996 12:00 am)


 
Соловьев ©   (2004-07-08 16:07) [34]


>  [32] HSolo ©   (08.07.04 16:04)

через 5 мин еэму надо будет и месяц прибавить или еще ченить...уж лучше если почитает справку :)
F1+TDateTime type
там нажать на See also


 
Ильш ©   (2004-07-09 09:37) [35]

FAQ - для тех кто задает вопрос... (я никого не имею в виду и ни на кого пальцем не показываю, просто выскажусь)

Вопрос:
Что мне делать???? Спасите!!! Помогите!!! и т.д.

Ответы:
1. F1 - это такая кнопка около Esc... не нашел? Ну кнопка по которой из игрушек выходим.. Воот. Маладец!

2. Yandex - это сайт такой.

3. Поиск по тематическим форумам - это для продвинутых...

4. Задать вопрос здесь.

Почему то многие игнорируют первые три пункта и переходят сразу к четвертому. При чем формулируют его до нельзя непонятно. Хотя есть и плюс в этом - отвечающие тренируют свои способности в чтении мыслей!


 
ted   (2004-07-21 12:18) [36]

> Ильш ©
Совершенно согласен... )))
Но когда очень мало времени на решение задачи... тогда очень грустно...
Я работаю сисадмином... у меня 78 юзверей... и если ко мне, например подойдет кто-нибудь с вопросом как в ворде сделать проверку орфографии и я его отправлю на f1 это будет не здорово... хотя когда это каждый день устаещь... прекрастно понимаю...
P.S. еще раз всем огромное спасибо за помощь...



Страницы: 1 вся ветка

Текущий архив: 2004.08.15;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.169 c
14-1091127173
wl
2004-07-29 22:52
2004.08.15
Написание компилятора


14-1090482637
Delphi5.01
2004-07-22 11:50
2004.08.15
TrayIcon


6-1087237430
Virus
2004-06-14 22:23
2004.08.15
Рассылка файла по сети


4-1088788023
Алексей
2004-07-02 21:07
2004.08.15
Многооконное приложение


3-1090492217
AD_infiniTUM
2004-07-22 14:30
2004.08.15
Как правильно внести изменения в базу