powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / FAQ: Как обратится к полю формы или подчиненной формы
25 сообщений из 82, страница 3 из 4
FAQ: Как обратится к полю формы или подчиненной формы
    #32194547
Фотография 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)

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

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

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


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. Пример использования слова Me в модуле формы, содержащей поле Поле1:

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


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 описаны довольно обширные «правила наименования объектов», суть которых сводится к рекомендации давать уникальные имена полям таблиц, самим таблицам, формам, переменным, функциям и пр. Причем имена не должны совпадать с длинным перечнем зарезервированных слов. В большинстве случаев вы можете отступать от этих правил, но в этом случае вы будете действовать на свой страх и риск.
Несмотря на вышеуказанные правила, встроенные мастера создания форм создают поля с именами, совпадающими с именами соответствующих полей таблицы-источника данных. В этом случае следует использовать полный синтаксис обращения к объекту.

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

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

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

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

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

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

Я тебя настолько достал?

> И тады можно будет, в самом деле, подумать и пообсуждать спокойно и без спешки?

А чем в форуме плохо?

> А я потом буду ходить в готовый ФАК? :)

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

> например, поле источника данных формы и элемент коллекции .Controls

Вообще-то, такой способ обращения к полям источника данных - фича недокументированная. Ее лучше не рекламировать. А упомянуть здесь можно возможную путаницу со свойствами самой формы (напр., Name).

> При изменении состава коллекции (например при удалении или добавлении поля в форму) порядок нумерации элементов может измениться.

И вообще обращением по номеру обычно пользуются в цикле, проходящем по всем элементам коллекции, да и то только если по какой-то причине не хочется пользоваться командой For Each.

> Имейте в виду, что во втором случае, после окончания использования объектной переменной

Что такое второй случай? Вроде второй случай здесь - это With.
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194566
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Млин, Володь, если б ты так "Сжатие БД" вычитывал :)
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194572
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вань, я прошу прощения, но в сжатии я меньший специалист... :^)
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194574
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Я тебя настолько достал?

Млин, ведь хотел же, чтоб так не воспринял. Владимир Саныч, ни в коем случае. Я повторюсь, если б не твои подсказки/поправки, я б и сам сейчас не разбирался толком в вопросе. И я очень за это благодарен, чес-слово.

>А чем в форуме плохо?

А тем, что послезавтра у мя халявного инета не будет, т.е. он будет либо нехалявный, либо (через мобилу дорого, а стационарного телефона у мя нету) никакой :)

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

Хех, спасиба. Но это не моя (вернее, не только моя заслуга).

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

А чего ж ее не рекламировать, если "мастера" так делают. А потом вылазят ошибки, если не полностью обращение писать. Сам натыкался.

>> При изменении состава коллекции (например при удалении или добавлении поля в форму) порядок нумерации элементов может измениться.
>И вообще обращением по номеру обычно пользуются в цикле, проходящем по всем элементам коллекции, да и то только если по какой-то причине не хочется пользоваться командой For Each.

Ок.

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

Я забыл морду поставить. Вот, компенсирую:


> >А чем в форуме плохо?
> А тем, что послезавтра у мя халявного инета не будет, т.е. он будет либо нехалявный, либо (через мобилу дорого, а стационарного телефона у мя нету) никакой :)

А со мной ты как общаться собираешься, если не через Интернет? Ну, приезжай сюда, я тебя по Тель-Авиву покатаю, на набережную сходим, на девочек посмотрим... Можно съездить в Иерусалим на могилу Руставели.

> > Вообще-то, такой способ обращения к полям источника данных - фича недокументированная.
> А чего ж ее не рекламировать, если "мастера" так делают. А потом вылазят ошибки, если не полностью обращение писать. Сам натыкался.

Это все так, но надо сначала объяснить, что это такое. Насколько я понимаю, к этим полям нельзя добраться ни через Controls (их там нет), ни через Fields (у формы нет такой коллекции), а только непосредственно как MyForm!MyField. Вот это и надо сказать предварительно.
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194579
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А со мной ты как общаться собираешься, если не через Интернет? Ну, приезжай сюда, я тебя по Тель-Авиву покатаю, на набережную сходим, на девочек посмотрим... Можно съездить в Иерусалим на могилу Руставели.
:))

