Связь 1С с Oracle

  • Автор темы Guest
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

Добрый день, столкнулся с проблемой, создал обработку, которая загружает с Oracle в 1С 7.7 необходимую мне информацию, у меня она чудесно работала, как только попробовал запустить её на одном из серверов(не сервер Oracle), вылезла ошибка, в строке DataBaseConnection.Open():
«Microsoft OLE DB Provider for Oracle: Произошла ошибка Oracle, для которой невозможно загрузить сообщение из Oracle.»

Код обработки:
DataBaseConnection = CreateObject("ADODB.Connection");

DataBaseConnection.ConnectionString = "Provider=MSDAORA.1;Password=**;User ID=**;Data Source=*****;Persist Security Info=True";
DataBaseConnection.Open();
…….
Мои данные поменял на ****.

Я долгими мучениями, нашел выход один:
DataBaseConnection2 = CreateObject("ADODB.Connection");
DataBaseConnection = CreateObject("ADODB.Connection");
DataBaseConnection2.ConnectionString = "Provider=OraOLEDB.Oracle;Password=**;User ID=**;Data Source=****;Persist Security Info=True";
DataBaseConnection2.Open();
DataBaseConnection.ConnectionString = "Provider=MSDAORA.1;Password=***;User ID=***;Data Source=*****;Persist Security Info=True";
DataBaseConnection.Open();

Подключившись сначала через провайдера OraOLEDB.Oracle, и не закрывая базу зайти через MSDAORA.1…. Я честно говоря чуток удивлен(мягко говоря)
Но это не есть идеальный выход с положения.
Кто что может посоветовать?


П.С. Писалось на 1С 7.7. Сервер Win Serv2003, Oracle 9.2, переустановленный ADO 2.7
 
V

vitfil

Честно говоря, создается впечатление, что драйвер не видит сервера. Посмотрите версии драйверов на работающем и на ненормально работающем серверах, а также какие DSN прописаны на них. Что-то мне подсказывает, что дело именно в этом...
 
G

Guest

Спасибо за ответ, но и на моем компе и на сервере, альтернативный днс, это сервер Oracle.
 
J

jcnby

хм .... тогда наверное где-то в строке соединения .... быть может там не хватает каких либо операторов? ибо насколько я помню ( очень смутно) для каждого треб. свои опред. операторы.

DataBaseConnection2.ConnectionString = "Provider=OraOLEDB.Oracle;Password=**;User ID=**;Data Source=****;Persist Security Info=True";
DataBaseConnection2.Open(); -может тут сразу попробовать перейти на записи через рекордсэт .... серавно она ж отрыта в упор ... и через етот драйв она должна похать ...
 
G

Guest

К сожалению не пахает, хотя возможно я что-то не так и делал. У меня нету опыта использывать OraOLEDB.Oracle, да и в иенете я не нашел достойного примера.
Вот код с OraOLEDB.Oracle:
DataBaseConnection = CreateObject("ADODB.Connection");
DataBaseConnection2.ConnectionString = "Provider=OraOLEDB.Oracle;Password=**;User ID=**;Data Source=****;Persist Security Info=True";
DataBaseConnection2.Open();
RecordSet = СоздатьОбъект("ADODB.Recordset");
RecordSet.ActiveConnection = DataBaseConnection;
RecordSet.CursorLocation = 3; // UseClient
RecordSet.Open("SELECT payaccount.account_num,payaccount.account_date,client.Name,CAST(client.zkpo AS char(10)) AS zkpo,CAST(payaccount.summa AS char(10)) AS suma FROM payaccount,client WHERE client.id=payaccount.client_id and payaccount.ACCOUNT_DATE>='" +ДатаНач +"' and payaccount.ACCOUNT_DATE<='"+ДатаКон+"' ORDER BY payaccount.account_date");

Для i = 1 По RecordSet.RecordCount Цикл


Оно не находит ни одной строки :(((
...............
 
J

jcnby

rs.Open "Таблица", cn.ConnectionString, adOpenStatic, adLockOptimistic

где cn.ConnectionString
Dim cn As New ADODB.Connection
cn.ConnectionString = "Provide и т.д.
adOpenStatic, adLockOptimistic -курсоры

For h = 1 To rs.RecordCount - 1 Step 1 цикл типа

DataBaseConnection2.Open(); - тогда ету страку можно убрать - нам ненада ее открывать , ибо мы сразу рекордсэт открываем тупо влоб на таблицу сразу ( в моем примере )




просто различные структуры получения данных из разных способов .... гдето Рекорды, Гдето филды, гдето ваобще я вное обращение по адресу .... жаль но наверное более я не вспомню ... перестал этим заниматься после того как сервак положил и его реанимировали 5 часиков)) сказали более не экспереминтировать))




Айайайайай - вспомнил .... кароче все у тебя было нормально .....
Есть такая фича - делаешь Текстовый файл ( меняешь у него разрежение на UDL) и просто генерируешь строку соединения для етого компа - он автоматом посчитает что нада ему и что нет, и будет тебе коннект. Попробуй ее- и там кстати сразуже можно проверить идет коннект или нет
 
V

vitfil

Так кто спорит, что будет видно? При настройке датасорса тоже будет видно.
 
G

Guest

Аффтор здесь )))
Извините, на счет DSN и впрямь не заметил, с ним все нормально, это 100% настроено идентично моему компу…
Да и если б он был не верен, то я б вообще не смог бы подрубиться к базе.

И плюс к тому же на серваке стоит прога, которая также работает с этой же базой оракла, и у неё все настройки подключения такие же как я задаю в 1С и она работает .

На счет UDL файла, интересная идея, спасибо, я попробую и отпишусь, помогло ли…
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!