powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / FAQ: Как обратится к полю формы или подчиненной формы
25 сообщений из 82, страница 2 из 4
FAQ: Как обратится к полю формы или подчиненной формы
    #32194478
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Это есть необъяснимая загадка. Да, я уже и сам убедился, что в коллекции Properties имя Value отсутствует напрочь. Однако вот цитата из хелпа (курсив мой):

You can use the Value property to determine or specify if a control is selected, the selected value or option within the control, or the text contained in a text box control.

...

The Value property returns or sets a control's default property, which is the property that is assumed when you don't explicitly specify a property name. ... This means that the following two statements are equivalent.

Forms!frmCustomers!optCreditApproved.Value = True
Forms!frmCustomers!optCreditApproved = True

Получается, что есть свойства, обратиться к которым можно только определенным способом... Гм.
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194486
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ВС
Да, уж...

А вот еще:
такая процедура
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
  Dim t
  Dim t1 As Long
  Dim s As String
   
  t = Time
  For t1 =  0  To  1000000 
    s = Me( "Поле1" ).Value
  Next
  msgbox (Time - t) *  100000 

дает такие результаты:

Forms![Форма1].Controls![Поле1] - 17,36
Forms![Форма1]![Поле1] - 17,36
me![Поле1] - 11,5
me![Поле1].value - 15,8
me.Controls.Item(0) - 10,4
me.Controls(0) - 10,4
me(0) - 11,5
me(0).value - 13.9
me("Поле1") - 12.7
me("Поле1").value - 15.0

Получается, что если в одном случае более полной записи скорость выполнения заметно падает, а в другом наоборот возрастает.
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194487
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Итого:

.Item - не влияет
Me - хорошо
.Controls - хорошо, когда обращение по номеру, и не влияет, когда по имени
.Value - плохо
и обращение со стрингом хуже, чем по номеру или по имени
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194493
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я кнешна извеняюсь, но я тоже тестил (тогда еще), что отражено в одном из вышеупомянутых топике:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
'1,76 +- 0,01 сек.:'
For I =  0  To  10000  
strVal = Me( 0 ) 
Next I 

'1,95 +- 0,01 сек.: '
For I =  0  To  10000  
strVal = Me( 15 ) 
Next I 

'???? +- 0,01 сек. '
For I =  0  To  10000  
strVal = Me( 15 +N???) 
Next I 

Если присмотреться, то можно увидеть, что скорость при обращени по индексу зависит от самого индекса, вернее, от порядкового номера контрола в форме, и если через индекс обращаться к элементу с индексом 250, то наверно будет быстрее обратиться не через индекс... //не знает, что хочет этим сказать - просто так, знаете ли, дополнение подкинул...
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194496
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
У меня идея, которая мне самому кажется здравой. Не говорить, какой синтаксис работает быстрее. А сказать только, что скорость может зависеть от синтаксиса по сложным многопараметрическим (sic!) формулам.
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194498
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Сейчас прольется чья-то кровь..."
Сейчас, сейчас...
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194499
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Вопросы
1.1. Как обратиться к объекту формы?
1.2. Как обратиться к объекту формы, имя которого вычисляется на лету или содержит специальные символы?
1.3. Как обратиться к объекту подчиненной формы?
1.4. Обращение к объекту формы из контекста формы.

2. Ответы
Чтобы прочитать или изменить содержимое или свойство объекта формы, в первую очередь надо составить выражение, позволяющее однозначно определить ссылку именно на этот объект.

2.1. Обращение к объекту формы

Выражение, определяющее ссылку на объект формы, в общем виде выглядит так:

Forms![Форма1].Controls![Поле1].Value (1)

Обратите внимание, что операторы "!" и "." идут через один. Чередуются имена коллекций и их элементов, причем оператор "!" означает, что справа от него указан элемент коллекции, а оператор "." служит дя обращения к свойству этого элемента (см. пп. 3.5 и 3.6).

Прямые скобки следует использовать, если имя элемента содержит внутренние пробелы, иначе их наличие не обязательно.

Серым цветом здесь и далее выделены коллекции и свойства, используемые Access по умолчанию. Их также можно опускать, если при этом не возникнет двусмысленности. То есть выражение (1) может быть записать по-другому:

Forms![Форма1]![Поле1]

Будьте внимательны, если пользуетесь подобными сокращениями. В случае, когда формы содержит одноименные элементы различных коллекций (например, поле источника данных формы и элемент коллекции .Controls), пропуск идентификатора коллекции может повлечь за собой неверную работу вашей программы (см. п. 3.6).

2.2. Обращение к объектам, имена которых вычисляются "на лету" или не соответствуют "соглашению об именах".

В выражении (1), разделенные оператором ".", перечисляются связки типа

Коллекция![Имя элемента] (2)

Любую из этих связок можно переписать в виде

Коллекция.Item(ПорядковыйНомерЭлементаВколлекции) (3)

где ПорядковыйНомерЭлементаВколлекции - выражение, возвращающее целое число (нумерация элементов в коллекции начинается с 0), а также

Коллекция.Item("Строка-имя элемента") (4)

где в качестве аргумента может быть указано любое выражение, возвращающее значение типа String, соответствующее имени существующего элемента коллекции.

2.3. Обращение к объекту подчиненной формы
Корректная ссылка на свойство подчиненной формы или отчета требует указания полного идентификатора формы c использованием свойства Form элемента управления-подчиненная форма:

Forms![Форма1].Controls![Форма2].Form.Controls![Поле1].Value

В данном примере: Forms![Форма1].Controls![Форма2] является ссылкой на элемент управления, в котором выводится подчиненная форма. А Forms![Форма1].Controls![Форма2].Form является ссылкой на саму подчиненную форму. Указание свойства Form для ссылки на подчиненную форму или на ее свойства является обязательным.

Аналогичным образом, с помощью вставки выражений типа .Controls![Форма2].Form (или .Controls(“Форма2”).Form), строятся выражения для подчиненных форм третьего и далее уровней вложености.

2.4. Обращение к объекту формы из контекста формы
Для ссылки на текущий экземпляр объекта, в котором в данное время выполняется программа, используется ключевое слово Me. Все процедуры, связанные с текущим объектом, имеют доступ к объекту, указываемому с помощью слова. Пример использования слова Me в модуле формы, содержащей поле Поле1:

Me.Controls![Поле1].Value

2.5. Ускорение работы программ.
При построении выражений, определяющих ссылки на объект, вам следует иметь в виду, что
программа, использующая ключевое слово Me, выполняется быстрее, чем использующая полный синтаксис имени объекта. Причем, чем больше уровень вложенности подчиненной формы, тем больший выигрыш в скорости вы получите, используя Me.

если вам требуется обратиться к свойству .Value объекта, ключевое слово .Value лучше опустить.

выражение типа (4) выполняется медленнее, чем (3) и (2).

Кроме того, если в некотором фрагменте кода встречаются две и более ссылок а некоторый объект, присвойте его объектной переменной. Каждый раз, когда вы ссылаетесь на объект, Access приходится выяснять, к какому объекту относится ссылка, что приводит к выполнению лишней работы. Но если присвоить ссылку на объект переменной, Access «ищет» объект всего один раз и кэширует ссылку на него в памяти.
Имейте в виду, что после окончания использования объектной переменной, ее следует очистить:
objVar = nothing

Примечания:
вместо инструкции «.Value», использованной в большинстве примеров, может быть указано любое доступное свойство или метод объекта формы, например, .Name, .Width, .Enabled, .Tag и т.д. Если требуется прочитать или изменить именно содержимое объекта, то инструкцию «.Value» можно не использовать.

все вышесказанное в равной мере относится и к отчетам, если заменить все вхождения ключевых слов Form и Forms на Report и Reports.

3. Дополнительная информация
3.1. Построитель выражений некоторых русифицированных версий Microsoft Access автоматически ставит несуществующую инструкцию [Форма] вместо [Form]. Для корректной работы программы следует вручную исправить полученное выражение.

3.2. Некоторые построители выражений обособляют все названия полей и форм, а также ключевые слов прямыми скобками, например, так: [Forms]![Форма1]![Форма2].[Form]![Поле1].[Value]. В принципе, их использование необходимо только для элементов, чьи имена содержат внутренние пробелы.

