Имя: Пароль:
1C
1С v8
Запрос к базе Oracle
,
0 tvfox
 
19.08.20
15:06
Добрый день !


Подключаюсь к базе Oracle, делаю запрос. Все нормально отрабатывает. Только в результате запроса вместо кирилицы стоят знаки ? .
Что можно сделать ?

Соединение    = Новый COMОбъект("ADODB.Connection");

Соединение.ConnectionString = "Driver={Oracle in OraDb12g_home1};DSN=PLANT;Password=" + Пароль + ";User ID=" + Логин + ";Data Source=" + Сервер;

Соединение.Open() ;

ТекстЗапроса = "
|SELECT
| zpu_name AS ""Name""
|FROM PARUS.ZPU_TYPES";


rsRES = NEW COMObject("ADODB.Recordset");
rsRES.Open(ТекстЗапроса, Соединение);


Пока rsRES.EOF() = 0 Цикл

мм = СокрЛП(rsRES.Fields("Name").Value);
Сообщить(мм) ;

rsRES.MoveNext();
КонецЦикла ;
1 ДенисЧ
 
19.08.20
15:09
там файлик конфигурации надо править *.ora как=то так
Там кодировку надо задать. М если не ошибаюсь - ещё в реестре где-то лет 10 назад ковырялся. Гуглил... За день справился
2 1CnikPetya
 
19.08.20
15:13
На сервере с 1С русский язык установлен?
3 tvfox
 
19.08.20
15:44
(2) Установлен
4 tvfox
 
19.08.20
15:44
(1) Сейчас попрбую
5 tvfox
 
19.08.20
16:18
Пробовал переменную NLS_LANG менять на сервере, не помогло
6 acht
 
19.08.20
16:27
(5) Попробуй поиграться вот этим:
https://docs.oracle.com/cd/B28359_01/server.111/b28286/functions027.htm#SQLRF00620
7 Лефмихалыч
 
19.08.20
16:32
+(1) C:\oracle\client\11.2.0\client_1\network\admin\tnsnames.ora
для случая, когда клиент установлен в c:\oralce\client

внутрях записи вида

${ALIAS_NAME} =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ${database_host})(PORT = ${LISTENER_PORT}))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ${SERVICE_NAME})
    )
  )

${ALIAS_NAME}, ${database_host}, ${LISTENER_PORT},${SERVICE_NAME} - заменить на настоящие
8 Лефмихалыч
 
19.08.20
16:33
tnsnames.ora - это ораклизьменный аналог того, что в винде называется system dsn и управляется из оснастки управления ODBC-драйверами
9 Лефмихалыч
 
19.08.20
16:35
хотя, наверное, можно и через панель управления DSN настроить так, чтобы работало, без tnsnames. Но на практике у меня не вышло.
10 acht
 
19.08.20
16:36
(9) OraOLEDB.Oracle понимает параметры tns прямо в строке подключения

https://www.connectionstrings.com/oracle-provider-for-ole-db-oraoledb/tns-less-connection-string/
11 Лефмихалыч
 
19.08.20
16:45
(10) да, в теории так и написано
12 acht
 
19.08.20
17:11
(11) И фактически оно тоже работает. Возможно, конечно, не все разбирает, но работает
13 tvfox
 
19.08.20
17:46
Большое спасибо, завтра попробую.
О результатах отпишусь
14 tvfox
 
20.08.20
14:37
Добрый день !
Заработало.
Помогла установка значения переменной NLS_LANG = AMERICAN_AMERICA.CL8MSWIN1251