Глюк или Ламерство (Подключение к Oracle DB) Need HELP!!!
Модератор: Naeel Maqsudov
Я пытаюсь подклюснится к базе данных, используя стандартное выражение:
Dim O_Session As OraSessionClass
Dim O_Database As OraDatabase
Set O_Session = CreateObject("OracleInProcServer.XOraSession")
Set O_Database = O_Session.OpenDatabase("WDB", "wizard/wizard", 0&)
на что получаю:
Run-time error '91' Object variable or With block variable not set
Причем всё прекрасно работало, до переустановки Officе.
Help is NEEDED!!!!!!!!!!![/b]
Dim O_Session As OraSessionClass
Dim O_Database As OraDatabase
Set O_Session = CreateObject("OracleInProcServer.XOraSession")
Set O_Database = O_Session.OpenDatabase("WDB", "wizard/wizard", 0&)
на что получаю:
Run-time error '91' Object variable or With block variable not set
Причем всё прекрасно работало, до переустановки Officе.
Help is NEEDED!!!!!!!!!!![/b]
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Переменная O_Session или O_Database однозначно оказалась неприсвоенной.
(Вы не указали на какой строке ошибка)
В первую очередь надо выяснить какая именно.
tnsping wdb проходит нормально?
другими средствами подключаться пробовали? (SQL+ом, например)
(Вы не указали на какой строке ошибка)
В первую очередь надо выяснить какая именно.
tnsping wdb проходит нормально?
другими средствами подключаться пробовали? (SQL+ом, например)
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Извиняюсь, недочитал вопрос.
Кроме офиса еще что-нибудь переустанавливали?
Проверьте, класс OracleInProcServer.XOraSession в реестре зарегистрирован нормально, и по пути указанному в InprocServer указанная там DLL лежит?
А еще в редакторе VBA проверьте в Tools\References ссылка на вышеупомянутую библиотеку включена?
Кроме офиса еще что-нибудь переустанавливали?
Проверьте, класс OracleInProcServer.XOraSession в реестре зарегистрирован нормально, и по пути указанному в InprocServer указанная там DLL лежит?
А еще в редакторе VBA проверьте в Tools\References ссылка на вышеупомянутую библиотеку включена?
Naeel Maqsudov, "Проверьте, класс OracleInProcServer.XOraSession в реестре зарегистрирован нормально"
Как это можно проверить?
Ошыбка всплывает в последней строке прведенного кода (Set O_Database = O_Session.OpenDatabase("WDB", "wizard/wizard", 0&)). Неприсваевается переменная O_Session (на сколько я понимаю). Но как ето лечится не имею понятия. Ссылки проверял - указанны верно.
Как это можно проверить?
Ошыбка всплывает в последней строке прведенного кода (Set O_Database = O_Session.OpenDatabase("WDB", "wizard/wizard", 0&)). Неприсваевается переменная O_Session (на сколько я понимаю). Но как ето лечится не имею понятия. Ссылки проверял - указанны верно.
Народ!!! что вообше никаких идей в чем может быть проблема. Я думаю что это должно быть связано с настройками и подключением библиотек, но я совершенно не разбирабсь в VB и не знаю как это исправить...
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Дык, как проверить?! Ищите в реестре строку "OracleInProcServer.XOraSession", она будет по пути \HKEY_CLASSES_ROOT. В этом параметре вложено значение CLSID (для XOraSession.3 оно ={3893B4A0-FFD8-101A-ADF2-04021C007002}, например). Далее по пути \HKEY_CLASSES_ROOT\CLSID\{3893B4A0-FFD8-101A-ADF2-04021C007002} найдете параметр с вложенным значением InProcServer, указывающим на DLL. Проверьте также, на месте ли DLL. Если она переехала, зарегистрируйте ее коандой RegSvr32 oip8.dll (или как она там у Вас называется) (...хотя в такой ситуации речь видимо будет идни о переустановке клиентской части Oracle)
Если эта проверка ничего не выявит - все окажется верно - то значит самой используемой библиотеке чего-то не хватает. Т.е. сама oip8(9).dll работает - виновата клиентская часть oracle. Посмотрите в переменной окружения Path прописаны ли пути в папку BIN клиентской части.
Если окажется, что все-таки O_Session создается, то надо проверять подключение к базе. Попробуйте подключиться c помощью SQL+. Проверьте, во всех ли нужных местах лежат файлы tnsnames.ora с нужным содержанием.
Если эта проверка ничего не выявит - все окажется верно - то значит самой используемой библиотеке чего-то не хватает. Т.е. сама oip8(9).dll работает - виновата клиентская часть oracle. Посмотрите в переменной окружения Path прописаны ли пути в папку BIN клиентской части.
Поставьте на строке Set O_Session = ... точку останова, или просто пройдите этот макрос по шагам. После выполнения этой строки наведите курсор на переменную O_Session и увидите точно (можно также добавить ).Неприсваевается переменная O_Session (на сколько я понимаю).
Если окажется, что все-таки O_Session создается, то надо проверять подключение к базе. Попробуйте подключиться c помощью SQL+. Проверьте, во всех ли нужных местах лежат файлы tnsnames.ora с нужным содержанием.
Naeel Maqsudov, спасибо за помошь. Пришлось переустоновить всю систему, но он заработал. Это просто Oracle категорически меня не выносит 

