Форум: "Базы";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
ВнизПомогите с форматом запроса Найти похожие ветки
← →
Владий (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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c