Главная страница
    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.008 c
14-45517
Zion
2002-09-16 20:38
2002.10.14
C# кто видел?


4-45651
Soul2
2002-08-31 01:46
2002.10.14
ОКНА


1-45332
Лана Розанова
2002-10-05 12:05
2002.10.14
HTML


14-45549
Сатир
2002-09-19 21:49
2002.10.14
Коммандная строка


1-45418
Dmitriy Polskoy
2002-10-03 12:44
2002.10.14
Почему так?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский