powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel, OO4O, проблема с выводом SQL последовательности
5 сообщений из 5, страница 1 из 1
Excel, OO4O, проблема с выводом SQL последовательности
    #34230557
AnatolyOil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый. Мне надо в поле эксела ввести очередной номер сиквенса (последовательности) из БД Оракла. Использую такой код, основанный на технологии ОО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
Excel, OO4O, проблема с выводом SQL последовательности
    #34236406
AnatolyOil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Плюнул... пущай увеличивается на 2, особой беды в этом нет...
...
Рейтинг: 0 / 0
Excel, OO4O, проблема с выводом SQL последовательности
    #34237262
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если принудительно закрывать рекордсет и коннект к базе?
Попробуй хотя бы из макроса что-нибудь подобное:
Код: 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
Excel, OO4O, проблема с выводом SQL последовательности
    #34237834
AnatolyOil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, если просто закрыть а потом записывать в ячейку - все равно эффект остался.
Предложенный вариант - закрыть и повторно открыть - теперь уже эффект возрос в 2 раза! :)
Число увеличиваться стало на 4 вместо бывших 2, когда надо 1
...
Рейтинг: 0 / 0
Excel, OO4O, проблема с выводом SQL последовательности
    #34238824
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AnatolyOilПредложенный вариант - закрыть и повторно открыть - теперь уже эффект возрос в 2 раза! :)Хе... ну значит этот самый EmpDynaset действительно посылает команду на сервер повторно. Если у этой библиотеки есть какие-нибудь средства мониторинга посылаемых запросов - можно там посмотреть. Или пошагово прогонять макрос в дебагере и параллельно смотреть содержимое базы.
А может использовать ADO вместо ораклового интерфейса?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel, OO4O, проблема с выводом SQL последовательности
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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