|
|
|
Программирование объектов - как добраться до констант
|
|||
|---|---|---|---|
|
#18+
Всем здравствуйте! Делаю такую операцию: 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") не проходит Может кто-то знает? Заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2003, 14:27 |
|
||
|
Программирование объектов - как добраться до констант
|
|||
|---|---|---|---|
|
#18+
Откройте Object Browser (F2), наберите RecordStatusEnum и получите список всех констант и их значения. (естеcтвенно при этом нужная библиотека должна быть подключена) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2003, 14:47 |
|
||
|
Программирование объектов - как добраться до констант
|
|||
|---|---|---|---|
|
#18+
Наверное, я некорректно написал Через Browser-то я их вижу (в примере я их оттуда и взял) А вот если библиотека не подключена - как обращаться к константам по имени, а не по числовому значению? Необходимо НЕ подключать библиотеку, а обойтись без нее - через CreateObject. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2003, 15:01 |
|
||
|
Программирование объектов - как добраться до констант
|
|||
|---|---|---|---|
|
#18+
2 Yuri-Topic: извини, но если библиотека не подключена, то откуда возмется объект? по-моему выход прост, объяви эти константы сам и пользуйся :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2003, 15:05 |
|
||
|
Программирование объектов - как добраться до констант
|
|||
|---|---|---|---|
|
#18+
по-моему выход прост, объяви эти константы сам и пользуйся :) Позволю себе немного добавить: можно свой пользовательский тип определить, тогда при орпеделении переменной этого типа будут доступны значения. Примеры объявления точно есть у Гетца, и вроде бы в справке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2003, 15:10 |
|
||
|
Программирование объектов - как добраться до констант
|
|||
|---|---|---|---|
|
#18+
Дык, вы подключите, посмотрите, а потом можете отключить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2003, 15:19 |
|
||
|
Программирование объектов - как добраться до констант
|
|||
|---|---|---|---|
|
#18+
Это все понятно... Но эта каша заварилась из-за различных версий библиотек на разных компах. Если бы можно было гарантировать, что в следующей версии значение "2" для параметра какой-либо команды, например, будет "RecOk" в ее смысле, а то может быть это в новой версии будет соответствовать RecDelete. Что тогда? Вот цитата из справки: "Кроме того, использование встроенных констант гарантирует, что программа будет работать даже при изменении представляемых константами значений в будущих версиях" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2003, 15:21 |
|
||
|
Программирование объектов - как добраться до констант
|
|||
|---|---|---|---|
|
#18+
Вдогонку "Поскольку конкретные значения, представляемые встроенными константами, могут быть изменены в будущих версиях, следует всегда использовать в программах сами именованные константы вместо их значений" Так что я имел в виду не как посмотреть конкретные параметры и их возможные значения и использовать их у себя, а именно как без установки ссылки на библиотеку пользоваться именованными константами. Если объявлять их у себя в программе - все равно в следующей версии числовое значение может не соответствовать моему, правда? Я у себя пишу: Const RecOk=0 - соответствует для Ado 2_0, 2_1 и т.д. а вдруг у них что-нибудь заклинит и они объявят Const RecDelete=0 ? Так вот, обращаясь непосредственно к библиотеке и ее именованным константам, мне будет все равно, что содержится внутри RecOk 0 или 1 или 10 или 1000... P.S. Я не могу подключить библиотеку "навсегда", мне ее нужно обязательно отключить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2003, 15:27 |
|
||
|
Программирование объектов - как добраться до констант
|
|||
|---|---|---|---|
|
#18+
P.S. Я не могу подключить библиотеку "навсегда", мне ее нужно обязательно отключить. Почему? Нормальная ситуация, когда приложение распространяется с необходимыми библиотеками. И еще, если подключить самую младшую версию например ADO 2.1 то на том компе, на котором установлен ADO 2.5 все должно работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2003, 15:32 |
|
||
|
Программирование объектов - как добраться до констант
|
|||
|---|---|---|---|
|
#18+
>установки ссылки на библиотеку пользоваться именованными константами. имхо, странное заявление. откуда она браться то будет эта константа, если она зашита в библиотеку и в других местах ее нет. подключай и пользуйся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2003, 15:33 |
|
||
|
Программирование объектов - как добраться до констант
|
|||
|---|---|---|---|
|
#18+
На: "имхо, странное заявление" Именно поэтому и возник вопрос!!!!!!!! Вот кусочек кода: 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 ????????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2003, 15:52 |
|
||
|
Программирование объектов - как добраться до констант
|
|||
|---|---|---|---|
|
#18+
На сообщение incold "И еще, если подключить самую младшую версию например ADO 2.1 то на том компе, на котором установлен ADO 2.5 все должно работать" Если установить на компе с ADO 2.0 не будет точно и наоборот. Сомневаюсь, что если 2.5 установлена при неустановленной 2.1, то что тоже будет работать. А по поводу DAO, вообще, работать не будет это точно для DAO20/35 и DAO3.51 , DAO3.6 - разные библиотеки и ссылки на них разные, хотя принцип наследуемости сохраняется и константы также. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2003, 16:01 |
|
||
|
Программирование объектов - как добраться до констант
|
|||
|---|---|---|---|
|
#18+
Имхо. Все-таки все это борьба с последствиями проблемы, а не с причинами. В любой программе написано: Системные требования Точно также и программы написанные на Аксес. Требования: версия 9.0, библиотека ADO 2.1 инсталляция библиотеки прилагается к программе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2003, 16:35 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32244802&tid=1679767]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
12ms |
get forum data: |
4ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 386ms |

| 0 / 0 |
