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

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

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

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

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

Но варианты с точкой перестанут работать, если контрол будет называться не txt1, а count, delete и т.п.
...
Рейтинг: 0 / 0
Что же означает Восклицательный Знак а обращениях к объектам ?
    #32468378
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
...
Рейтинг: 0 / 0
Что же означает Восклицательный Знак а обращениях к объектам ?
    #32468395
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А что касается макрокоманд, то они просто более примитивны, чем VBA. В том числе они не понимают многих вычисляемых выражений (а выражение со стрингом "Поставщики" - именно вычисляемое).
...
Рейтинг: 0 / 0
Что же означает Восклицательный Знак а обращениях к объектам ?
    #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
Что же означает Восклицательный Знак а обращениях к объектам ?
    #32468834
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие еще вопросы?!?

Если все еще непонятно, то советую почитать первый том Гетца, там все очень подробно объяснено по поводу "!" и обращений к объектам
...
Рейтинг: 0 / 0
Что же означает Восклицательный Знак а обращениях к объектам ?
    #32469172
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А если прочитать ответ, то вопросы все равно остаются?
...
Рейтинг: 0 / 0
Что же означает Восклицательный Знак а обращениях к объектам ?
    #32469252
yuniki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие-то странные ответы...
Вопросы те, что в первом моем посте - почему нельзя !Поставщики вместо Forms!Поставщики и где найти корректный синтаксис обращений к объектам для макрокоманд, только не надо ,плиз, "читай Help" etc
...
Рейтинг: 0 / 0
Что же означает Восклицательный Знак а обращениях к объектам ?
    #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
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Что же означает Восклицательный Знак а обращениях к объектам ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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