Конференция "Базы" » Прочитать unicode данные из Oracle [D7]
 
  • gog © (29.05.09 13:47) [0]
    Данные в базе Oracle хранятся в unicode в нац. языке.
    Пробую соединится через BDE, ADO, TOraSession. Во всех случях
    данные искажаются (отображаются ???) уже в соответствующих Query компонентах, так что они не выводятся не в компонентах поддерживающие unicode, не в стандартных компонентах после преобразования.
  • sniknik © (29.05.09 14:15) [1]
    > Пробую соединится через BDE, ADO, TOraSession.
    про BDE забудь, не поддерживает unicode, что говорится у нутрях, и ничего с этим не поделать.

    ADO пойдет, но обертки (грид/дбедиты/...) нужно менять, VCL также не поддерживает unicode, но есть замена компоненты TNT (так называлась бесплатная версия, ищи их).
    пробовал access + ADO + TNT. получается.

    TOraSession про него ничего не знаю, скорее тоже поддерживает, если он более менее новый, но про "обертки" и для него все в силе.
  • gog © (29.05.09 14:41) [2]
    Может быть в ADO надо настроить параметры? Можете подсказать?
  • sniknik © (29.05.09 15:35) [3]
    нечего не надо, кроме того что уже написал...
  • Плохиш © (29.05.09 16:52) [4]

    > gog ©   (29.05.09 14:41) [2]
    >
    > Может быть в ADO надо настроить параметры? Можете подсказать?
    >
    >

    Забыть про свойство ToString и использовать свойство Value.
  • Игорь Шевченко © (29.05.09 17:00) [5]
    Я через через TNT-компоненты отображал данные из NCHAR, NVARCHAR колонок. Именно через ADO (ADOTable, если что)
  • gog © (29.05.09 17:26) [6]
    Я забираю данные из БД с помощью TADOQuery SELECT–ом, а потом
    пробовал заполнить TNTStringGrid кодом Cells[i,j]:= FieldByName('Some_Field').Value
    или записать вTNTEdit аналогичным методом но ничего не получается. Одни ???.
    Проверил прямой набор с клавиатуры в элементы, всё нормально, Copy Past тоже правильно работает, а вот SELECT никак.
  • Игорь Шевченко © (29.05.09 17:53) [7]
    Вообще странно, потому что ??? - это больше похоже на результат преобразования из юникода в Ansi.
  • Плохиш © (29.05.09 18:17) [8]

    > gog ©   (29.05.09 17:26) [6]

    Попробуй подключить к TNTDBGrid.
  • gog © (29.05.09 18:18) [9]
    Я тоже так думаю, проверил DataType соответствующего набора (FieldByName('Some_Field').DataType), он равен ftString, а не ftWideString. По тому думаю, что может быть надо как то настроить TADOConnection. У TOraSession есть параметр UseUnicode. Перевел его в True но никакого результата.
  • gog © (29.05.09 18:20) [10]

    > Попробуй подключить к TNTDBGrid.


    Пробовал, тот же результат
  • Плохиш © (29.05.09 18:22) [11]

    > gog ©   (29.05.09 18:20) [10]

    Показывай строку подключения. Только без домыслов, а обычным copy-paste.
  • Игорь Шевченко © (29.05.09 18:26) [12]
    На всякий случай я покажу :)

     object ADOConnection: TADOConnection
       Connected = True
       ConnectionString =
         'Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=u' +
         'ser;Data Source=orca'
       Provider = 'OraOLEDB.Oracle.1'
       Left = 44
       Top = 16
     end
  • gog © (29.05.09 18:26) [13]

    > Показывай строку подключения. Только без домыслов, а обычным
    > copy-paste.


    Provider=MSDAORA.1;Password=sutg;User ID=utg_select;Data Source=bccdb
  • Плохиш © (29.05.09 18:58) [14]

    > gog ©   (29.05.09 18:26) [13]

    Вот здесь http://msdn.microsoft.com/de-de/library/cc627448.aspx
    упоминают
    ; Unicode="True"

  • gog © (01.06.09 09:56) [15]
    К сожалению Я не знаю немецкий, но в строке подключения добавил Unicode=True, результат старый. Может быть значение имеет Regional Settings? Они у меня стоят Russian
  • Игорь Шевченко © (01.06.09 10:37) [16]

    > Может быть значение имеет Regional Settings? Они у меня
    > стоят Russian


    гадать можно долго. обычно приводится проблемный код, структура таблицы, настройки Oracle на клиенте...
  • sniknik © (01.06.09 11:16) [17]
    > К сожалению Я не знаю немецкий
    так почему бы не переключить страничку на родной для тебя язык? вроде -
    http://msdn.microsoft.com/zh-cn/library/cc627448.aspx
  • ANB (03.06.09 14:45) [18]
    1) Дернуть pl/sql developer и убедиться что ошибка повторяется
    2) Если повторяется - лезть в реестр и исправлять параметр NLS_LANG
 
Конференция "Базы" » Прочитать unicode данные из Oracle [D7]
Есть новые Нет новых   [134473   +33][b:0][p:0.001]