2015-11-23 3 views
0

Когда я получаю данные с набором записей из соединения, я не могу управлять языком даты. Это, как я получить данные:Измените язык для ADODB.Recordset или ADODB.Connection

Set rsData = New ADODB.Recordset 
Set rsData = conODBC.Execute(sql) 

SQL-оператор имеет строку ниже:

TO_CHAR(TO_DATE(TO_CHAR(DB_MONTH), 'MM'),'MON')||DB_YEAR AS DATE_STR 

он преобразует DB_MONTH и DB_YEAR к чему-то вроде DEC16 и работает прекрасно с SQL Developer.

Однако, если это происходит как поле Recordset с VBA, дата преобразуется в немецкий (я работаю с немецким Excel), и я получаю DEZ16.

Это становится проблемой, когда я выгружаю данные в лист и продолжаю работать с ним, так как я не могу контролировать, как возвращается моя строка данных.

ответ

0

Перед выполнением запроса вы должны установить язык данных на нужное значение. Должно быть что-то вроде этого:

Dim cmd As New ADODB.Command 
cmd.CommandType = CommandType.Text 
cmd.CommandText = "ALTER SESSION SET NLS_DATE_LANGUAGE = 'AMERICAN';" 
cmd.Execute 
+0

Это решило проблему. Я не использовал объект Command, но выполнил команду conODBC.Execute («ALTER SESSION SET NLS_DATE_LANGUAGE =« AMERICAN ») и впоследствии закрыл соединение. После открытия настройки были установлены. –

Смежные вопросы