Форум: "Базы";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];
ВнизПроблема чтения данных Paradox 3.5 (DOS) Найти похожие ветки
← →
msguns © (2005-06-09 09:16) [0]Используются компоненты ADO + источник данных ODBC
Не могу добиться транслирования кириллицы в "человеческий" вид.
В ODBC настройку LANGDRIVER не нашел.
Помогите кто чем может бывшему депутату Госдумы ;))
← →
Anatoly Podgoretsky © (2005-06-09 09:27) [1]Ой и где это еще встречается. Да еще к этому и через АДО лезть.
Настройку надо искать не в ODBC, а в BDE или в JET. В зависимости от расположения звезд на клиенте.
← →
msguns © (2005-06-09 10:59) [2]Вся табла, Анатолий в том, что в DOC имена полей русские и BDE просто отказывается их интерпретировать. ODBC все очень хорошо читатает и даже туда пишет, но вот с кодировкой трабла - вместо половины русских букв - символы-заменители типа "<","?",">" и т.д. Да и символы не соответствуют оригиналу. Т.е. надо как-то это все преобразовать в ansi и отображать внятно. А вот как сделать не знаю. Пробовал ставить на OnGetText полей конвертацию OEMToChar, но никакого эффекта. Чего-то не допонимаю, имхо, но вот куда копать ?
← →
sniknik © (2005-06-09 11:26) [3]для jet
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Paradox\DataCodePage
> Настройку надо искать не в ODBC, а в BDE или в JET. В зависимости от расположения звезд на клиенте.
+ всетаки в драйвере ODBC если звезды "лягут" на старую систему. с неустановленным jet-ом, но имеюшимся старым же ODBC драйвером парадокса... (для парадокса правда не уверен полностью, а для dBase именно такая тройная схема)
ну и в самом файле (если конечно в этом формате это уже было)
> BDE просто отказывается их интерпретировать.
возможно проблема именно в несоответствии значка в файле с реальной кодировкой.
попробуй применить процедуру к таблице (вообщето это из хелпа, немного переделано)procedure TDatMod.ChangeLangDriver(DatabaseName, TableName, LDName: string);
var
TblExt: string;
Database: TDatabase;
TblDesc: CRTblDesc;
OptDesc: FLDDesc;
OptData: array [0..250] of Char;
Cur: hDBICur;
Rec: CFGDesc;
begin
if (TableName="") or (LDName="") then raise Exception.Create("Unknown TableName or LDName");
Database:=Session.OpenDatabase(DatabaseName);
try
if Database.IsSQLBased then raise Exception.Create("Function ChangeLangDriver working only with dBase or Paradox tables");
FillChar(OptDesc, SizeOf(OptDesc), #0);
FillChar(TblDesc, SizeOf(TblDesc), #0);
StrCopy(OptDesc.szName, "LANGDRIVER");
OptDesc.iLen:=Length(LDName)+1;
with TblDesc do begin
StrPCopy(szTblName, TableName);
TblExt:=UpperCase(ExtractFileExt(TableName));
if TblExt=".DBF" then StrCopy(szTblType, szDbase)
else if TblExt=".DB" then StrCopy(szTblType, szParadox)
else begin
AnsiToOEM(StrPCopy(OptData, DatabaseName), OptData);
if DbiOpenCfgInfoList(nil, dbiREADONLY, cfgPersistent, StrPCopy(OptData, "\DATABASES\"+StrPas(OptData)+"\DB INFO\"),Cur)<>DBIERR_NONE
then raise Exception.Create("Unknown table type");
try
while DbiGetNextRecord(Cur, dbiNOLOCK, @Rec, nil)<>DBIERR_EOF do
if StrComp(Rec.szNodeName, "DEFAULT DRIVER")=0 then begin
StrCopy(szTblType, Rec.szValue);
Break;
end;
finally
Check(DbiCloseCursor(Cur));
end;
end;
iOptParams:=1;
pfldOptParams:=@OptDesc;
pOptData:=@OptData;
end;
StrPCopy(OptData, LDName);
Check(DbiDoRestructure(Database.Handle, 1, @TblDesc, nil,nil, nil, False));
finally
Session.CloseDatabase(Database);
end;
end;
вызвав
ChangeLangDriver("D:\", "Table1.db", "cyrr");
а после открой в BDE (без конвертаций), и даже если получится, русские буквы в названиях это нехорошо.
← →
Anatoly Podgoretsky © (2005-06-09 11:50) [4]В любом случае проблема не в Парадоксе, а в звезлах.
msguns © (09.06.05 10:59) [2]
А БДЕ не хочешь применить?
← →
msguns © (2005-06-09 14:26) [5]BDE не "берет" таблицы с русскими именами полей
← →
Anatoly Podgoretsky © (2005-06-09 14:31) [6]msguns © (09.06.05 14:26) [5]
"Русское имя поля"
← →
msguns © (2005-06-09 17:28) [7]>Anatoly Podgoretsky © (09.06.05 14:31) [6]
Где такая опция ?
← →
sniknik © (2005-06-09 17:46) [8]это не опция это синтаксис. можно в хелпе по локал sql посмотреть.
← →
Anatoly Podgoretsky © (2005-06-09 19:37) [9]msguns © (09.06.05 17:28) [7]
сделай с начала самое простое.
TDbgrid, TDatasource, TTable свяжи их
Не указывай никаких полей и попробуй открыть. Скажи что получится.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c