Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];

Вниз

Помогите с запросом 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.042 c
14-1091168382
nasty
2004-07-30 10:19
2004.08.15
мастера: давайте что-нибудь приватизируем?


3-1090225296
AlexanderSK
2004-07-19 12:21
2004.08.15
Как работает IBQuery?


3-1090509405
negrila
2004-07-22 19:16
2004.08.15
Firebird users


6-1086949528
rsng
2004-06-11 14:25
2004.08.15
Работа с SMTP


3-1090172462
Кастуся
2004-07-18 21:41
2004.08.15
Откуда два файла???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский