Форум: "Базы";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
ВнизDateTime Найти похожие ветки
← →
Ал (2002-06-20 09:00) [0]Подскажите пожалуйста
Проблема в следующем:
есть поле типа TDateTime, возможно ли осуществить поиск
(Query.Locate) только вводя дату, без времени??? (т.к. время узнать с точностью до секунды практически невозможно)
← →
Turalyon (2002-06-20 09:20) [1]При помощи Locate думаю нет...
Можно посоветовать воспользоваться SQL запросом... там можно найти без проблем.
← →
Ал (2002-06-20 12:58) [2]Turalyon ©:
Спасибо и на этом. Скорее всего придется писать свою
ф-ию перевода в строковый формат, а затем поиска.
← →
Turalyon (2002-06-20 13:10) [3]Зачем... можно сделать так... (щас меня специалисты ругать начнут :))
Делаешь SQL запрос, получаешь ключ твоей записи... а потом Loacate делаешь не по полю со временем (TDateTime), а по ключевому полю. Думаю это не сильно замедлит работу компьютера.
← →
Alexandr (2002-06-20 14:09) [4]Locate(.....[loPartialKey])
не подойдет?
И искать как стринг.
← →
Turalyon (2002-06-20 14:17) [5]>Alexandr ©
А Locate разве не полное совпадение ищет??? (Это к тому что с секундами все равно проблеммы будут)
← →
Ал (2002-06-20 15:13) [6]Turalyon © :
Попробую.Спасибо.
← →
Ал (2002-06-20 15:15) [7]Alexandr © :
Так не получится.
← →
fool (2002-06-20 16:09) [8]>Turalyon © А Locate разве не полное совпадение ищет??
Из хелпа:
loCaseInsensitive Key fields and key values are matched without regard to case.
loPartialKey Key values can include only part of the matching key field value; for example, "HAM" would match both "HAMM" and "HAMMER."
Я думаю - понятно, и еще думаю, что Locate подойдет
← →
Ал (2002-06-20 19:57) [9]fool © :
Это справедливо для поля типа TString (!!!!!!), но никак ни TDate или TDateTime. Попробуй, если не веришь.
← →
Alexandr (2002-06-21 06:08) [10]а я для кого сказал, что искать не как TdateTime а как string?
в select .....
сделай приведение типа с помощью UDF (если хочешь, дополнительным полем)
А UDF потому что стандартный case тебе в 01-JAN-2001 приведет, а надо в 01.01.2001 если я правильно понял.
А вообще, смысла в Locate особого нет для клиент-сервера: он все-рано индексы не импользует, а использует перебор.
Ну так и напиши свой locate, который будет искать то, и как тебе нужно.
← →
Turalyon (2002-06-21 08:19) [11]>> Alexandr ©
Из хелпа для TIBCustomDataSet.Locate
...
Locate uses the fastest possible method to locate matching records. If the search fields in KeyFields are indexed and the index is compatible with the specified search options, Locate uses the index. Otherwise Locate creates a filter for the search.
...
Так, что если все же ищем Locate по индексированному полю используются индексы.
← →
Alexandr (2002-06-21 12:08) [12]Ага, но только для парадокса, Dbf и прочих файловых баз.
Для клиент-сервера доступа к серверным индексам нет, а локальные индексы BDE создавать никогда не умела.
← →
kaif (2002-06-21 12:38) [13]Если на IB6.0 перейти, эту проблему можно решить.
1. там можно вывести дату в YYYY-MM-DD формате.
2. там можно ее разобрать на год, месяц и день.
3. там можно привести поле датавремя (timestamp) к дате CAST(my_timestamp_field as DATE), так как IB6 различает типы данных:
DATE, TIME, TIMESTAMP (последний соответствует типу DATE IB5.*)
← →
Turalyon (2002-06-21 13:06) [14]>> Alexandr ©
Но ведь это из хелпа по TIBCustomDataSet ...
Или им просто было лень переписывать хелп???
← →
Alexandr (2002-06-21 13:13) [15]не верь хелпу.
Верь исходникам и практике.
← →
Turalyon (2002-06-21 13:16) [16]Хм.. я как то в исходники не лазил :) Кто же их даст...
← →
Alexandr (2002-06-21 13:19) [17]ну многие исходники компонентов есть в поставке дельфи, да и практика остается.
← →
Turalyon (2002-06-21 13:26) [18]К сожалению у меня еще очень маленький опыт по работе с IB... но я исправляюсь :))
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.012 c