3.3. В «Соглашении об именах полей, элементов управления и объектов» сказано, что имя может включать любую комбинацию букв, цифр, пробелов и специальных символов за исключением точки (.), восклицательного знака (!), надстрочного символа (`), прямых скобок ([ ]) и управляющих символов (с кодами ASCII от 0 до 31), а также не должно начинаться с символа пробела. Однако вы легко сможете создать объект, имя которого нарушает эти правила. Если вы решили спорить с программистами из Microsoft, тогда следует быть готовым к тому, что, например, «Пробелы в именах могут при некоторых обстоятельствах вызывать конфликты в программах Visual Basic».

3.4. Обратите внимание: название формы, под которым она хранится в файле базы данных, и значение ее свойства Имя (Name) в роли объекта-подчиненной формы, которое и следует использовать в ссылках, – не одно и тоже!

3.5. Отличия «.» и «!».
Из системы помощи Microsoft Access 97:
Операторы ! и . (точка) в идентификаторах указывают тип элемента, стоящего справа от оператора.
Оператор ! указывает, что следующий за ним элемент является элементом, определяемым пользователем (элементом семейства). Например, с помощью оператора ! определяют ссылку на открытую форму, отчет или элемент управления в открытой форме или отчете. (Forms![Заказы]![КодЗаказа])
Оператор . (точка) обычно указывает, что следующий за ним элемент определен в Microsoft Access. Например, оператор . (точка) используется для ссылок на свойства форм, отчетов и элементов управления. Допускается также использование оператора . (точка) для ссылок на значение поля в инструкции SQL, метод Visual Basic for Application или семейство. Например, идентификатор Forms![Заказы].Controls представляет ссылку на семейство Controls формы «Заказы».

3.6. Совпадающие наименования полей, переменных, полей данных.
В системе помощи Microsoft Access описаны довольно обширные «правила наименования объектов», суть которых сводится к рекомендации давать уникальные имена полям таблиц, самим таблицам, формам, переменным, функциям и пр. Причем имена не должны совпадать с длинным перечнем зарезервированных слов. В большинстве случаев вы можете отступать от этих правил, но в этом случае вы будете действовать на свой страх и риск.
Несмотря на вышеуказанные правила, встроенные мастера создания форм создают поля с именами, совпадающими с именами соответствующих полей таблицы-источника данных. В этом случае следует использовать полный синтаксис обращения к объекту.
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194502
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> "Сейчас прольется чья-то кровь..."
> Сейчас, сейчас...

Предчувствия его не обманули!

> Выражение, определяющее ссылку на объект формы, в общем виде выглядит так:
> Forms![Форма1].Controls![Поле1].Value (1)

Это ссылка не на объект, а на его Value.

> Прямые скобки

Вроде они назывались квадратными... (?)

> следует использовать, если имя элемента содержит внутренние пробелы, иначе их наличие не обязательно.

А также минусы и прочую дребедень из какого-то списка.

> Кроме того, если в некотором фрагменте кода встречаются две и более ссылок а некоторый объект, присвойте его объектной переменной.

Или пользуйтесь With.

> В принципе, их использование необходимо только для элементов, чьи имена содержат внутренние пробелы.

Или прочую дребедень.

> Обратите внимание: название формы, под которым она хранится в файле базы данных, и значение ее свойства Имя (Name) в роли объекта-подчиненной формы, которое и следует использовать в ссылках, – не одно и тоже!

Это как?
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194503
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А хорошо, что я не взялся писать альтернативный текст...
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194504
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ВС
Нашел-таки, к чему придраться :))

>Вроде они назывались квадратными... (?)
В хелпе 97-го - прямые.

>А также минусы и прочую дребедень из какого-то списка.
Ок.

>> Обратите внимание: название формы, под которым она хранится в файле
базы данных, и значение ее свойства Имя (Name) в роли объекта-подчиненной формы, которое и следует использовать в ссылках, – не одно и тоже!
> Это как?
Да фих знает как сказать. Форма называется "Форма2", а ее контрол в Форме1 может иметь имя "Абырвалг". И писать придется [Форм1]![Абырвалг]![Поле1].
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194505
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А хорошо, что я не взялся писать альтернативный текст...
Это еще почему?
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194506
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это... с первого прочтения не въехал ни во что практически :) Т.е. это не значит, что плохо написано, а значит то я прочитал то, что я знаю (знания былы оформлены словами) и меня постигло "растеряйство" :) Почитаю еще позже, а пока могу добавить, что не objVar = nothing, а Set objVar = nothing.
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194507
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> Нашел-таки, к чему придраться :))

Работа у нас такая... :^)

>> Обратите внимание: название формы, под которым она хранится в файле
базы данных, и значение ее свойства Имя (Name) в роли объекта-подчиненной формы, которое и следует использовать в ссылках, – не одно и тоже!
> Это как?

> Форма называется "Форма2", а ее контрол в Форме1 может иметь имя "Абырвалг". И писать придется [Форм1]![Абырвалг]![Поле1].

А. Теперь дошло. Тогда:

Во-первых, это не значение ее свойства Имя (Name) в роли объекта-подчиненной формы, а значение свойства Имя (Name) того контрола, в котором она сидит.

Во-вторых, не [Форм1]![Абырвалг]![Поле1], а [Форм1]![Абырвалг].Form![Поле1] - ты же сам написал: Указание свойства Form для ссылки на подчиненную форму или на ее свойства является обязательным.
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194508
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> > А хорошо, что я не взялся писать альтернативный текст...
> Это еще почему?

А у тебя лучше вышло. Мои поправки - не в счет.
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194509
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Во-вторых, не [Форм1]![Абырвалг]![Поле1], а [Форм1]![Абырвалг].Form![Поле1]
Хехе
А без твоих и Нуф-Нуфовских поправок ничего бы и не вышло.

Ланда, через полчасика очередное творение положу.
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194514
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и еще одно "это..." :) это... лично мне как начинающему аксессисту, ну нифига не понятно когда же что пользовать!
Например:
Forms![Форма1]![Поле1] - совсем не понятно, что без данной ссылки не обойтись при обращении к контролу другой открытой формы .
Т.е. я имею сказать, что необходимо к каждому варианту добавить Плюсы и Минусы использования (где можно указывать и отностилельную скорость выполнения в процентах), или что-то типа "Когда нужно использовать данный вариант" - выбрать вариант обращения к объекту (из представленных) для меня, как для начинающего аксессиста, ну просто не под силам, т.к. они просто перечислены и все :(

И еще про обращение через индексы. Да быстро. Да удобно (может быть иногда). НО!!! Индексы контролов могут меняться при добавлении/удалении/изменении_z-расположения, делая код неработоспособным и найти такие ссылки по индексам в коде оч.сложно (А вот на какой контрол ссылкается в форме код Me(1) - на Контрол "Пупырышки" или контрол "Мурашки"? :)

пока фсе...
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194515
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Вопросы
1.1. Как обратиться к объекту формы?
1.2. Как обратиться к объекту формы, имя которого вычисляется на лету или содержит специальные символы?
1.3. Как обратиться к объекту подчиненной формы?
1.4. Обращение к объекту формы из контекста этой формы.

2. Ответы
Чтобы прочитать или изменить содержимое или свойство объекта формы, в первую очередь надо составить выражение, позволяющее однозначно определить ссылку именно на этот объект.

2.1. Обращение к объекту формы

Выражение, определяющее ссылку на свойство .Value (значение) объекта формы, в общем виде выглядит так:

Forms![Форма1].Controls![Поле1].Value (1)

Обратите внимание, что операторы "!" и "." идут через один. Чередуются имена коллекций и их элементов, причем оператор "!" означает, что справа от него указан элемент коллекции, а оператор "." служит дя обращения к свойству этого элемента (см. пп. 3.5 и 3.6).

Прямые скобки следует использовать, если имя элемента содержит внутренние пробелы или другие специальные символы (кроме, соответственно, "]" и "["), иначе их наличие не обязательно.

Серым цветом здесь и далее выделены коллекции и свойства, используемые Access по умолчанию. Их также можно опускать, если при этом не возникнет двусмысленности. То есть выражение (1) может быть записать по-другому:

Forms![Форма1]![Поле1]

Будьте внимательны, если пользуетесь подобными сокращениями. В случае, когда формы содержит одноименные элементы различных коллекций (например, поле источника данных формы и элемент коллекции .Controls), пропуск идентификатора коллекции может повлечь за собой неверную работу вашей программы (см. п. 3.6).

2.2. Обращение к объектам, имена которых вычисляются "на лету" или не соответствуют "соглашению об именах".

В выражении (1), разделенные оператором ".", перечисляются связки типа

Коллекция![Имя элемента] (2)

Любую из этих связок можно переписать в виде

Коллекция.Item(ПорядковыйНомерЭлементаВколлекции) (3)

где ПорядковыйНомерЭлементаВколлекции - выражение, возвращающее целое число (нумерация элементов в коллекции начинается с 0), а также

Коллекция.Item("Строка-имя элемента") (4)

где в качестве аргумента может быть указано любое выражение, возвращающее значение типа String, соответствующее имени существующего элемента коллекции.

2.3. Обращение к объекту подчиненной формы
Корректная ссылка на свойство подчиненной формы или отчета требует указания полного идентификатора формы c использованием свойства Form элемента управления-подчиненная форма:

Forms![Форма1].Controls![Форма2].Form.Controls![Поле1].Value

В данном примере: Forms![Форма1].Controls![Форма2] является ссылкой на элемент управления, в котором выводится подчиненная форма. А Forms![Форма1].Controls![Форма2].Form является ссылкой на саму подчиненную форму. Указание свойства Form для ссылки на подчиненную форму или на ее свойства является обязательным.

Аналогичным образом, с помощью вставки выражений типа .Controls![Форма2].Form (или .Controls(“Форма2”).Form), строятся выражения для подчиненных форм третьего и далее уровней вложености.

2.4. Обращение к объекту формы из контекста этой формы
Для ссылки на текущий экземпляр объекта, в котором в данное время выполняется программа, используется ключевое слово Me. Все процедуры, связанные с текущим объектом, имеют доступ к объекту, указываемому с помощью слова. Пример использования слова Me в модуле формы, содержащей поле Поле1:

Me.Controls![Поле1].Value

2.5. Ускорение работы программ.
При построении выражений, определяющих ссылки на объект, вам следует иметь в виду, что
программа, использующая ключевое слово Me, выполняется быстрее, чем использующая полный синтаксис имени объекта. Причем, чем больше уровень вложенности подчиненной формы, тем больший выигрыш в скорости вы получите, используя Me.

если вам требуется обратиться к свойству .Value объекта, ключевое слово .Value лучше опустить.

выражение типа (4) выполняется медленнее, чем (3) и (2).

Кроме того, если в некотором фрагменте кода встречаются две и более ссылок а некоторый объект, присвойте его объектной переменной или используйте блок With. Каждый раз, когда вы ссылаетесь на объект, Access приходится выяснять, к какому объекту относится ссылка, что приводит к выполнению лишней работы. Но если, например, присвоить ссылку на объект переменной, Access «ищет» объект всего один раз и кэширует ссылку на него в памяти.
Имейте в виду, что во втором случае, после окончания использования объектной переменной, ее следует очистить:
Set objVar = nothing

Примечания:
вместо инструкции «.Value», использованной в большинстве примеров, может быть указано любое доступное свойство или метод объекта формы, например, .Name, .Width, .Enabled, .Tag и т.д. Если требуется прочитать или изменить именно содержимое объекта, то инструкцию «.Value» можно не использовать.

все вышесказанное в равной мере относится и к отчетам, если заменить все вхождения ключевых слов Form и Forms на Report и Reports.

3. Дополнительная информация
3.1. Построитель выражений некоторых русифицированных версий Microsoft Access автоматически ставит несуществующую инструкцию [Форма] вместо [Form]. Для корректной работы программы следует вручную исправить полученное выражение.

3.2. Некоторые построители выражений обособляют все названия полей и форм, а также ключевые слов прямыми скобками, например, так: [Forms]![Форма1]![Форма2].[Form]![Поле1].[Value]. В принципе, их использование необходимо только для элементов, чьи имена содержат внутренние пробелы или другие специальные символы (за исключением самих прямых скобок - тогда надо пользоваться выражениями типа (3) или (4)).

3.3. В «Соглашении об именах полей, элементов управления и объектов» сказано, что имя может включать любую комбинацию букв, цифр, пробелов и специальных символов за исключением точки (.), восклицательного знака (!), надстрочного символа (`), прямых скобок ([ ]) и управляющих символов (с кодами ASCII от 0 до 31), а также не должно начинаться с символа пробела. Однако вы легко сможете создать объект, имя которого нарушает эти правила. Если вы решили спорить с программистами из Microsoft, тогда следует быть готовым к тому, что, например, «Пробелы в именах могут при некоторых обстоятельствах вызывать конфликты в программах Visual Basic».

