Главная страница
    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.011 c
8-63262
WondeRu
2003-09-15 10:08
2004.01.20
Как отключить OpenGL ускорение видеокарты?


1-63144
DDA
2004-01-06 19:13
2004.01.20
ListView-выделить определенный файл в ListView


3-62969
Danilas
2003-12-24 14:00
2004.01.20
Проблема с созданием сервера в InterBase


14-63306
Vlad Oshin
2003-12-26 10:21
2004.01.20
СВЯТОЕ ПИСЬМО :)


3-63039
BBCHa
2003-12-19 23:40
2004.01.20
Установка BDE





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