Форум: "Базы";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];
ВнизADO, BDE, FOX, dBASE: КОДИРОВКА ДОС/ВИН Найти похожие ветки
← →
Alex_xxx © (2004-05-11 10:43) [0]Подскажите, кто знает.
Дано: таблицы FOX с описаниями DOS-кодировка(исходные данные).
таблица dBASE с результатом. Тоже должна быть в ДОСе.
Из таблиц FOXa читаю через ADO.
При попытке записать в dBASE через ADO получается фигня:
....
qADOQSave.SQL.Add("insert into plucash (articul,name) values (:art,:name))";
qADOQSave.Parameters.Items[0].Value:=qADOQGet.FieldByName("ARTICUL").AsString;
qADOQSave.Parameters.Items[1].Value:=WindowsToDos(qADOQGet.FieldByName("name2").AsString);
qADOQSave.ExecSQL;
....
При замене qADOQSave на qBDESave - все отлично.
Функция WindowsToDos выглядит так:
function WindowsToDos(s:string):string;
var s1,s2:string;
begin
s1:=s; SetLength(s2,Length(s1));
CharToOem(PChar(s1),PChar(s2));
WindowsToDos:=s2;
end;
НО: хочется все сделать в ADO. Даже требыется ADO :-(
Есть ли решение этой проблемы?
← →
sniknik © (2004-05-11 11:16) [1]т.е. 2 коннекта к фоксу и дбасе? строки конекта какие?
или коннект один? тогда не получится (у фокса(VFP) 1251 страница в дос у dBase 866) это вариант когда нужны преобразования.
у старого фокса та же страница, и преобразования не нужны совсем (можно просто copy файлу) но ты же их делаеш (?).
функцию можно поменять (меньше места займет, или тебе за количество строк платят? ;о)))
function WindowsToDos(const s: string): string;
begin
SetLength(result, Length(s));
CharToOem(PChar(s),PChar(result));
end;
← →
Alex_xxx © (2004-05-11 11:39) [2]Строки следующие:
dbRezult.ConnectionString:="Provider=MSDASQL.1;Persist Security Info=False;"+"Extended Properties="DSN=файлы dBASE;DBQ="+PPlu+";DefaultDir="+PPlu+";DriverId=533;MaxBufferSize=2048;PageTimeout=5;"";
dbShop.ConnectionString:="Provider=MSDASQL.1;Persist Security Info=False;"+"Extended Properties="DSN=Visual FoxPro Tables;UID=;"+"SourceDB="+PShop+";SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;"+"Deleted=Ye s;"";
А за количество строк мне не платят, сделал так потому, что работает, а красоты наводить некогда :-)
← →
sniknik © (2004-05-11 12:00) [3]со второй ничего не сделаеш как есть так и читает (настроек перекодировки нет (?) не находил/с другой стороны и в документацию сильно не углублялся)
а первую советую сменить, на
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\;Extended Properties=dBase IV;Persist Security Info=False
т.к. есть неопределенность в использовании старого ODBC драйвера, он подменяется jet-ом, и в разных вариантах будут разные настройки, и + не нужен DSN имя которого тоже может быть разным (английское/русское)
хотя при смене тоже есть варианты установлен/неустановлен BDE но их всетаки на один меньше будет ;о)
изменяется в реестре (для твоей строки это тоже скорее всего действует (значит уже подменен))
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase
DataCodePage
Этот параметр используется только в том случае, если на данном компьютере не установлено приложение BDE.
Определяет способ сохранения текстовых страниц. Возможные значения:
OEM — Преобразования из OEM в ANSI и из ANSI в OEM выполняются.
ANSI — Преобразования из OEM в ANSI и из ANSI в OEM не выполняются.
По умолчанию задается значение «OEM». Значения имеют тип String в Windows 95 и Windows NT 4.0 или тип REG_SZ в Windows NT 3.51.
да вторую тоже можно поменять (просто избавиться от DSN заменив его на имя драйвера)
Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DRIVER={Microsoft Visual FoxPro Driver};UID=;SourceDB=d:\;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"
> А за количество строк мне не платят, сделал так потому, что работает, а красоты наводить некогда :-)
так оно и быстрее будет, не только ради красоты.
← →
Alex_xxx © (2004-05-11 12:14) [4]Спасибо. После обеда попробую.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c