3.4. Обратите внимание: название формы, под которым она хранится в файле базы данных, и имя (Name) объекта .Control, содержащего эту подчиненную формы, которое и следует использовать в ссылках, – не одно и тоже!

3.5. Отличия «.» и «!».
Из системы помощи Microsoft Access 97:
Операторы ! и . (точка) в идентификаторах указывают тип элемента, стоящего справа от оператора.
Оператор ! указывает, что следующий за ним элемент является элементом, определяемым пользователем (элементом семейства). Например, с помощью оператора ! определяют ссылку на открытую форму, отчет или элемент управления в открытой форме или отчете. (Forms![Заказы]![КодЗаказа])
Оператор . (точка) обычно указывает, что следующий за ним элемент определен в Microsoft Access. Например, оператор . (точка) используется для ссылок на свойства форм, отчетов и элементов управления. Допускается также использование оператора . (точка) для ссылок на значение поля в инструкции SQL, метод Visual Basic for Application или семейство. Например, идентификатор Forms![Заказы].Controls представляет ссылку на семейство Controls формы «Заказы».

3.6. Совпадающие наименования полей, переменных, полей данных.
В системе помощи Microsoft Access описаны довольно обширные «правила наименования объектов», суть которых сводится к рекомендации давать уникальные имена полям таблиц, самим таблицам, формам, переменным, функциям и пр. Причем имена не должны совпадать с длинным перечнем зарезервированных слов. В большинстве случаев вы можете отступать от этих правил, но в этом случае вы будете действовать на свой страх и риск.
Несмотря на вышеуказанные правила, встроенные мастера создания форм создают поля с именами, совпадающими с именами соответствующих полей таблицы-источника данных. В этом случае следует использовать полный синтаксис обращения к объекту.
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194520
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Нуф-Нуф
> и еще одно "это..." :) это... лично мне как начинающему аксессисту, ну нифига не понятно когда же что пользовать!
Мне тоже, как начинающему аксессисту, почти не ясно, что, и главное, как, я тут понаписал

> Forms![Форма1]![Поле1] - совсем не понятно, что без данной ссылки не обойтись при обращении к контролу другой открытой формы.
Это и не нужно. Я дал это как минимальный способ обращения, и лишь позже, упомянув про контексты, ввел "Me".

>Т.е. я имею сказать, что необходимо к каждому варианту добавить Плюсы и Минусы использования (где можно указывать и отностилельную скорость выполнения в процентах)
Про скорость вроде бы есть в соответствующем разделе...

>, или что-то типа "Когда нужно использовать данный вариант" - выбрать вариант обращения к объекту (из представленных) для меня, как для начинающего аксессиста, ну просто не под силам, т.к. они просто перечислены и все :(
Дык, бери самый длинный - не ошибешься. А вообще, цитируя Гетца: "В целом оптимизация кода обычно влияет на быстродействие приложения в гораздо меньшей степени, чем оптимизация доступа к данным, а всего один дополнительный индекс принесет больше пользы, чем долгие часы, затраченные на оптимизацию кода VBA".

А про индексы - как бы само сабой разумеется, что прежде чем написать Me(0), надо узнать, кто в этом "0" живет. :)
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194527
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разделы "Ускорение работы" и "Примечания" перенес в "Дополнительную информацию".

И давайте, пожалста, еще замечания, а то у меня завтра интернет халявный кончится, и я буду приходить редко и только с вопросами.
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194528
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> И давайте, пожалста, еще замечания, а то у меня завтра интернет халявный кончится, и я буду приходить редко и только с вопросами.

