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

Вниз

Помогите с форматом запроса   Найти похожие ветки 

 
Владий ©   (2003-12-29 18:08) [0]

Суть такова - в зависимости от указанной даты в определенном поле должет отбираться курс на указанную дату или ранее.


var Dstr :string;
begin
Dstr:= DateC.DataBinding.StoredValue;

MainForm.LastCours.SQL.Clear;
MainForm.LastCours.SQL.Add("SELECT Max(Date) AS LastDate FROM Courses "+
"WHERE Courses.Date<=Date("+ Dstr +")");


И получаю ругань, что Date(01.12.03) - неправльно.
Подскажите - что не так делаю?...


 
Johnmen ©   (2003-12-29 18:12) [1]

Формат даты неверен...
Пользуйся параметрическим заданием даты.


 
Johnmen ©   (2003-12-29 18:13) [2]

...да, и кстати, что за ф-ия date ?????????????/


 
sniknik ©   (2003-12-29 18:32) [3]

> ...да, и кстати, что за ф-ия date ?????????????/
текущая дата, только она без параметров.


 
Владий ©   (2003-12-29 18:44) [4]

А мог и напутать... почему и спрашиваю - не смог понять как мне привести "01.12.03"к формату, который бы сравнен с полем Courses.Date (DateTime)...


 
paul_k ©   (2003-12-29 18:56) [5]

точнее написать запрос следующим образом
1 where date < DateAdd ("d"; 1;:Mydate)
2 мне кажется что важнее получить id курса а таким запросом его не вытащить.
попробуй так
select * from course
where data = (select max(c.data)
from course c
where data <where date < DateAdd ("d"; 1;:MyCoursedate))
abd cur_id = :MyCurrencyCode
Если не хочеш развлечений с установленными юсерами форматами даты заполняй значения параметров
Если на это наплевать то вполне кушает строки в кавычках
Уж извини коль лишнего наплел. Сам с этими граблями разбирался довольно долго при поиске последнего перед датой курса или котировки


 
sniknik ©   (2003-12-29 19:03) [6]

> не смог понять как мне привести "01.12.03"к формату,
правильнее вставить параметр

но можно и CDate("12.01.03") и #01/12/2003# и DateSerial(2003, 01, 12) и даже CDate("2003 Январь 12") ....

но этим запросом ты только максимальную дату получиш а не запись с ней, а именно она и нужна судя по всему.
у тебя в этой таблице ключевое поле есть (по автоикременту)? и дата может быть одна или несколько (сколько раз в день можно курс менять)?


 
Владий ©   (2003-12-30 08:53) [7]

Дата только одна на каждый курс. Все повторные - автоматом удаляются. А курс мне и нужен - максимальный по отношению к дате, указанной в DateC...


 
sniknik ©   (2003-12-30 10:30) [8]

тогда так можно и без ID
select * from course
where data =
(select max(data) from course where date <= :MyCoursedate)
MyCoursedate параметр, заноси туда именно дату (datetime), можеш заменить на вышеперечисленное (смотри только день с месяцем не перепутай, сдесь это легко, и ошибки не даст)
типа date <= #01/12/2003#
(вместо * можно одно нужное поле MyCourse)


 
Владий ©   (2003-12-30 10:38) [9]

Что-то меня совсем клинит - чем ближе НГ, тем я тупее...

Как найти последнюю дату я понял:
MainForm.LastCours.SQL.Add("SELECT Max(Date) AS LastDate, * FROM Courses WHERE ((Courses.Date)<=CDate("""+Dstr+"""))");

Но вот как потом отобрать курс по заданной валюте - мне уже не понять... =(((


 
Владий ©   (2003-12-30 10:42) [10]

О пока думал и писал мне готовый ответ дали... Спасибо огромное!



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

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

Наверх




Память: 0.49 MB
Время: 0.021 c
1-93497
Zheks
2004-01-19 10:02
2004.01.29
Проверка существования директории


14-93666
BorisMor
2004-01-07 21:34
2004.01.29
Немного политики


6-93607
DelphiN!
2003-11-24 21:53
2004.01.29
Как убрать сообщения об ошибках от TServerSocket и TClientSocket


3-93354
edicon
2004-01-03 02:14
2004.01.29
Пароли


1-93464
Александр
2004-01-15 18:28
2004.01.29
Как через Delphi сжимать файлы?