|
|
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
Выкладываю очередной (млин) вариант, и иду клеить обои. Если вернусь, прошу считать меня коммунистом: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2003, 18:47 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
> Действительно, может быть, лучше я вышлю тебе текст со всеми оформлятелями? Я тебя настолько достал? > И тады можно будет, в самом деле, подумать и пообсуждать спокойно и без спешки? А чем в форуме плохо? > А я потом буду ходить в готовый ФАК? :) Это ты к тому, чтобы я все написал вместо тебя? По-моему, ты уже замечательно это сделал. > например, поле источника данных формы и элемент коллекции .Controls Вообще-то, такой способ обращения к полям источника данных - фича недокументированная. Ее лучше не рекламировать. А упомянуть здесь можно возможную путаницу со свойствами самой формы (напр., Name). > При изменении состава коллекции (например при удалении или добавлении поля в форму) порядок нумерации элементов может измениться. И вообще обращением по номеру обычно пользуются в цикле, проходящем по всем элементам коллекции, да и то только если по какой-то причине не хочется пользоваться командой For Each. > Имейте в виду, что во втором случае, после окончания использования объектной переменной Что такое второй случай? Вроде второй случай здесь - это With. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2003, 20:15 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
Млин, Володь, если б ты так "Сжатие БД" вычитывал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2003, 20:41 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
Вань, я прошу прощения, но в сжатии я меньший специалист... :^) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2003, 21:09 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
>Я тебя настолько достал? Млин, ведь хотел же, чтоб так не воспринял. Владимир Саныч, ни в коем случае. Я повторюсь, если б не твои подсказки/поправки, я б и сам сейчас не разбирался толком в вопросе. И я очень за это благодарен, чес-слово. >А чем в форуме плохо? А тем, что послезавтра у мя халявного инета не будет, т.е. он будет либо нехалявный, либо (через мобилу дорого, а стационарного телефона у мя нету) никакой :) > Это ты к тому, чтобы я все написал вместо тебя? По-моему, ты уже замечательно это сделал. Хех, спасиба. Но это не моя (вернее, не только моя заслуга). >> например, поле источника данных формы и элемент коллекции .Controls > Вообще-то, такой способ обращения к полям источника данных - фича недокументированная. Ее лучше не рекламировать. А упомянуть здесь можно возможную путаницу со свойствами самой формы (напр., Name). А чего ж ее не рекламировать, если "мастера" так делают. А потом вылазят ошибки, если не полностью обращение писать. Сам натыкался. >> При изменении состава коллекции (например при удалении или добавлении поля в форму) порядок нумерации элементов может измениться. >И вообще обращением по номеру обычно пользуются в цикле, проходящем по всем элементам коллекции, да и то только если по какой-то причине не хочется пользоваться командой For Each. Ок. >Что такое второй случай? Вроде второй случай здесь - это With. Охних. Конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2003, 21:18 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
> Млин, ведь хотел же, чтоб так не воспринял. Я забыл морду поставить. Вот, компенсирую: > >А чем в форуме плохо? > А тем, что послезавтра у мя халявного инета не будет, т.е. он будет либо нехалявный, либо (через мобилу дорого, а стационарного телефона у мя нету) никакой :) А со мной ты как общаться собираешься, если не через Интернет? Ну, приезжай сюда, я тебя по Тель-Авиву покатаю, на набережную сходим, на девочек посмотрим... Можно съездить в Иерусалим на могилу Руставели. > > Вообще-то, такой способ обращения к полям источника данных - фича недокументированная. > А чего ж ее не рекламировать, если "мастера" так делают. А потом вылазят ошибки, если не полностью обращение писать. Сам натыкался. Это все так, но надо сначала объяснить, что это такое. Насколько я понимаю, к этим полям нельзя добраться ни через Controls (их там нет), ни через Fields (у формы нет такой коллекции), а только непосредственно как MyForm!MyField. Вот это и надо сказать предварительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2003, 21:36 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
>А со мной ты как общаться собираешься, если не через Интернет? Ну, приезжай сюда, я тебя по Тель-Авиву покатаю, на набережную сходим, на девочек посмотрим... Можно съездить в Иерусалим на могилу Руставели. :)) >Это все так, но надо сначала объяснить, что это такое. Насколько я понимаю, к этим полям нельзя добраться ни через Controls (их там нет), ни через Fields (у формы нет такой коллекции), а только непосредственно как MyForm!MyField. Вот это и надо сказать предварительно. А я и не говорю, как к ним добраться, я говорю, что Несмотря на вышеуказанные правила, встроенные мастера создания форм создают поля с именами, совпадающими с именами соответствующих полей таблицы-источника данных. В этом случае следует использовать полный синтаксис обращения к объекту. И все, собсна. Что объяснить? Дополнительно написать, что если не использовать полный синтаксис, можно наткнуться на поле источника данных, а можно и не наткнуться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2003, 21:44 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
Я только говорю, что, прежде чем упоминать что-то, нужно объяснить, что это такое. Особенно когда речь идет о вещи, которую в хелпе не найти. Кстати, если имя контрола совпадает с именем поля, то обращение MyForm!MyField приводит именно к контролу, так что никаких проблем нет. Если поле с таким именем есть, а контрола нет, тогда тоже никаких проблем, приходим к полю. А проблемы начинаются тогда, когда случайно есть и контрол, и поле, но источник этого контрола не это поле. Вот тогда может случиться путаница. Тогда обращение через .Controls приводит к именно контролу (и снимает неоднозначность), а для именно поля никакого способа нет. И еще кстати. В отчетах такой способ обращения к полям не работает. Поэтому хотя для отчетов и верно все сказанное про формы, - но все-таки не совсем все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2003, 22:23 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
Понил. Пошло пить пиво и думать. Завтра опять новый вариант положу. Спокночи :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2003, 22:32 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
!לרוויה (ли-рваЯ!) (В русском такого нет. Это как приятного аппетита, но не едящему, а пьющему. Перевод - до насыщения (жидкостью), до утоления жажды.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2003, 22:40 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
Всё таки как и говорил ВС квадратные скобки они как и были квадратными, так и остались, не смотря на то что переводчики так их испохабили и из математики дальше деления не пошли. Так что всё таки их правильно называть квадратными, но если настаиваешь на присутствии названия "прямые скобки", то упомяни где-нить их так обзывают переводчики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2003, 11:48 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
Внес изменения: в п. 2.1 : ...квадратные скобки ([] - в русифицированной версии Access они называются "прямыми") следует использовать, если имя элемента содержит внутренние пробелы или другие специальные символы (кроме, соответственно, "]" и "["), иначе их наличие не обязательно. далее "прямые" заменил на "квадратные" там же: Будьте внимательны, если пользуетесь подобными сокращениями. В случае, когда формы содержит одноименные элементы различных коллекций, пропуск идентификатора коллекции может повлечь за собой неверную работу вашей программы (см. п. 3.6). Хороший способ избегать подобных "совпадений" использовать префиксы в именах, например, название поля "Поле1" в форме может иметь имя "пфПоле1" и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2003, 22:12 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
Ужас какой. "Название может иметь имя...". Очень хорошо. Завтра переделаю, но идея - добавить рекомендацию использовать префиксы и убрать упоминание о полях источника данных, надеюсь, останется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2003, 23:36 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
Они оба среднего рода, кто там кого может иметь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2003, 23:46 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
>!לרוויה (ли-рваЯ!) >(В русском такого нет. Это как приятного аппетита, но не едящему, а пьющему. Перевод - до насыщения (жидкостью), до утоления жажды.) Вот переводы на русский язык. 1.(MP3) 2.(MP3) 3.(MP3) 4.(MP3) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2003, 09:25 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2003, 11:51 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
Жалко, что не видно, где именно изменения. Но вроде мне прикопаться не к чему (кроме, может, нескольких ачипяток). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2003, 11:57 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
Может я чего пропустил или недопонял, тогда кто мне объяснит. выражение типа (3) выполняется медленнее, чем (2) и (4). У Гетца Access 2002 Разработка настольных приложений. Глава 5. Объекты данных ADO. Что использовать: восклицательный знаки, точку или кавычки? (стр. 192) "... cat.Tables!tblCustomers.Columns!Address.Type cat.Tables("tblCustomers").Columns("Address").Type Оказывается "за кулисами" перед выполнением первого из приведенных операторов его синтаксис всегда преобразуется в соответствии со вторым вариантом, то есть вместо восклицательного знака употребляются скобки с кавычками. Поэтому, используя восклицательный знак, вы несколько повышаете темп ввода, за что расплачиваетесь замедлением выполнения. Мы рекомендуем всегда использовать второй вариант синтаксиса, то есть употреблять скобки с кавычками для обращения к объектам коллекций." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2003, 12:14 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
2incold Да? Я сейчас в 97-м попробовал, Forms!Форма.Controls.Поле таки быстрее, чем Forms("Форма").Controls("Поле"). Не знаю почему Гетц прогнозирует обратное. Да и в хелпах сказано что, в частности, Ме!Поле работает быстрее, чем Ме("Поле")... 2алл Если замечаний нету, то завтра-послезавтра, с повыдергиванными (на мой взгляд:) орфографическими ошибками, сливаю текст мегакнопкой. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2003, 02:30 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
Да? Я сейчас в 97-м попробовал, Forms!Форма.Controls.Поле таки быстрее, чем Forms("Форма").Controls("Поле") А интересно каким это способом было определено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2003, 10:53 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
Тест на разницу в скорости обработки обращения к коллекции через ! или .("") 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-й вариант ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2003, 11:58 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
2 Geo: Если есть желание проверить орфографические ошибки, то давай мне. Я по одной из профессий корректор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2003, 14:17 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
2incold функция проверки нарисована выше, результат: Forms("...")... - 21,6 c., Forms![...]... - 20,9 c. Машинка -Athlon 1333/484ddr266/Seagate B-IV 7200. Вот и вопрос. М.б., действительно, просто выкинуть этот пункт? 2Владимир Саныч Пришли, пожалуйста, сюда: jorgen@mail.ru, свой адрес, завтра-послезавтра отправлю свой текст. Спасибо. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2003, 19:39 |
|
||
|
FAQ: Как обратится к полю формы или подчиненной формы
|
|||
|---|---|---|---|
|
#18+
Послано. :^) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2003, 20:10 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32199157&tid=1675321]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
169ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 488ms |

| 0 / 0 |