А я как раз хотел недельку подумать...
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194530
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ВС
Действительно, может быть, лучше я вышлю тебе текст со всеми оформлятелями?
И тады можно будет, в самом деле, подумать и пообсуждать спокойно и без спешки?
А я потом буду ходить в готовый ФАК? :)
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194531
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geo друг, но истина "та тоже" :)

>Это и не нужно. Я дал это как минимальный способ обращения, и лишь позже, упомянув про контексты, ввел "Me".
Не согласен, но спорить с тобой не буду - ты автор, тебе и карты :) Просто останусь при мнении, что к КАЖДОМУ варианту надо добавить когда и зачем и почему пользовать надо так...

>Про скорость вроде бы есть в соответствующем разделе...
ключевое слово "в процентах" имелось в виду...

>Дык, бери самый длинный - не ошибешься. А вообще, цитируя Гетца:
С Гетцем согласен полностью, с тобой (бери самый длинный) не совсем. Или, во всяком случае, не понял что есть "самый длинный" - по количеству символов длинный? :)

>А про индексы - как бы само сабой разумеется, что прежде чем написать Me(0), надо узнать, кто в этом "0" живет. :)
Ага... Узнаем, пишем. Через неделю (не говоря уже "через год") удаляем из формы какую-нить ненужную линию или кнопочку и... наслаждаемся ошибками типа "Объект не поддерживает свойство или метод". Т.е. индексы сместятся и то что раньше было нашим "Полем", теперь стало нашей Кнопкой со всеми вытекающими... А ежли ссылаться по имени (а не по индексу), то добавляй-задобавляйся и удаляй-заудаляйся и меняй Z-zаменяйся - код останется работоспособным.
во шо я имел...
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194535
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нуф-Нуфу :)
>>Это и не нужно. Я дал это как минимальный способ обращения, и лишь позже, упомянув про контексты, ввел "Me".
>Не согласен, но спорить с тобой не буду - ты автор, тебе и карты :) Просто останусь при мнении, что к КАЖДОМУ варианту надо добавить когда и зачем и почему пользовать надо так...
Когда и зачем - есть раздел про скорость, упомянуто про неоднозначность. См., что тебе подходит, и используй соответственно.

