![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблемы с 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 показывает как есть. Выход есть, использовать что-то одно, или писать все на латинице :)