Вы будете смеятся, а я буду плакать!!!
Он опять не пашет и я понятия не имею почему. На этот раз я ничего не менял, как вчера заработала, так сегодня перестала





- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Скоро как раз Новый год.
Попросите у Деда мороза в подарок настоящий большой шаманский бубен.
Пляски с бубном в нашем деле очень помогают. Даже лучше иногда чем установка драйвера HANDS.SYS
------------
1) Ошибка возникает в том же месте или нет?
2) А жив ли сервер?
3) Еще раз проверьте все что было посоветовано ранее.
4) Проверьте наличие в Path путей в папку bin клиентской части Oracle.
5) Проверьте наличие во всех нужных местах и правильное содержание файлов tnsnames.ora и sqlnet.ora.
Больше ничего не может быть в принципе.
Все остальное - это шаманство, и тут без бубна уже никак не решить.
Попросите у Деда мороза в подарок настоящий большой шаманский бубен.

Пляски с бубном в нашем деле очень помогают. Даже лучше иногда чем установка драйвера HANDS.SYS

------------
1) Ошибка возникает в том же месте или нет?
2) А жив ли сервер?
3) Еще раз проверьте все что было посоветовано ранее.
4) Проверьте наличие в Path путей в папку bin клиентской части Oracle.
5) Проверьте наличие во всех нужных местах и правильное содержание файлов tnsnames.ora и sqlnet.ora.
Больше ничего не может быть в принципе.
Все остальное - это шаманство, и тут без бубна уже никак не решить.
Я в Oracle не силен, вообше не разбираюсь в том что касается администрирывания.
По пунктам:
1. Ошибка та же;
2. Сервер в порядке - SQL+ работает нормально;
3. Реестр и DLL тоже на месте;
4. Чесно говоря, понятия не имею где это можно посмотреть и выставить.
5.SQLNET.ORA выглядит пустоватым по сравнению с Sample (но я не знаю мож он такой и должен быть)
# SQLNET.ORA Network Configuration File: E:\oracle\ora81\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
TNSNAMES.ORA вроде впарядке
# TNSNAMES.ORA Network Configuration File: E:\oracle\ora81\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
WDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = wmw)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = WDB)
)
)
WBASE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = wmw)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = WBASE)
)
)
INST1_HTTP =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = wmw)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = WBASE)
(PRESENTATION = http://admin)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
По пунктам:
1. Ошибка та же;
2. Сервер в порядке - SQL+ работает нормально;
3. Реестр и DLL тоже на месте;
4. Чесно говоря, понятия не имею где это можно посмотреть и выставить.
5.SQLNET.ORA выглядит пустоватым по сравнению с Sample (но я не знаю мож он такой и должен быть)
# SQLNET.ORA Network Configuration File: E:\oracle\ora81\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
TNSNAMES.ORA вроде впарядке
# TNSNAMES.ORA Network Configuration File: E:\oracle\ora81\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
WDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = wmw)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = WDB)
)
)
WBASE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = wmw)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = WBASE)
)
)
INST1_HTTP =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = wmw)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = WBASE)
(PRESENTATION = http://admin)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)