Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TClientDataSet.Locate [D6]


misha_gr ©   (2007-09-24 13:43:00) 

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


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

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

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

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


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

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

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


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

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


sniknik   (2007-09-24 15:57:00) [4]

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


sniknik   (2007-09-24 15:53:00) [5]

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


Johnmen   (2007-09-24 15:48:00) [6]


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

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

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

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


sniknik   (2007-09-24 15:43:00) [7]

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

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


Anatoly Podgoretsky   (2007-09-24 15:39:00) [8]

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


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

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


sniknik   (2007-09-24 15:27:00) [10]

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

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


sniknik   (2007-09-24 15:25:00) [11]

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

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


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

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

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

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

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


Anatoly Podgoretsky   (2007-09-24 15:17:00) [13]

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

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


sniknik   (2007-09-24 15:11:00) [14]

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

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


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

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


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

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


Anatoly Podgoretsky   (2007-09-24 13:57:00) [17]

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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо