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

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

Проблемы с ADO [D5, dBase, FoxPro]


Amper ©   (2002-11-25 09:44:00) 

Такой вопрос. Если использовать TTable и TADOTable, то для символьных полей при отображении в DBGrid получаю различные отображения этих строк. Как будто бы TADOTable конвертирует строки из одной кодировки в другую. Как решить эту проблему?


oss   (2002-11-25 18:26:00) [1]

ну тогда надо менять тип с CHAR на более прогрессивный :)


Amper   (2002-11-25 17:46:00) [2]

Соответственно, смена кодировки в Grid-е не помогла.


Amper   (2002-11-25 17:15:00) [3]

Перегонка невозможна. Дело в том, что я работаю с БД которая создается DOS прогой. Таблицы все время обновляются и каждый раз конвертировать не покатит. Тем более, что они огромные.

А проблемма возникла из-за того, что я не смог работать с этой таблицей стандартным компонентом TQuery. Дело в том, что у меня в таблице есть поле типа CHAR длинной 255 символов. А TQuery почему-то не хочет работать с такой таблицей. Если обрезаю до 254 то все нормально, а 255 никак. Может кто стыкался с такой траблой?
А вот TADOQuery нормально читает такую таблицу, но че то там перекодирует непонятным образом. Некоторые буквы нормальные, а некоторые заменяются на другие без какой либо системы. Это даже не перекодировка с DOS в ANSI.


oss   (2002-11-25 17:02:00) [4]

если выводишь через грид, то там есть свойство, поставь в тру,
или как уже сказали выше, а лучше перегони всю базу, и работай с анси


Карелин Артем   (2002-11-25 16:54:00) [5]

Amper (25.11.02 16:51)
OnGetText, OnSetText у TField


Amper   (2002-11-25 16:51:00) [6]

То есть. Где преобразовывать?


oss   (2002-11-25 16:38:00) [7]

ну так преобразовывай ОЕМ к ANSI и все будет нормально


Amper   (2002-11-25 14:11:00) [8]

Уже. Поставил там кодировку cp866, но все равно ничего не изменилось.

2 Карелин Артем
Transliterate не помог.

А таблица, вообще то, в дос кодировке записана.


sniknik   (2002-11-25 12:51:00) [9]

ODBC алиас "Файлы dBASE", драйвер "DRIVER={Microsoft dBase Driver (*.dbf)}",
ищи как настраивантся.


Amper   (2002-11-25 12:24:00) [10]

Строка такая
Provider=MSDASQL.1;Persist Security Info=False;Data Source=????? dBASE;Extended Properties="DSN=????? dBASE;DefaultDir=D:\Borland\Delphi5\Projects\Robota\LK\lk_depack;DriverId=533;FIL=dBase III;MaxBufferSize=2048;PageTimeout=5;"


Карелин Артем   (2002-11-25 12:21:00) [11]

Жми правым батоном на компонентах, добавляй все поля. Ну и поиграйся с свойством Transliterate у текстовых полей. Мне помогло в свое время.


sniknik   (2002-11-25 12:18:00) [12]

А строка подключения? какая?
типа этой
Provider= Microsoft.Jet.OLEDB.4.0;Data Source=D:\;Extended Properties=dBase IV;Persist Security Info=False
то JET.


Amper   (2002-11-25 12:05:00) [13]

>>ADO Jet? его используеш?
Не знаю. Использую тот TADOTable компонет, который есть в стандартной поставке 5 делфы.


sniknik   (2002-11-25 11:20:00) [14]

TTable и TADOTable разные движки используют вот и дается в одной с конвертацией в другой нет.

настрой одинаково и такого не будет.

для TTable (BDE) BDE Administrator->Configuration->Drivers->Native->DBASE (or FOXPRO)->LANGDRIVER = dBASE RUS cp866

для TADOTable (ADO Jet? его используеш?) в regedit HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase\DataCodePage = ANSI (or OEM не помню точно пробуй)


oss   (2002-11-25 10:44:00) [15]

я бы сказал, что TTable конвертирует, а Ado показывает как есть. Выход есть, использовать что-то одно, или писать все на латинице :)


Наверх

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