Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Что же означает Восклицательный Знак а обращениях к объектам ? / 9 сообщений из 9, страница 1 из 1
04.04.2004, 23:07
    #32468375
yuniki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что же означает Восклицательный Знак а обращениях к объектам ?
Так что же означает воскл знак в синтаксисе обращения в системе объектов Access?

Я так понял, что он позволяет, если имеем Объект.Коллекция , где свойство Коллекция является - 1) коллекцией и 2) свойством по умолчанию, сократить запись обращения к элементу коллекции,
т.е. вместо Объект.Коллекция('ИмяЭл1") писать Объект!ИмяЭл1 ,
Но !
- почему же тогда мы пишем вместо Application.Forms("Поставщики") не !Поставщики , а Forms!Поставщики ?

- и почему имеется разница в синтаксисе макрокоманд в этом смысле и VBA ( так макрокоманда не понимает в окне записи выражений для макроса Forms("Поставщики") - а только Forms!Поставщики ) ?
...
Рейтинг: 0 / 0
04.04.2004, 23:15
    #32468377
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что же означает Восклицательный Знак а обращениях к объектам ?
Отвечаю на первую половину вопроса. Воскл.знак - это не для опускания имени коллекции по умолчанию, это просто более корректный синтаксис для имени элемента коллекции в отличие от имени свойства или метода. Можно вместо воскл.знака ставить и точку, но тогда возможна путаница с названиями свойств или методов.

Опускать название коллекции и заменять воскл.знак на точку можно независимо. Все 4 варианта верны:

dim f as form
...
f!txt1
f.txt1
f.controls!txt1
f.controls.txt1

Но варианты с точкой перестанут работать, если контрол будет называться не txt1, а count, delete и т.п.
...
Рейтинг: 0 / 0
04.04.2004, 23:15
    #32468378
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что же означает Восклицательный Знак а обращениях к объектам ?
...
Рейтинг: 0 / 0
05.04.2004, 00:11
    #32468395
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что же означает Восклицательный Знак а обращениях к объектам ?
А что касается макрокоманд, то они просто более примитивны, чем VBA. В том числе они не понимают многих вычисляемых выражений (а выражение со стрингом "Поставщики" - именно вычисляемое).
...
Рейтинг: 0 / 0
05.04.2004, 12:02
    #32468805
yuniki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что же означает Восклицательный Знак а обращениях к объектам ?
Мда,все-таки позволю дать еще свое толкование :

Впервые с ! знаком я столкнулся в VB6 при обращении к полям ADODB.Recordset,
там вместо Rs.Fields("ИмяПоля1") разрешалось Rs!ИмяПоля1 , где Rs as ADODB.Recordset,
причем я заметил , что Fields - это свойство-коллекция ПО УМОЛЧАНИЮ для объекта Recordset
Ну я и решил, что "!" нужен для СОКРАЩЕНИЯ синтаксиса (а не для более корректного
синстаксиса, как пишет уважаемый Владимир Саныч )

Сейчас Почитал еще Help'ы. И в доке для Vb6 или Access2000 ничего толкового не обнаружил,
т.е. строгой синтаксической системы именований?
Решил заглянуть в MSDN2003apr и вот , что там пишут для VB7:

Exclamation point (!) operator

Use the ! operator (in a class or interface only) as a dictionary access operator. The class or interface must have a default property that accepts a single String argument. The identifier immediately following the ! operator becomes the string argument to the default property, as in the following example:

Public Class HasDefault ' Exposes a default property.
Default Public ReadOnly Property Index(ByVal S As String) As Integer
Get
Return 1000 + CInt(S)
End Get
End Property ' Index
End Class ' HasDefault
' ...
Public Class TestHasDefault
Public Sub CompareAccess()
Dim HD As HasDefault = New HasDefault()
Dim IndexStr As String = "5"
MsgBox("Traditional access returns " & HD.Index(IndexStr) & vbCrLf & _
"Default property access returns " & HD(IndexStr) & vbCrLf & _
"Dictionary access returns " & HD!IndexStr)
End Sub
End Class ' TestHasDefault
The three output lines of MsgBox all display the value 1005. The first line uses the traditional access to property Index, the second makes use of the fact that Index is the default property of class HasDefault, and the third uses dictionary access to the class.

Note that the second operand of the ! operator must be a valid identifier or keyword. Therefore, the following change to the last line of the MsgBox call generates an error because "5" is not an identifier or keyword:

"Dictionary access returns " & HD!"5")
Note References to default collections must be explicit. In particular, you cannot use the ! operator on a late-bound variable.
The ! character is also used as the Single type character.

Но! Конечно вопросы, поставленные в первом моем посте остаются, особенно волнует
корректный синтаксис обращений для непрограммирующих (макрокомандных) пользователей!
...
Рейтинг: 0 / 0
05.04.2004, 12:11
    #32468834
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что же означает Восклицательный Знак а обращениях к объектам ?
Какие еще вопросы?!?

Если все еще непонятно, то советую почитать первый том Гетца, там все очень подробно объяснено по поводу "!" и обращений к объектам
...
Рейтинг: 0 / 0
05.04.2004, 14:49
    #32469172
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что же означает Восклицательный Знак а обращениях к объектам ?
А если прочитать ответ, то вопросы все равно остаются?
...
Рейтинг: 0 / 0
05.04.2004, 15:22
    #32469252
yuniki
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что же означает Восклицательный Знак а обращениях к объектам ?
Какие-то странные ответы...
Вопросы те, что в первом моем посте - почему нельзя !Поставщики вместо Forms!Поставщики и где найти корректный синтаксис обращений к объектам для макрокоманд, только не надо ,плиз, "читай Help" etc
...
Рейтинг: 0 / 0
05.04.2004, 15:29
    #32469272
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что же означает Восклицательный Знак а обращениях к объектам ?
авторпочему нельзя !Поставщики вместо Forms!Поставщики
Потому что начинать хоть с точки, хоть с воскл.знака можно только внутри конструкции With.

авторгде найти корректный синтаксис обращений к объектам для макрокоманд, только не надо ,плиз, "читай Help" etc
Ну не читай хелп. Читай то, что я тебе оттуда скопировал:
You must use the full syntax to refer to this item, such as controlname (for a control on the form or report from which the macro was called) or Forms!formname!controlname.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Что же означает Восклицательный Знак а обращениях к объектам ? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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