Главная страница
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.012 c
4-93732
voe
2003-11-22 03:10
2004.01.29
Запуск exe файла...


14-93696
Night Cold
2004-01-06 16:06
2004.01.29
Как автоматически в Memo выделять определенные слова как в редакт


1-93537
Cardinal
2004-01-17 10:25
2004.01.29
Как закрыть консоль при отсутствии ошибок?


14-93634
wl
2004-01-08 19:18
2004.01.29
Какой КПК(PDA) выбрать?


1-93498
vlgrig1961
2004-01-19 09:01
2004.01.29
Как в TreeView писать итемы своим цветом