>Это все так, но надо сначала объяснить, что это такое. Насколько я понимаю, к этим полям нельзя добраться ни через Controls (их там нет), ни через Fields (у формы нет такой коллекции), а только непосредственно как MyForm!MyField. Вот это и надо сказать предварительно.

А я и не говорю, как к ним добраться, я говорю, что
Несмотря на вышеуказанные правила, встроенные мастера создания форм создают поля с именами, совпадающими с именами соответствующих полей таблицы-источника данных. В этом случае следует использовать полный синтаксис обращения к объекту.
И все, собсна. Что объяснить? Дополнительно написать, что если не использовать полный синтаксис, можно наткнуться на поле источника данных, а можно и не наткнуться?
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194585
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Я только говорю, что, прежде чем упоминать что-то, нужно объяснить, что это такое. Особенно когда речь идет о вещи, которую в хелпе не найти.

Кстати, если имя контрола совпадает с именем поля, то обращение MyForm!MyField приводит именно к контролу, так что никаких проблем нет. Если поле с таким именем есть, а контрола нет, тогда тоже никаких проблем, приходим к полю. А проблемы начинаются тогда, когда случайно есть и контрол, и поле, но источник этого контрола не это поле. Вот тогда может случиться путаница. Тогда обращение через .Controls приводит к именно контролу (и снимает неоднозначность), а для именно поля никакого способа нет.

И еще кстати. В отчетах такой способ обращения к полям не работает. Поэтому хотя для отчетов и верно все сказанное про формы, - но все-таки не совсем все.
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194588
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понил. Пошло пить пиво и думать. Завтра опять новый вариант положу.
Спокночи :)
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194589
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
!לרוויה (ли-рваЯ!)

(В русском такого нет. Это как приятного аппетита, но не едящему, а пьющему. Перевод - до насыщения (жидкостью), до утоления жажды.)
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32194824
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё таки как и говорил ВС квадратные скобки они как и были квадратными, так и остались, не смотря на то что переводчики так их испохабили и из математики дальше деления не пошли.

Так что всё таки их правильно называть квадратными, но если настаиваешь на присутствии названия "прямые скобки", то упомяни где-нить их так обзывают переводчики.
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32195549
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Внес изменения:
в п. 2.1 :
...квадратные скобки ([] - в русифицированной версии Access они называются "прямыми") следует использовать, если имя элемента содержит внутренние пробелы или другие специальные символы (кроме, соответственно, "]" и "["), иначе их наличие не обязательно.
далее "прямые" заменил на "квадратные"

там же:
Будьте внимательны, если пользуетесь подобными сокращениями. В случае, когда формы содержит одноименные элементы различных коллекций, пропуск идентификатора коллекции может повлечь за собой неверную работу вашей программы (см. п. 3.6). Хороший способ избегать подобных "совпадений" использовать префиксы в именах, например, название поля "Поле1" в форме может иметь имя "пфПоле1" и т.п.
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32195562
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ужас какой. "Название может иметь имя...". Очень хорошо. Завтра переделаю, но идея - добавить рекомендацию использовать префиксы и убрать упоминание о полях источника данных, надеюсь, останется.
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32195565
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Они оба среднего рода, кто там кого может иметь!
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32195675
>!לרוויה (ли-рваЯ!)

>(В русском такого нет. Это как приятного аппетита, но не едящему, а пьющему. Перевод - до насыщения (жидкостью), до утоления жажды.)


Вот переводы на русский язык.

