Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.10.14;
Скачать: [xml.tar.bz2];

Вниз

Поиск в DataSet по полю типа Date   Найти похожие ветки 

 
Мышь   (2002-09-18 20:00) [0]

Здравствуйте, Уважаемые! Я пишу свой DBGrid, так как надоело мучиться со стандартными.
Тем более, что заказчики имеют оригинальные желания. Данную затею обсуждать не
стоит, а проблема в следующем: я хочу поискать в DataSet запись методом Locate по полю
типа Date (в частности). Совсем не хочет. Скажите, пожалуйста, это вообще реально?
Не ищется даже при сохранении значения поля в Variant, переходе на другую запись
и поиске по сохраненному значению. Можно, конечно, и без этого, но все-таки интересно.
Заранее благодарен.


 
MsGuns   (2002-09-18 21:53) [1]

Как выглядит строка с Locate ?


 
sniknik   (2002-09-18 22:08) [2]

где ищеш? тип базы, таблиц? если dbf это одно MSSQL другое в самом датасете? а внутреннюю структуру знаеш?

возможно ишеш дату там где DateTime естественно совпадений не будет даже если через Variant.


 
Мышь   (2002-09-19 21:18) [3]

Я ищу запись в TQuery, полученный из MSSQL70 в D6, хотя, видимо, это и не важно.
Допустим, есть текущая запись, и мы делаем так:
V := Query1.FieldByName("Date").Value; (соответственно, V: Variant)
Затем, меняем текущую запись и делаем так:
Query1.Locate("Date", V, []);
Возвращается False, то есть ничего не найдено.
Естественно, в самом Grid"e все сложнее, но даже такой простой вариант не работает.
Таким образом, либо значение в V: Variant портится, либо Locate хочет чего то другого. Чего?


 
sniknik   (2002-09-19 22:38) [4]

как не важно, если TQuery и MSSQL значит используеш прослойку вроде BDE или ODBC а они коверкают запросы по своему усмотрению.
смотри вот это работает
ADODataSet1.Locate("_Date", "24.06.2002", []);
это тоже
V:= ADODataSet1.FieldByName("_Date").Value;
ADODataSet1.First;
ADODataSet1.Locate("_Date", V, []);
(V естественно ...)
но только если соответствующие языковые настройки (английское написание будет 06.24.2002, и если в поле только дата, если там еще и время 06.24.2002 09:58:05. разницу замечаеш?
соеденение
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Work\CashBase.mdb;Persist Security Info=False
на всякий случай.
ADOQuery1 по аналогии тоже работает.

чему у тебя равен V после присваивания?


 
Мышь   (2002-09-21 21:15) [5]

V после присваивания равен тому, что я вижу в BDGrid - только Дата. А как вообще работает поиск? Разве при этом используется BDE?


 
sniknik   (2002-09-21 23:25) [6]

ну к примеру если квери "живой" то где он будет искать в оторваном датасете или всетаки в базе на случай если база уже изменилась?

-> равен тому, что я вижу
то есть строка как здесь "24.06.2002" да?, а ДатаТайм типа дабл. Что никаких преобразований не происходит?


 
sniknik   (2002-09-22 00:07) [7]

в общем чтобы не мучился с вопросами сам залез в модуль ADODB

function TCustomADODataSet.Locate(const KeyFields: string;
const KeyValues: Variant; Options: TLocateOptions): Boolean;
begin
DoBeforeScroll;
Result := LocateRecord(KeyFields, KeyValues, Options, True);
if Result then
begin
Resync([rmExact, rmCenter]);
DoAfterScroll;
end;
end;
вот эта хрень тебе все и портит. с не ADO -ным локейтом все запутаней но думаю механизм тот же.


 
Мышь   (2002-09-22 18:40) [8]

Спасибо за внимание, попробую что нибудь придумать...



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

Форум: "Базы";
Текущий архив: 2002.10.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
1-45325
Link
2002-10-05 12:05
2002.10.14
Даты


3-45202
RDK
2002-09-23 10:29
2002.10.14
таблица PARADOX


1-45438
Smithson
2002-10-03 16:49
2002.10.14
Round, Trunc и ничего не понял


8-45474
maxon
2002-05-10 08:38
2002.10.14
знатокам GLScene


1-45374
maxinfosoft
2002-10-05 16:34
2002.10.14
Как добавить в адресную книгу TheBat & Outloock новые записи?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский