|
Соединение с Oracle 11g | ☑ | ||
---|---|---|---|---|
0
ETurdymuratov
22.07.13
✎
13:15
|
Привет всем.
Помогите разобраться с проблемой. Стоит задача: залесть в БД Oracle и вытащить инфу из одной таблицы. Есть скрипт соединения Функция СоединениеСБД() Соединение=Новый COMОбъект ("ADODB.Connection"); ConnectionString = "Provider=msdaora;Data Source=Source;User Id=USER;Password=PASS;"; Соединение.ConnectionTimeOut =600; Соединение.CursorLocation = 3; try Соединение.Open(ConnectionString); except Сообщить("Невозможно установить соединение"); endtry; Возврат(Соединение); КонецФункции при запуске скрипта в режиме предприятие нет никаких ошибок, просто закрывается 1С. В режиме отладки доходит до строки Соединение.Open(ConnectionString); дальше закрывается 1С. В чем может быть проблема? |
|||
1
Maxus43
22.07.13
✎
13:19
|
Соединение.ConnectionTimeOut =600;
Соединение.CursorLocation = 3; закоменти это для начала |
|||
2
ETurdymuratov
22.07.13
✎
13:21
|
(1)
Не помогло, выкинуло... |
|||
3
ДенисЧ
22.07.13
✎
13:22
|
Попробуй аппаратное ускорение графики уменьшить.
Без шуток... |
|||
4
IKSparrow
22.07.13
✎
13:25
|
+(3) И режим поставь 800х600 SVGA в безопасном режиме.
Без шуток... |
|||
5
ETurdymuratov
22.07.13
✎
13:25
|
(3) Я новичек, но не до такой же степени что протереть монитор и почистить мышку чтобы соединиться с Ораклом =)
|
|||
6
ДенисЧ
22.07.13
✎
13:26
|
(5) Ты попробуй сначала...
|
|||
7
IKSparrow
22.07.13
✎
13:26
|
(5) Ну ты может и не до такой степени, а вот Оракл знатный капризуля.
|
|||
8
Maxus43
22.07.13
✎
13:26
|
(5) попробуй (3) на всякий, в 1с есть такой глюк, тока я не вижу в этой ситуации связи...
|
|||
9
ETurdymuratov
22.07.13
✎
13:29
|
Ребят, будут еще мнения?
|
|||
10
ДенисЧ
22.07.13
✎
13:30
|
(9) ты попробовал (3) ?
|
|||
11
Maxus43
22.07.13
✎
13:31
|
(9) не из 1с по этой строке подключения подключится можешь?
|
|||
12
ETurdymuratov
22.07.13
✎
13:31
|
Тут мне еще подсказывают что в место i3 Celeron 1600 поставить ото толстый клиент возможно быстро отрабатывает этот скрипт. =)
|
|||
13
sda553
22.07.13
✎
13:32
|
Заведи ODBC линк на этот оракл
|
|||
14
sda553
22.07.13
✎
13:33
|
(0) И еще из екселя попробуй те же строчки, с какой ошибкой вывалятся
|
|||
15
ETurdymuratov
22.07.13
✎
13:33
|
(11) А как можно проверить?
|
|||
16
sda553
22.07.13
✎
13:38
|
(15) В екселе набей макрос
Private Sub CommandButton1_Click() Dim Con1 As New ADODB.Connection Con1.Open "Provider=msdaora;Data Source=Source;User Id=USER;Password=PASS;" Con1.Close msgBox "Success" End Sub |
|||
17
ETurdymuratov
22.07.13
✎
13:51
|
(16) ORA-12154: TNS: невозможно разрешить имя службы
|
|||
18
ETurdymuratov
22.07.13
✎
13:51
|
Спасибо, теперь хоть понятно что строка не подключается, ото просто выкидывало...
|
|||
19
ETurdymuratov
22.07.13
✎
14:10
|
(10)
Это шутка была серьезной? |
|||
20
ДенисЧ
22.07.13
✎
14:11
|
(19) Это была не шутка.
1с на ителовском встроенном видео на максимуме аппаратного ускорения, бывает, вылетает. Сам офигел, когда в первый раз увидел. |
|||
21
ДенисЧ
22.07.13
✎
14:11
|
*интеловском
|
|||
22
George Wheels
22.07.13
✎
14:16
|
Попробуй вместо Provider=... и Data Source=...
указать Driver={Microsoft ODBC for Oracle};Server=ТвойIP;Database=ТвояБаза |
|||
23
George Wheels
22.07.13
✎
14:17
|
(22)+ Server=IPСервера
|
|||
24
Maxus43
22.07.13
✎
14:19
|
строку вобще например так собери, вроде работало
Соединение = Новый COMОбъект("ADODB.Connection"); Соединение.ConnectionString = "Provider=MSDAORA;Password="+pwd+";User ID="+uid+";Data Source="+database+";Persist Security Info=True;CharSet=AMERICAN_AMERICA.CL8MSWIN1251;"; |
|||
25
George Wheels
22.07.13
✎
14:29
|
||||
26
Maxus43
22.07.13
✎
14:31
|
(25) ну так уж тогда, http://www.connectionstrings.com/oracle
автору оракл надо |
|||
27
George Wheels
22.07.13
✎
14:32
|
(26) Логично. Не ту ссылку скопировал.
|
|||
28
sda553
22.07.13
✎
14:40
|
(17) Ну так показывай теперь фрагмен файла tnsnames.ora как у тебя там имена прописаны
|
|||
29
mistеr
22.07.13
✎
15:09
|
(0) Выкидывай msdaora (и odbc) и ставь родной клиент. Можно Instant Client, с дополнительными телодвижениями строго по инструкции.
Говорю как ораклист со стажем. |
|||
30
sda553
22.07.13
✎
15:56
|
(29) а деньги где взять на клиента родного?
|
|||
31
mistеr
22.07.13
✎
16:01
|
(30) С каких пор он стоит денег?
|
|||
32
ДенисЧ
22.07.13
✎
16:06
|
(30) Инстанс клиент безплатен
|
|||
33
mistеr
22.07.13
✎
16:15
|
(32) Полный тоже.
|
|||
34
Мэс33
22.07.13
✎
17:45
|
Рабочий код соединения:
где -(Oracle in instantclient10_2 ) - драйвер в системных источниках данных - VOracle - Имя драйвера Устанавливал instantclient10_2. ---------------------------------- Соединение = Новый COMОбъект("ADODB.Connection"); Соединение.ConnectionString = "DRIVER={Oracle in instantclient10_2};Data Source=VOracle;User ID="+ЛогинSiebel+";Password="+ПарольSiebel+";"; Соединение.CursorLocation = 3; Соединение.Open(); RS = Новый COMОбъект("ADODB.Recordset"); RS.CursorType = 1; Command = Новый COMОбъект ("ADODB.Command"); Command.CommandText = "ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MM-YYYY HH:MI:SS'"; Command.ActiveConnection = Соединение; Command.CommandType = 1; Command.Execute(); Command.CommandText = "текст запроса"; // ваш запрос Command.Execute(); RS = Command.execute(); RS.movefirst(); -- далее перебор Пока НЕ RS.EOF() Цикл // обработка полученных данных по RS.<ИмяПоля>.name и RS.<ИмяПоля>.Value RS.MoveNext(); КонецЦикла; |
|||
35
beholder
22.07.13
✎
18:05
|
(0) сделай udl файл и попробуй соединится через него, если получится скопируй строку подключения оттуда.
Если не получается - шамань с драйверами и клиентами оракла. ЗЫ однажды мучались с такой фигней: то работает то не работает. А у нас был кластер из трех серверов. Оказалось что админы установили дрова на одном, а про остальные два забыли. |
|||
36
ETurdymuratov
03.08.13
✎
23:25
|
(23) Теперь выругался по другому:
{ОбщийМодуль.АвтоматизацияКиви.Модуль(25)}: Значение не является значением объектного типа (Execute) НаборЗаписей = Соединение.Execute(ЗапросПоДатеИСумме); |
|||
37
ETurdymuratov
03.08.13
✎
23:37
|
(24)
... Ошибка при вызове метода контекста (Execute) НаборЗаписей = Соединение.Execute(ЗапросПоДатеИСумме); по причине: Произошла исключительная ситуация (ADODB.Connection): Операция не допускается, если объект закрыт. |
|||
38
ETurdymuratov
03.08.13
✎
23:43
|
(29)
Достаточно будет если только на сервере 1С предприятия поставить клиента Oracle? |
|||
39
Живой Ископаемый
03.08.13
✎
23:59
|
(38) если обращение будет идти только из серверных модулей
|
|||
40
Живой Ископаемый
04.08.13
✎
00:01
|
(36,37) ну так не закрывай соедининие, держи его открытым
|
|||
41
ETurdymuratov
04.08.13
✎
19:57
|
(40) В коде нету команды на закрытие соединения, но ошибка осталась.
|
|||
42
ETurdymuratov
04.08.13
✎
19:58
|
(39) Понял
|
|||
43
Живой Ископаемый
04.08.13
✎
20:33
|
(41) если это соединение и ты его кладешь в хранилище, где оно например живет больше 15 минут, или какой у твоего оракла настроен таймаут, то это уже не соединение адодб, а неопределено, а у неопределено нет метода. Ехекьюте.
Понятно? |
|||
44
sda553
04.08.13
✎
23:01
|
а зачем так много букв и объектов.
Там соединение.open(); recordset=соединение.execute(sqlзапрос); recordset.movefirst(); while not(recordset.eof) { val = recordset.field(fieldname).value; recordset.movenext(); } и вроде как и все |
|||
45
Живой Ископаемый
04.08.13
✎
23:21
|
М... В каком месте их много?
|
|||
46
sda553
05.08.13
✎
06:36
|
в 34
|
|||
47
Живой Ископаемый
05.08.13
✎
07:56
|
А, ну да
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |