Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.21;
Скачать: CL | DM;

Вниз

TClientDataSet.Locate   Найти похожие ветки 

 
misha_gr   (2007-09-24 13:43) [0]

Здравствуйте. Столкнулся с тем, что TClientDataSet.Locate не работает с русским чарсетом (поиск по строковому полю). Не находит записей, которые однозначно там есть. CaseInsencitive - без разницы. Если искать цифры или латиницу - то всё нормально. Аналогично работает фильтрация. В инете только упоминание проблемы, но не решение. Тем удивительнее, что лично видел массу решений, в которых Locate функционировал нормально. Отягчающие обстоятельства : Delphi 6 + 2upd, DB - (Мидас?) хранится в бинарном файле (ClientDataSet.SavetoFile(), ClientDataSet.LoadFromFile()).


 
Anatoly Podgoretsky ©   (2007-09-24 13:57) [1]

> misha_gr  (24.09.2007 13:43:00)  [0]

Находит но не все.
Проклятая проблема проклятых американцев.
Много о себе думают.


 
Вася Правильный   (2007-09-24 14:04) [2]

некоторые буквы не фурычат


 
misha_gr   (2007-09-24 14:11) [3]

А чуть поконкретней можно?


 
sniknik ©   (2007-09-24 15:11) [4]

> Тем удивительнее, что лично видел массу решений, в которых Locate функционировал нормально.
> ... (Мидас?)
а уверен что в тех решениях использовался мидас? (TClientDataSet)... ведь он далеко не единственный который позволяет таблицы в памяти, Locate и SavetoFile.
или есть исходники тех решений где работает? тогда там и посмотри как сделано.

> А чуть поконкретней можно?
не выйдет у тебя с ним ничего, если это действительно "Проклятая проблема проклятых американцев."... это они гады так написали, не задумываясь о локализациях. и переделывать не заставить.


 
Anatoly Podgoretsky ©   (2007-09-24 15:17) [5]

> sniknik  (24.09.2007 15:11:04)  [4]

Заставить можно, но у меня нет таких денег.


 
misha_gr   (2007-09-24 15:25) [6]

> а уверен что в тех решениях использовался мидас? (TClientDataSet)...

Там используется dbExpress + Oracle. Однако TClientDataSet - тот же самый.

> есть исходники тех решений где работает? тогда там и посмотри как
> сделано.

Частично. В том смысле, что некоторая часть функциональности присутствует в виде DLL. А вообще тот же Locate используется. Данные загружаются в TClientDataSet по другому.


 
sniknik ©   (2007-09-24 15:25) [7]

ну, с помощью денег это уже называется не "заставить".

кстати а тут ничего нет по теме?  
http://www.distribucon.com/midasbug/


 
sniknik ©   (2007-09-24 15:27) [8]

> Данные загружаются в TClientDataSet по другому.
может быть даже с другой кодовой страницей....

вот это и смотри. в чем разница.


 
Johnmen ©   (2007-09-24 15:29) [9]

У меня с русскими буквами работает.


 
Anatoly Podgoretsky ©   (2007-09-24 15:39) [10]

Locate работает с локально загруженными данными и глубоко плевать какими средствами в него загружено.


 
sniknik ©   (2007-09-24 15:43) [11]

> У меня с русскими буквами работает.
ну, удивил ;). у меня возможно тоже работает... если попробовать.

только вопрос, а как ты менял (где) "русский чарсет"? а если не менял, то с ним ли оно работает? ;)


 
Johnmen ©   (2007-09-24 15:48) [12]


> только вопрос, а как ты менял (где) "русский чарсет"?

не менял. ничего не менял...

> а если не менял, то с ним ли оно работает? ;)

э-э-э-э... "оно" это кто? :)


 
sniknik ©   (2007-09-24 15:53) [13]

> Locate работает с локально загруженными данными и глубоко плевать какими средствами в него загружено.
а если загрузить в досовой кодовой странице, поставить русский чарсет "oem dos" в гриде (видеть руское), а в локейте искать в виндовой?


 
sniknik ©   (2007-09-24 15:57) [14]

> не менял. ничего не менял...
ну отож... а в [0] видимо менялось (упоминается, т.к. если бы не менялось то сказано бы было не о чарсете, а о русских буквах...)


 
Johnmen ©   (2007-09-24 15:58) [15]

Да нету никаких гридов. Есть самый обычный TClientDataSet. Без провайдера. В него добавляются записи, удаляются, корректируются... И между делом выполняется локейт. Выполняется успешно.


 
Anatoly Podgoretsky ©   (2007-09-24 16:03) [16]

Если не использовать особые методы издевательств над компонетами, то Locate работает с ANSI, вне зависимости от языковых драйверов, а вот преобразованиями уже они занимаются.

Вроде не ошибаюсь?


 
misha_gr   (2007-09-24 16:59) [17]

Упс. Мой косяк. Человечище с какого-то бодуна использовал TWideStringField, вместо нормального TStringField. А я не посмотрел... Чувствую себя идиотом.

Всем спасибо, и извините за потраченное время.

Модеру отдельные поздравления за дар научного предвидения. Как ни прискорбно, но оно оказалось право.



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

Текущий архив: 2007.10.21;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.02 c
2-1191190477
Gringoire
2007-10-01 02:14
2007.10.21
Наблюдение за нажатием клавиш


2-1190576562
исследователь
2007-09-23 23:42
2007.10.21
Время и дата


4-1176883424
evgenij_
2007-04-18 12:03
2007.10.21
Stay on Top


15-1190265156
vrem
2007-09-20 09:12
2007.10.21
что бы в досе не гудел!


9-1161610372
Xdebugger
2006-10-23 17:32
2007.10.21
Глюк при установке GLOXODE