powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Программирование объектов - как добраться до констант
14 сообщений из 14, страница 1 из 1
Программирование объектов - как добраться до констант
    #32244686
Yuri-Topic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем здравствуйте!
Делаю такую операцию:
Dim o as Object
Set o=CreateObject("ADODB.Recordset")
А как добраться до констант, например,
Enum RecordStatusEnum включает в себя константы:
adRecCanceled
adRecCantRelease
adRecConcurrencyViolation...
и т.д.
Ведь во многих командах, например:

Sub Open([Source], [ActiveConnection], [CursorType As CursorTypeEnum = adOpenUnspecified], [LockType As LockTypeEnum = adLockUnspecified], [Options As Long = -1])
и т.д.

нужны константы.
А если не подключать через References библиотеку, естественно, их и не увидишь и приходится пользоваться числовыми значениями вместо буквенных.
Set o=CreateObject("ADODB.CursorTypeEnum") не проходит
Может кто-то знает?
Заранее спасибо
...
Рейтинг: 0 / 0
Программирование объектов - как добраться до констант
    #32244740
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Откройте Object Browser (F2), наберите RecordStatusEnum и получите список всех констант и их значения.
(естеcтвенно при этом нужная библиотека должна быть подключена)
...
Рейтинг: 0 / 0
Программирование объектов - как добраться до констант
    #32244791
Yuri-Topic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наверное, я некорректно написал
Через Browser-то я их вижу (в примере я их оттуда и взял)
А вот если библиотека не подключена - как обращаться
к константам по имени, а не по числовому значению?
Необходимо НЕ подключать библиотеку, а обойтись без нее - через CreateObject.
...
Рейтинг: 0 / 0
Программирование объектов - как добраться до констант
    #32244802
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Yuri-Topic:
извини, но если библиотека не подключена, то откуда возмется
объект?
по-моему выход прост, объяви эти константы сам и пользуйся :)
...
Рейтинг: 0 / 0
Программирование объектов - как добраться до констант
    #32244814
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по-моему выход прост, объяви эти константы сам и пользуйся :)
Позволю себе немного добавить: можно свой пользовательский тип определить, тогда при орпеделении переменной этого типа будут доступны значения.
Примеры объявления точно есть у Гетца, и вроде бы в справке
...
Рейтинг: 0 / 0
Программирование объектов - как добраться до констант
    #32244837
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык, вы подключите, посмотрите, а потом можете отключить...
...
Рейтинг: 0 / 0
Программирование объектов - как добраться до констант
    #32244847
Yuri-Topic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это все понятно...
Но эта каша заварилась из-за различных версий библиотек на разных компах.
Если бы можно было гарантировать, что в следующей версии
значение "2" для параметра какой-либо команды, например,
будет "RecOk" в ее смысле,
а то может быть
это в новой версии будет соответствовать RecDelete. Что тогда?
Вот цитата из справки:
"Кроме того, использование встроенных констант гарантирует, что программа будет работать даже при изменении представляемых константами значений в будущих версиях"
...
Рейтинг: 0 / 0
Программирование объектов - как добраться до констант
    #32244865
Yuri-Topic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вдогонку
"Поскольку конкретные значения, представляемые встроенными константами, могут быть изменены в будущих версиях, следует всегда использовать в программах сами именованные константы вместо их значений"
Так что я имел в виду не как посмотреть конкретные параметры и их возможные значения и использовать их у себя, а именно как без установки ссылки на библиотеку пользоваться именованными константами.
Если объявлять их у себя в программе - все равно в следующей версии числовое значение может не соответствовать моему, правда?
Я у себя пишу:
Const RecOk=0
- соответствует для Ado 2_0, 2_1 и т.д.
а вдруг у них что-нибудь заклинит и они объявят
Const RecDelete=0 ?
Так вот, обращаясь непосредственно к библиотеке и ее именованным константам, мне будет все равно, что содержится внутри RecOk 0 или 1 или 10 или 1000...
P.S. Я не могу подключить библиотеку "навсегда", мне ее нужно обязательно отключить.
...
Рейтинг: 0 / 0
Программирование объектов - как добраться до констант
    #32244881
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Я не могу подключить библиотеку "навсегда", мне ее нужно обязательно отключить.

Почему?

Нормальная ситуация, когда приложение распространяется с необходимыми библиотеками.

И еще, если подключить самую младшую версию например ADO 2.1
то на том компе, на котором установлен ADO 2.5 все должно работать.
...
Рейтинг: 0 / 0
Программирование объектов - как добраться до констант
    #32244886
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>установки ссылки на библиотеку пользоваться именованными константами.
имхо, странное заявление.
откуда она браться то будет эта константа, если она зашита в библиотеку
и в других местах ее нет. подключай и пользуйся.
...
Рейтинг: 0 / 0
Программирование объектов - как добраться до констант
    #32244938
Yuri-Topic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На:
"имхо, странное заявление"

Именно поэтому и возник вопрос!!!!!!!!
Вот кусочек кода:
Dim Rec As Object
Dim ActiveConnection as object
Set ActiveConnection = CreateObject("ADODB.Recordset")
Set Rec = CreateObject("ADODB.Recordset")

ActiveConnection .Open con.ConnectionString
Rec .CursorType = 2
Rec .LockType = 3
Rec .Open "Select * FROM [Table];",ActiveConnection
Так CuresorType,LockType,Open -сидят внутри библиотеки MSADO15.DLL, и я ими пользуюсь, так почему нельзя воспользоваться ENUM'ами этой библиотеки, которые и содержат константы, которые мне нужны, типа этой строки:
Set o=CreateObject("ADODB.CursorTypeEnum")
и уже пользоваться:
o.adOpenDynamic
или
o.adOpenForwardOnly
?????????
...
Рейтинг: 0 / 0
Программирование объектов - как добраться до констант
    #32244959
Yuri-Topic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На сообщение incold
"И еще, если подключить самую младшую версию например ADO 2.1
то на том компе, на котором установлен ADO 2.5 все должно работать"
Если установить на компе с ADO 2.0 не будет точно и наоборот. Сомневаюсь, что если 2.5 установлена при неустановленной 2.1, то что тоже будет работать.
А по поводу DAO, вообще, работать не будет это точно для DAO20/35
и DAO3.51 , DAO3.6 - разные библиотеки и ссылки на них разные, хотя
принцип наследуемости сохраняется и константы также.
...
Рейтинг: 0 / 0
Программирование объектов - как добраться до констант
    #32245021
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имхо.
Все-таки все это борьба с последствиями проблемы, а не с причинами.

В любой программе написано:
Системные требования

Точно также и программы написанные на Аксес.
Требования: версия 9.0, библиотека ADO 2.1
инсталляция библиотеки прилагается к программе
...
Рейтинг: 0 / 0
Программирование объектов - как добраться до констант
    #32245172
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полностью согласен с incold.
за все надо платить.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Программирование объектов - как добраться до констант
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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