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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.039 c
2-1190629809
click
2007-09-24 14:30
2007.10.21
Выделение мышью нескольких TImage й


9-1161582584
Nic
2006-10-23 09:49
2007.10.21
Простая игра


2-1190672814
Servelat
2007-09-25 02:26
2007.10.21
Цепочки битов


3-1182149600
ambhtr
2007-06-18 10:53
2007.10.21
Как скопировать информацию из таблицы на сайте?


2-1190800881
Yogan
2007-09-26 14:01
2007.10.21
mssql





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