Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Базы данных > Выборка по дате, проблема.


Автор: Damp1L 11.3.2007, 10:41
Возникла такая проблема, имеем базу данных VFP, осуществляю доступ к ней через ODBC. В таблице много столбцов, но они особой роли не играют в проблеме, мне нужно сделать выборку по дате. Вот текст запроса который пишу в SQLBuilder:
Код

SELECT дата, должность, номер, идент_код
FROM table2 Table2
WHERE дата>{11/11/1990}

если его выполнять в нём, то всё будет ок.
Мне нужно вормировать запрос самому. Далее я пишу такой код:
Код

AnsiString reuqest2="SELECT дата, должность, номер, идент_код FROM table2 Table2 WHERE дата>{11/11/1990}";
Form1->Query3->SQL->Clear();
Form1->Query3->SQL->Add(reuqest2);
Form1->Query3->Open();

при попытке выполения кода получаю:
'Invalid use of keyword. Token:дата>{11/11/1990'
В чём моежет быть моя трабла ?

Автор: Anark1 11.3.2007, 16:51
11/11/1990 - такой вид имеет дата, если используешь строковый тип. А для того чтобы сравнивать даты нужно использовать тип - date, значения которого имеют вид дд.мм.гггг.
То есть нужно подправить поле таблицы и иначе записать дату.

Автор: Damp1L 12.3.2007, 10:35
Дык у меня стоит тип Date в таблице, и почему тогда в SQLBuilder запрос работает исправно ?

Автор: Rodman 12.3.2007, 17:25
конвертить даты надо...

Автор: Damp1L 12.3.2007, 19:36
покажите плиз как =)

Автор: Anark1 12.3.2007, 21:34
->AsDateTime
->DateToStr
->StrToDate

наверное, все что нужно.

Автор: Damp1L 15.3.2007, 12:51
Ничего не получается.. может кто кинет пример ? А то я уже незнаю как и быть даже...

Автор: Damp1L 19.3.2007, 08:05
Эх... все молчат ><

Автор: Anark1 21.3.2007, 21:50
Я не понимаю, что тебе не понятно.
Код

Text1 = StrToDate(Text2)
Text2 = DateToStr(Text1)
MyTable_MyField->Text = Edit1->Text->AsDateTime

Вот примеры.
А вообще если нужно как либо работать с самой датой, то я бы написал функцию под эту задачу.

Автор: Damp1L 23.3.2007, 21:25
Проблема решена. Изменение ReqestLive на False убрало проблему.

Автор: medicdim 4.6.2007, 09:29
Ещё можно решить проблему средствами СКЛ:

select * from Table1
where date>To_Date('1.01.2007', dd.mm.yyyy)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)