Форум: "Базы";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];
ВнизРвет кодировку MSSQL -> dbase IV Найти похожие ветки
← →
Siv Soft (2003-01-22 17:04) [0]Всем доброго времени суток!
Необходимо программно переносить данные из таблиц MSSQL в таблицы dBase IV, но возникает проблемма - рвет кодировку. У MSSQL cp 1251 , а у dBase IV cp 866. Как пофиксить сие так, чтобы из одной кодировки в другую нормально переводил?
Перегоняю обычно:
ADOTable1->FieldValues["DINP"]=ADOTable2->FieldValues["date"];
← →
sniknik (2003-01-22 17:29) [1]запросом через Jet не пробовал? и быстрее будет и кодировка автоматом приводится
если параметр Jet - DataCodePage в реестре OEM то ->
хелп
DataCodePage
Определяет способ сохранения текстовых страниц. Возможные значения:
OEM — Преобразования из OEM в ANSI и из ANSI в OEM выполняются.
ANSI — Преобразования из OEM в ANSI и из ANSI в OEM не выполняются.
← →
Siv Soft (2003-01-23 10:30) [2]Уточню за Jet - я и так вроде в ADOConnections работаю через Jet OLE DB 4.0. Может что-то другое имеется в виду?
А как в таком случае программно переводить или включить перевод из одной кодировки в другую? Как-то лазить в реестр на клиентской машине...
← →
sniknik (2003-01-23 10:53) [3]>Уточню за Jet - я и так вроде в ADOConnections работаю через Jet OLE DB 4.0. Может что-то другое имеется в виду?
может быть, в вопросе стоит из MSSQL -> dbase IV. т.е. в соеденении должно стоять чтото вроде Provider=SQLOLEDB.1....
а запрос делатся из него (т.е. самим MSSQL) примерно так
INSERT INTO
OpenDataSource("Microsoft.Jet.OLEDB.4.0", "Data Source="D:\";Extended properties=dBase IV")...CASHDISC
SELECT * FROM CASHDISC
а твоем варианте передача значениями между различными датасетами (неэффективно), можно перекодировать AnsiToOem, OemToAnsi, CharToOem (функции уточни может ошибся в написании)
> Как-то лазить в реестр на клиентской машине...
не понадобится, по умолчанию OEM стоит, а даже если и нет неужели проблема заначение в регистре поменять?
← →
Siv Soft (2003-01-23 11:58) [4]Спасибо за ответ.
Однако при использовании такого способа (конечно более эффективного) появляется проблемма запрос идет с ошибкой. В Query Analiser относительно синтаксиса все ок, но при исполнении выдается ошибка:
String or binary data would be truncated.
The statement has been terminated.
Как сие пофиксить?
Сам запрос такой:
INSERT INTO
OpenDataSource("Microsoft.Jet.OLEDB.4.0", "Data Source="E:\Keeper";Extended properties=dBase IV")...Report
SELECT * FROM Castodi.dbo.Report
← →
sniknik (2003-01-23 12:35) [5]гдето строки по длине различаются (структуры разные откуда и куда) или бинарные данные.
ставни. либо приводи в запросе к "правильному" типу.
← →
Siv Soft (2003-01-23 12:51) [6]Абсолютно одинаковые! Проверил и все равно тоже.
← →
sniknik (2003-01-23 13:29) [7]возможно запрос просто не синхронизировал поля (одно поле в другое пытается писать) или называются по разному
задавай явно
INSERT INTO
OpenDataSource("Microsoft.Jet.OLEDB.4.0", "Data Source="D:\";Extended properties=dBase IV")...CLASDISC
(PRICEINDEX, [PERCENT])
SELECT PRICEINDEX, SPERCENT FROM CLASDISC
(заметь разницу в названии)
← →
Siv Soft (2003-01-23 14:27) [8]Самый интересный момент заключается в том, что результат от сего способа такой же - все равно крякозябрики :(( (просматриваю Database Desktop). Как все это пофиксить?
← →
sniknik (2003-01-23 14:34) [9]пофиксить Database Desktop :-)
он же в дос кодировку переводит, смотри в Дос-е Нортон Командером к примеру.
а вот если спутал и на самом деле тебе нужно виндовую кодировку то сотри мой первый ответ про OEM/ANSi
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c