Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Программирование объектов - как добраться до констант / 14 сообщений из 14, страница 1 из 1
22.08.2003, 14:27
    #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
22.08.2003, 14:47
    #32244740
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программирование объектов - как добраться до констант
Откройте Object Browser (F2), наберите RecordStatusEnum и получите список всех констант и их значения.
(естеcтвенно при этом нужная библиотека должна быть подключена)
...
Рейтинг: 0 / 0
22.08.2003, 15:01
    #32244791
Yuri-Topic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программирование объектов - как добраться до констант
Наверное, я некорректно написал
Через Browser-то я их вижу (в примере я их оттуда и взял)
А вот если библиотека не подключена - как обращаться
к константам по имени, а не по числовому значению?
Необходимо НЕ подключать библиотеку, а обойтись без нее - через CreateObject.
...
Рейтинг: 0 / 0
22.08.2003, 15:05
    #32244802
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программирование объектов - как добраться до констант
2 Yuri-Topic:
извини, но если библиотека не подключена, то откуда возмется
объект?
по-моему выход прост, объяви эти константы сам и пользуйся :)
...
Рейтинг: 0 / 0
22.08.2003, 15:10
    #32244814
incold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программирование объектов - как добраться до констант
по-моему выход прост, объяви эти константы сам и пользуйся :)
Позволю себе немного добавить: можно свой пользовательский тип определить, тогда при орпеделении переменной этого типа будут доступны значения.
Примеры объявления точно есть у Гетца, и вроде бы в справке
...
Рейтинг: 0 / 0
22.08.2003, 15:19
    #32244837
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программирование объектов - как добраться до констант
Дык, вы подключите, посмотрите, а потом можете отключить...
...
Рейтинг: 0 / 0
22.08.2003, 15:21
    #32244847
Yuri-Topic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программирование объектов - как добраться до констант
Это все понятно...
Но эта каша заварилась из-за различных версий библиотек на разных компах.
Если бы можно было гарантировать, что в следующей версии
значение "2" для параметра какой-либо команды, например,
будет "RecOk" в ее смысле,
а то может быть
это в новой версии будет соответствовать RecDelete. Что тогда?
Вот цитата из справки:
"Кроме того, использование встроенных констант гарантирует, что программа будет работать даже при изменении представляемых константами значений в будущих версиях"
...
Рейтинг: 0 / 0
22.08.2003, 15:27
    #32244865
Yuri-Topic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программирование объектов - как добраться до констант
Вдогонку
"Поскольку конкретные значения, представляемые встроенными константами, могут быть изменены в будущих версиях, следует всегда использовать в программах сами именованные константы вместо их значений"
Так что я имел в виду не как посмотреть конкретные параметры и их возможные значения и использовать их у себя, а именно как без установки ссылки на библиотеку пользоваться именованными константами.
Если объявлять их у себя в программе - все равно в следующей версии числовое значение может не соответствовать моему, правда?
Я у себя пишу:
Const RecOk=0
- соответствует для Ado 2_0, 2_1 и т.д.
а вдруг у них что-нибудь заклинит и они объявят
Const RecDelete=0 ?
Так вот, обращаясь непосредственно к библиотеке и ее именованным константам, мне будет все равно, что содержится внутри RecOk 0 или 1 или 10 или 1000...
P.S. Я не могу подключить библиотеку "навсегда", мне ее нужно обязательно отключить.
...
Рейтинг: 0 / 0
22.08.2003, 15:32
    #32244881
incold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программирование объектов - как добраться до констант
P.S. Я не могу подключить библиотеку "навсегда", мне ее нужно обязательно отключить.

Почему?

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

И еще, если подключить самую младшую версию например ADO 2.1
то на том компе, на котором установлен ADO 2.5 все должно работать.
...
Рейтинг: 0 / 0
22.08.2003, 15:33
    #32244886
sasha_1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программирование объектов - как добраться до констант
>установки ссылки на библиотеку пользоваться именованными константами.
имхо, странное заявление.
откуда она браться то будет эта константа, если она зашита в библиотеку
и в других местах ее нет. подключай и пользуйся.
...
Рейтинг: 0 / 0
22.08.2003, 15:52
    #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
22.08.2003, 16:01
    #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
22.08.2003, 16:35
    #32245021
incold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программирование объектов - как добраться до констант
Имхо.
Все-таки все это борьба с последствиями проблемы, а не с причинами.

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

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


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