Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Рвет кодировку MSSQL -> dbase IV [D6, MSSQL, dBase, FoxPro]


Siv Soft ©   (2003-01-22 17:04:00) 

Всем доброго времени суток!
Необходимо программно переносить данные из таблиц MSSQL в таблицы dBase IV, но возникает проблемма - рвет кодировку. У MSSQL cp 1251 , а у dBase IV cp 866. Как пофиксить сие так, чтобы из одной кодировки в другую нормально переводил?

Перегоняю обычно:
ADOTable1->FieldValues["DINP"]=ADOTable2->FieldValues["date"];


sniknik   (2003-01-23 14:34:00) [1]

пофиксить Database Desktop :-)

он же в дос кодировку переводит, смотри в Дос-е Нортон Командером к примеру.

а вот если спутал и на самом деле тебе нужно виндовую кодировку то сотри мой первый ответ про OEM/ANSi


Siv Soft   (2003-01-23 14:27:00) [2]

Самый интересный момент заключается в том, что результат от сего способа такой же - все равно крякозябрики :(( (просматриваю Database Desktop). Как все это пофиксить?


sniknik   (2003-01-23 13:29:00) [3]

возможно запрос просто не синхронизировал поля (одно поле в другое пытается писать) или называются по разному

задавай явно

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 12:51:00) [4]

Абсолютно одинаковые! Проверил и все равно тоже.


sniknik   (2003-01-23 12:35:00) [5]

гдето строки по длине различаются (структуры разные откуда и куда) или бинарные данные.

ставни. либо приводи в запросе к "правильному" типу.


Siv Soft   (2003-01-23 11:58:00) [6]

Спасибо за ответ.
Однако при использовании такого способа (конечно более эффективного) появляется проблемма запрос идет с ошибкой. В 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 10:53:00) [7]

>Уточню за 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 10:30:00) [8]

Уточню за Jet - я и так вроде в ADOConnections работаю через Jet OLE DB 4.0. Может что-то другое имеется в виду?

А как в таком случае программно переводить или включить перевод из одной кодировки в другую? Как-то лазить в реестр на клиентской машине...


sniknik   (2003-01-22 17:29:00) [9]

запросом через Jet не пробовал? и быстрее будет и кодировка автоматом приводится
если параметр Jet - DataCodePage в реестре OEM то ->
хелп

DataCodePage
Определяет способ сохранения текстовых страниц. Возможные значения:
OEM — Преобразования из OEM в ANSI и из ANSI в OEM выполняются.
ANSI — Преобразования из OEM в ANSI и из ANSI в OEM не выполняются.


Наверх

Титульная страница Поиск, карта сайта Написать письмо