1.(MP3)
2.(MP3)
3.(MP3)
4.(MP3)
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32195876
Фотография 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 они называются "прямыми") следует использовать, если имя элемента содержит внутренние пробелы или другие специальные символы (кроме, соответственно, "]" и "["), иначе их наличие не обязательно.

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

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

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

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

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

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

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

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

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

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

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


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. Пример использования слова Me в модуле формы, содержащей поле Поле1:

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


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 описаны довольно обширные «правила наименования объектов», суть которых сводится к рекомендации давать уникальные имена полям таблиц, самим таблицам, формам, переменным, функциям и пр. Причем имена не должны совпадать с длинным перечнем зарезервированных слов. В большинстве случаев вы можете отступать от этих правил, но в этом случае вы будете действовать на свой страх и риск.
Несмотря на вышеуказанные правила, встроенные мастера создания форм создают поля с именами, совпадающими с именами соответствующих полей таблицы-источника данных. В этом случае следует использовать полный синтаксис обращения к объекту.

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

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

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

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

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

все вышесказанное в равной мере относится и к отчетам, если заменить все вхождения ключевых слов Form и Forms на Report и Reports.
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32195884
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Жалко, что не видно, где именно изменения. Но вроде мне прикопаться не к чему (кроме, может, нескольких ачипяток).
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32195914
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может я чего пропустил или недопонял, тогда кто мне объяснит.

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


У Гетца Access 2002 Разработка настольных приложений.
Глава 5. Объекты данных ADO.
Что использовать: восклицательный знаки, точку или кавычки? (стр. 192)

"...
cat.Tables!tblCustomers.Columns!Address.Type
cat.Tables("tblCustomers").Columns("Address").Type

Оказывается "за кулисами" перед выполнением первого из приведенных операторов его синтаксис всегда преобразуется в соответствии со вторым вариантом, то есть вместо восклицательного знака употребляются скобки с кавычками. Поэтому, используя восклицательный знак, вы несколько повышаете темп ввода, за что расплачиваетесь замедлением выполнения. Мы рекомендуем всегда использовать второй вариант синтаксиса, то есть употреблять скобки с кавычками для обращения к объектам коллекций."
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32199157
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2incold
Да? Я сейчас в 97-м попробовал, Forms!Форма.Controls.Поле таки быстрее, чем Forms("Форма").Controls("Поле"). Не знаю почему Гетц прогнозирует обратное. Да и в хелпах сказано что, в частности, Ме!Поле работает быстрее, чем Ме("Поле")...

2алл
Если замечаний нету, то завтра-послезавтра, с повыдергиванными (на мой взгляд:) орфографическими ошибками, сливаю текст мегакнопкой. :)
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32199334
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да? Я сейчас в 97-м попробовал, Forms!Форма.Controls.Поле таки быстрее, чем Forms("Форма").Controls("Поле")

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

Celeron 866 Ram 128 Mb
Win 98 SE
Office XP Developer SP2
MS SQL Server 2000 SP1

Открыта форма имеется поле
В цикле от 1 до 20000
в переменную считывается значение из поля затем записывается
1-й вариант обращение Forms!MyForm!MyField
2-й вариант обращение Forms("MyForm")("MyField")
Перед началом цикла в переменную l_time =Timer()
после цикла l_time =Timer()-l_time
Результат (выполнялся 5 раз):
1-й вариант на 1,5% медленнее чем 2-й вариант
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32199718
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 Geo:

Если есть желание проверить орфографические ошибки, то давай мне. Я по одной из профессий корректор.
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32200035
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2incold
функция проверки нарисована выше, результат: Forms("...")... - 21,6 c., Forms![...]... - 20,9 c. Машинка -Athlon 1333/484ddr266/Seagate B-IV 7200. Вот и вопрос. М.б., действительно, просто выкинуть этот пункт?

2Владимир Саныч
Пришли, пожалуйста, сюда: jorgen@mail.ru, свой адрес, завтра-послезавтра отправлю свой текст.
Спасибо. :)
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32200046
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Послано. :^)
...
Рейтинг: 0 / 0
FAQ: Как обратится к полю формы или подчиненной формы
    #32202016
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Поправка от Лоха:\r
\r
В SQL запросах (если там есть что-нибудь типа "Where ID=Forms!Form1!Control1") - только через !
...
Рейтинг: 0 / 0
25 сообщений из 82, страница 3 из 4
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / FAQ: Как обратится к полю формы или подчиненной формы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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