>>Про скорость вроде бы есть в соответствующем разделе...
>ключевое слово "в процентах" имелось в виду...
Очень нестабильные результаты в процентах. Сравни твои и мои измерения. Единственное, что можно сказать с уверенностью - работает "быстрее" или "медленнее".

>>Дык, бери самый длинный - не ошибешься. А вообще, цитируя Гетца:
>С Гетцем согласен полностью, с тобой (бери самый длинный) не совсем. Или, во всяком случае, не понял что есть "самый длинный" - по количеству символов длинный? :)
В данном случае да. Имею в виду, что если не уверен, то бери полную запись, без Me и не опуская умолчания.

>>А про индексы - как бы само сабой разумеется, что прежде чем написать Me(0), надо узнать, кто в этом "0" живет. :)
>Ага... Узнаем, пишем. Через неделю (не говоря уже "через год") удаляем из формы какую-нить ненужную линию или кнопочку и...

Согласен. Сейчас допишу...
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194540
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Имею в виду, что если не уверен, то бери полную запись, без Me и не опуская умолчания.
Это первый шаг к жутким головнякам... Пишешь код, который потом собираешся использовать повторно, копируешь его в новую форму и... меняешь имена форм или удевляешься, а почему нажимаю кнопку в этой форме, а срабатывает другая? Еще раз повторю, что полный синтаксис доступа к форме вместо Ме можно использовать ТОЛЬКО в случае обращения к ДРУГОЙ форме! Для ссылки на контролы в форме с кодом ТОЛЬКО МЕ! //Впрочем, это уже цикл...
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194544
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нуф-Нуфу
Ну, если ты настаиваешь :)
Добавлю, что если из контекста, то "следует использовать" и далее по тексту :)
...
Рейтинг: 0 / 0
25 сообщений из 82, страница 2 из 4
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / FAQ: Как обратится к полю формы или подчиненной формы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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