Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel, OO4O, проблема с выводом SQL последовательности / 5 сообщений из 5, страница 1 из 1
28.12.2006, 14:21:51
    #34230557
AnatolyOil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, OO4O, проблема с выводом SQL последовательности
День добрый. Мне надо в поле эксела ввести очередной номер сиквенса (последовательности) из БД Оракла. Использую такой код, основанный на технологии ОО4О.
Проблема: при запуске такой процедуры сиквенс увеличивается не на 1 значение а на 2.
Причем эта же команда SQL в навигаторе дает последовательное приращение сиквенса на 1.
Такое ощущение, что команда в данном коде запускается дважды. Я не прав? как исправить сей досадный error?
--------------
Sub SELECT_Num_Packet()
Dim sSQLVar As String

'Declare variables as objects
Dim OraSession As Object
Dim OraDatabase As Object
Dim EmpDynaset As Object
' стираю ячейку
Sheets("Sheet1").Select
Range(Cells(6, 5), Cells(6, 5)).Select
Selection.ClearContents

sSQLVar = "select XXTNH_PO_REQ_NUM_PACKET_SEQ.NEXTVAL as Num_Packet from dual"

Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase("EXCEL_PO", "app/123456", 0&)
Set EmpDynaset = OraDatabase.CreateDynaset(sSQLVar, 0&)
' записываю в поле значение сиквенса
ActiveSheet.Cells(6, 5) = EmpDynaset.Fields(0)
End Sub
-----------------
EXCEL_PO - tns имя сервера, имена,пароли нереальные
...
Рейтинг: 0 / 0
04.01.2007, 06:47:13
    #34236406
AnatolyOil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, OO4O, проблема с выводом SQL последовательности
Плюнул... пущай увеличивается на 2, особой беды в этом нет...
...
Рейтинг: 0 / 0
04.01.2007, 17:57:41
    #34237262
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, OO4O, проблема с выводом SQL последовательности
А если принудительно закрывать рекордсет и коннект к базе?
Попробуй хотя бы из макроса что-нибудь подобное:
Код: plaintext
1.
2.
3.
4.
5.
6.
Set EmpDynaset = OraDatabase.CreateDynaset(sSQLVar,  0 &)
ActiveSheet.Cells( 6 ,  5 ) = EmpDynaset.Fields( 0 )
EmpDynaset.Close() ' я мало знаком с ораклом возможно закрывается не так.
' а потом сразу послать ту же самую команду повторно:
Set EmpDynaset = OraDatabase.CreateDynaset(sSQLVar,  0 &)
ActiveSheet.Cells( 7 ,  5 ) = EmpDynaset.Fields( 0 )
EmpDynaset.Close()
...
Рейтинг: 0 / 0
05.01.2007, 08:00:45
    #34237834
AnatolyOil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, OO4O, проблема с выводом SQL последовательности
Нет, если просто закрыть а потом записывать в ячейку - все равно эффект остался.
Предложенный вариант - закрыть и повторно открыть - теперь уже эффект возрос в 2 раза! :)
Число увеличиваться стало на 4 вместо бывших 2, когда надо 1
...
Рейтинг: 0 / 0
05.01.2007, 19:16:15
    #34238824
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, OO4O, проблема с выводом SQL последовательности
AnatolyOilПредложенный вариант - закрыть и повторно открыть - теперь уже эффект возрос в 2 раза! :)Хе... ну значит этот самый EmpDynaset действительно посылает команду на сервер повторно. Если у этой библиотеки есть какие-нибудь средства мониторинга посылаемых запросов - можно там посмотреть. Или пошагово прогонять макрос в дебагере и параллельно смотреть содержимое базы.
А может использовать ADO вместо ораклового интерфейса?
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel, OO4O, проблема с выводом SQL последовательности / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]