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

Вниз

Поиск в TClientDataSet   Найти похожие ветки 

 
Rem   (2003-12-22 17:02) [0]

TClientDataSet отказывается находить записи, если в условиях поиска присутствуют символы кириллицы. Может, есть какие-то дополнительные локальные настройки? А то искать вручную перебором записей долго.


 
Rem   (2003-12-22 17:03) [1]

Имеется в виду поиск через Locate()


 
MV   (2003-12-22 17:04) [2]

А у меня ищет. Покажи, как делаешь.


 
JibSkeart   (2003-12-22 17:05) [3]

и у меня работает :))


 
MV   (2003-12-22 17:07) [4]

Для прикола попробуй "ручками",
while not .eof
...
.next
Что выходит?


 
Nikolay M.   (2003-12-22 17:08) [5]

Апдейты на дельфи установлены?


 
Rem   (2003-12-22 17:38) [6]

да че показывать?

пользователь набирает искомое значение m_sSearch, а оно его не находит:
m_DataSet.Locate(Grid.SelectedField.FieldName, m_sSearch, [loCaseInsensitive, loPartialKey]);


 
MV   (2003-12-22 17:41) [7]

Ну, в отладчике глянь на значения
Grid.SelectedField.FieldName
и
m_sSearch
на всякий случай

И попробуй
MV (22.12.03 17:07) [4]


 
Rem   (2003-12-22 17:47) [8]

2 MV
да я и ищу руками... точно так же и ищу... да долго это получается - перебирать...
вот написал, так оно ищет нормально:

function TxDataSet.LocateEx(a_sField, a_sValue: string): boolean;
var
BM: TBookMark;
sTemp: string;
sCurr: string;
begin
Result := false;
if not Active then Exit;
sTemp := AnsiUpperCase(a_sValue);
DisableControls;
try
BM := GetBookmark;
try
First;
while not EOF do
begin
sCurr := AnsiUpperCase(FieldByName(a_sField).AsString);
Result := (Pos(sTemp, sCurr) = 1);
if Result then Exit;
Next;
end;
GotoBookmark(BM);
except
on Exception do GotoBookmark(BM);
end;
finally
EnableControls;
end;
end;


но... медленно...


 
sniknik   (2003-12-22 20:00) [9]

Rem © (22.12.03 17:47) [8]
2 способа ускорения (навскидку можно и больше наверное ежели подумать)

var
Field_sField: TField;
begin
Field_sField:= m_DataSet.FieldByName(a_sField);

вместо этого
(?????).FieldByName(a_sField).AsString (кстати где потерял? уверен что у тебя берет от правильного датасета? (так понял гдето with есть))
вставить
Field_sField.AsString
(исключается разбор заголовка на каждом присвоении, для длинных циклов сушественно)

и вот это (главный тормоз)
Result := (Pos(sTemp, sCurr) = 1);
просматривается вся строка находится вхождение ради чего? сравнить что это вхожденей сначала. а ведь достаточно сравнить первую букву чтобы знать что не подходит(а дальше сравнение бессмысленно, прикинь сколько операций лишних убереш). перепиши своей, с побуквенным сравнением (кстати AnsiUpperCase можно применять к буквам, но тут неизвестно может получится торможение вместо ускорения, тестить нужно).

но вообщето Locate у меня тоже работает(ло сейчас не пробовал). (может действительно не от того датасета?)


 
Nikolay M.   (2003-12-22 22:31) [10]

А ведь я спрашивал насчет апдейтов! Может хоть на ссылки обратишь внимание?
http://ziet.zhitomir.ua:8890/bin/shMes.asp?idf=5&idm=3364
http://www.dore.ru/perl/nntp.pl?f=1&gid=9&mid=55120



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

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

Наверх




Память: 0.46 MB
Время: 0.009 c
7-63414
FireMan_Alexey
2003-11-05 14:53
2004.01.20
Как можно убрать прогу из списка процессов?


1-63092
Kiril-
2004-01-08 15:21
2004.01.20
case integer of


14-63398
_none_
2003-12-31 03:12
2004.01.20
товарищи! не верьте западной пропаганде!


3-63017
Trad
2003-12-22 21:40
2004.01.20
арифметика с данными из БД


1-63189
Tvon
2004-01-11 07:51
2004.01.20
Как прочесть из файла только первую строку?





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