|
|
|
Что же означает Восклицательный Знак а обращениях к объектам ?
|
|||
|---|---|---|---|
|
#18+
Так что же означает воскл знак в синтаксисе обращения в системе объектов Access? Я так понял, что он позволяет, если имеем Объект.Коллекция , где свойство Коллекция является - 1) коллекцией и 2) свойством по умолчанию, сократить запись обращения к элементу коллекции, т.е. вместо Объект.Коллекция('ИмяЭл1") писать Объект!ИмяЭл1 , Но ! - почему же тогда мы пишем вместо Application.Forms("Поставщики") не !Поставщики , а Forms!Поставщики ? - и почему имеется разница в синтаксисе макрокоманд в этом смысле и VBA ( так макрокоманда не понимает в окне записи выражений для макроса Forms("Поставщики") - а только Forms!Поставщики ) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2004, 23:07 |
|
||
|
Что же означает Восклицательный Знак а обращениях к объектам ?
|
|||
|---|---|---|---|
|
#18+
Отвечаю на первую половину вопроса. Воскл.знак - это не для опускания имени коллекции по умолчанию, это просто более корректный синтаксис для имени элемента коллекции в отличие от имени свойства или метода. Можно вместо воскл.знака ставить и точку, но тогда возможна путаница с названиями свойств или методов. Опускать название коллекции и заменять воскл.знак на точку можно независимо. Все 4 варианта верны: dim f as form ... f!txt1 f.txt1 f.controls!txt1 f.controls.txt1 Но варианты с точкой перестанут работать, если контрол будет называться не txt1, а count, delete и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2004, 23:15 |
|
||
|
Что же означает Восклицательный Знак а обращениях к объектам ?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2004, 23:15 |
|
||
|
Что же означает Восклицательный Знак а обращениях к объектам ?
|
|||
|---|---|---|---|
|
#18+
А что касается макрокоманд, то они просто более примитивны, чем VBA. В том числе они не понимают многих вычисляемых выражений (а выражение со стрингом "Поставщики" - именно вычисляемое). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2004, 00:11 |
|
||
|
Что же означает Восклицательный Знак а обращениях к объектам ?
|
|||
|---|---|---|---|
|
#18+
Мда,все-таки позволю дать еще свое толкование : Впервые с ! знаком я столкнулся в 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. Но! Конечно вопросы, поставленные в первом моем посте остаются, особенно волнует корректный синтаксис обращений для непрограммирующих (макрокомандных) пользователей! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2004, 12:02 |
|
||
|
Что же означает Восклицательный Знак а обращениях к объектам ?
|
|||
|---|---|---|---|
|
#18+
Какие еще вопросы?!? Если все еще непонятно, то советую почитать первый том Гетца, там все очень подробно объяснено по поводу "!" и обращений к объектам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2004, 12:11 |
|
||
|
Что же означает Восклицательный Знак а обращениях к объектам ?
|
|||
|---|---|---|---|
|
#18+
А если прочитать ответ, то вопросы все равно остаются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2004, 14:49 |
|
||
|
Что же означает Восклицательный Знак а обращениях к объектам ?
|
|||
|---|---|---|---|
|
#18+
Какие-то странные ответы... Вопросы те, что в первом моем посте - почему нельзя !Поставщики вместо Forms!Поставщики и где найти корректный синтаксис обращений к объектам для макрокоманд, только не надо ,плиз, "читай Help" etc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2004, 15:22 |
|
||
|
Что же означает Восклицательный Знак а обращениях к объектам ?
|
|||
|---|---|---|---|
|
#18+
авторпочему нельзя !Поставщики вместо 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2004, 15:29 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32468805&tid=1675574]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
175ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 515ms |

| 0 / 0 |
