Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.034 c
14-1084360870
bon
2004-05-12 15:21
2004.05.30
Как отменить все сообщения, посылаемые окну?


7-1083238581
Rockman
2004-04-29 15:36
2004.05.30
Как без прав админа получить доступ к HKLM из своей проги в NT


1-1084886617
Empleado
2004-05-18 17:23
2004.05.30
try


14-1084128355
VID
2004-05-09 22:45
2004.05.30
Как узнать в какой папке лежат файлы...


4-1082096789
Mamed
2004-04-16 10:26
2004.05.30
printer page Orientation





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский