Ну вообщем помогайте... в какой кодировке TDBF пишет в БД?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Джентельмен
постоялец
Сообщения: 162
Зарегистрирован: 16.10.2005 10:47:26
Откуда: Украина Донбасс Краматорск
Контактная информация:

Ну вообщем помогайте... в какой кодировке TDBF пишет в БД?

Сообщение Джентельмен »

вообщем такая проблема, под виндой, TDBF пишет в БД записи с Edit, потом я ставлю фильтр к этому TDBF а он не фильтрует записи... проблема в кодировке, в БД они в одной а в эдите они в другой...
вопрос...
в какой и из какого формата кодировки нужно перевести, что бы все работало?
пробывал анси в оем, оем в анси, вин в кои8р и кои8р в вин...
не помогает...
может кто что скажет умное?
Аватара пользователя
Сергей Смирнов
энтузиаст
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва
Контактная информация:

Сообщение Сергей Смирнов »

Джентельмен писал(а):вообщем такая проблема, под виндой, TDBF пишет в БД записи с Edit, потом я ставлю фильтр к этому TDBF а он не фильтрует записи... проблема в кодировке, в БД они в одной а в эдите они в другой...
вопрос...
в какой и из какого формата кодировки нужно перевести, что бы все работало?
пробывал анси в оем, оем в анси, вин в кои8р и кои8р в вин...
не помогает...
может кто что скажет умное?
Из умного знаю ещё "UTF8", который разработчики FPC/Lazarus местами очень любят. Вообще-то, dbf -- это просто текстовый файл. Открой и посмотри, что там за кодировка у твоих строк.
Джентельмен
постоялец
Сообщения: 162
Зарегистрирован: 16.10.2005 10:47:26
Откуда: Украина Донбасс Краматорск
Контактная информация:

Сообщение Джентельмен »

ну с UTF8 это интересно... но...
все записи в БД в ANSI ето я в блокноте посмотрел... ну и соответственно в Edit1 пишу что бы в ANSI все было... но он всеравно не находит записи...
может есть какой то другой способ поиска записи?
может с Query как нибуть попробывать?
но это ж блин все переделывать...
SergKam
постоялец
Сообщения: 251
Зарегистрирован: 16.11.2005 20:31:11
Откуда: Украина,Харьков

Сообщение SergKam »

что значит ANSI? что там нет записей на русском? скорее всего там должен быть ДОС тоесть CP866.
Джентельмен
постоялец
Сообщения: 162
Зарегистрирован: 16.10.2005 10:47:26
Откуда: Украина Донбасс Краматорск
Контактная информация:

Сообщение Джентельмен »

да нет...
там не дос...
вот в блокноте я открываю, и текст вижу, читаю...
в блокноте кодировка стоит АНСИ...
а вот в программе я пишу фильтр тдбф и для него данные берутса с эдита, и ниодна запись не находитса... а если в запипи нет руских букв то ищет, работает...
вот проблема блин...
кстати и если в свойстве тдбф пишу фильтр и компилирую, тоже ищет...
а вот с эдита не хочет...
SergKam
постоялец
Сообщения: 251
Зарегистрирован: 16.11.2005 20:31:11
Откуда: Украина,Харьков

Сообщение SergKam »

если в блокноте видно значит win (CP1251)
попробуй после вызова фильтра сохранить програмно фильтр из компонента в файл
и посмотри что там с кодировкой.(чтото мне подстазывает что там будет ???? вместо русских)
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Насколько я разобрался в тексте TDbf - он не умеет перекодировать из Win1251 в DOS866 -там внутри таблица перекодирования только для венгерского языка
и что самое плохое - толком нет возможность дописть эту перкодировку самому и при этом не курочить саму компоненту
SAK
постоялец
Сообщения: 158
Зарегистрирован: 17.02.2006 23:45:14
Откуда: Тим
Контактная информация:

Сообщение SAK »

Этот вопрос я уже поднимал и как вариант предлагал минимальные изменения в http://freepascal.ru/forum/viewtopic.php?t=652 .
Для полноценной работы, всё же требуется переработка не только TDbf, но и модуля DB т.к. в нём не реализован вызов метода Translate.
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

а ты патчи на это дело для себя не делал? если сделал -может поделишся? (а то у меня на всё рук не хватает)
кстати - как то поднимался вопрос насчёт общей коллекции патчей собирать где нить на сайте - дело заглохло?
у меня есть несколько которые в основной релиз лазаря не хотят включать (внятно мне не ответели почему) - например чтобы DBEdit нормально работал с Numeric полями, если они расформатированы
SAK
постоялец
Сообщения: 158
Зарегистрирован: 17.02.2006 23:45:14
Откуда: Тим
Контактная информация:

Сообщение SAK »

Нет, не делал. Пока вообще забросил т.к. куда ни полезу везде недоработки и ошибки. Если нужно писать под windosw, то достаточно внести исправления в 2-х методах, я их указывал по приведённой ссылке. Что бы сделать всё нормально надо многое перелопатить. А т.к. я не знаю политики разработчиков, то встаёт вопрос: а нужно-ли вообще этим заниматься?
Джентельмен
постоялец
Сообщения: 162
Зарегистрирован: 16.10.2005 10:47:26
Откуда: Украина Донбасс Краматорск
Контактная информация:

Сообщение Джентельмен »

ну блин...
не получаетса, не работает... даже в свойстве dbf пишу фильтр на руском... и всеравно не находит записи...
ладно...
может кто нить подкинет идейку, как можно поиск по БД организовать?
только что бы не перебирать все записи типа так:

Wile not dbf1.eof do
Begin
if dbf1.fieldbyname('name').asstring = кв01 then
else
End;

что-то типа этого не подойдет...
ну вот советуйте...
как поиск зделать?
SAK
постоялец
Сообщения: 158
Зарегистрирован: 17.02.2006 23:45:14
Откуда: Тим
Контактная информация:

Сообщение SAK »

Хотел было посоветовать стандартный способ: проидексировать по нужным полям и использовать FindKey/FindNearest или SetKey/GotoKey/GotoNearest. Но вот только оказалось, что нет такого в Lazarus :(. В общем получается, что про TDbf легче забыть чем исправлять все косяки, к сожалению.
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Проще отказаться от DBF :-)
Ответить