Проблема с переходом на ACCESS2007

mds_world
Дата: 18.12.2009 10:09:44
CoolMind
GNM, доброе утро! Честно говоря, не знаком с Акс2007. Хотел спросить, а чем занимается данная макрокоманда, и где хотелось бы её видеть (где она расположена)?
CoolMind, GNM как раз и говорит, что 2007 эта макрокоманда недоступна.

А вообще, любопытная команда
+ из хелпа
Макрокоманда ЗадатьЗначение (SetValue) задает значение поля, элемента управления или свойства в форме, в форме в режиме таблицы или в отчете.

Значения

Макрокоманда ЗадатьЗначение (SetValue) использует следующие аргументы.

Аргумент Описание
Элемент Имя поля, имя элемента управления или название свойства, значение которого следует задать. Введите имя поля, элемента управления или свойства в поле Элемент в разделе Аргументы макрокоманды окна макрокоманды.Для ссылки на элемент управления в форме или отчете, в которых вызывается макрос, достаточно указать имяЭлемента, а для ссылки на другие документы следует использовать полный синтаксис, т.е. Forms!имяФормы!имяЭлемента. Данный аргумент является обязательным.
Выражение Выражение Microsoft Access, которое используется для установки значения данного элемента. Для ссылок на любые объекты в выражении следует использовать полный синтаксис. Например, для увеличения значения в элементе управления «Зарплата» в форме «Сотрудники» на 10 процентов используется следующее выражение Forms!Сотрудники!Зарплата*1.1. Данный аргумент является обязательным.Примечание. При определении этого аргумента не следует вводить знак равенства (=) перед выражением. Если знак равенства будет введен, то Microsoft Access вычислит значение выражения, а затем обработает его как выражение. Это может привести к непредсказуемым результатам, если выражение является строковым. Например, если ввести для этого аргумента выражение ="Строка1", то сначала будет определено значение этого выражения («Строка1»), а затем полученное значение будет использовано в качестве значения этого аргумента, т.е. будет проведен поиск элемента управления или свойства с именем Строка1 в форме или отчете, из которого был вызван макрос.
Примечание. Для создания выражения, определяющего значение любого из аргументов данной макрокоманды, с помощью построителя выражений следует нажать кнопку построителя справа от соответствующей ячейки.

Дополнительные сведения

Данную макрокоманду используют для задания значения поля или элемента управления в форме (в режиме формы или таблицы) или в отчете. Кроме того, можно задать значение практически любого свойства элемента управления, формы или отчета в лбом режиме. Сведения о том, в каких режимах конкретное свойство допускает определение с помощью макроса, можно найти в описании этого свойства.
Кроме того, можно задать значение поля в базовой таблице формы, даже если в этой форме нет элемента управления, присоединенного
к этому пол. В этом случае для аргумента «Элемент» следует использовать синтаксис Forms!имяФормы!имяПоля. Для ссылки на поле в базовой таблице отчета следует использовать синтаксис Reports!имяОтчета!имяПоля, однако, в этом случае необходимо, чтобы отчет содержал элемент управления, присоединенный к этому пол, или на это поле должна иметься ссылка в вычисляемом элементе управления в отчете.

При задании значения элемента управления в форме с помощью макрокоманды ЗадатьЗначение (SetValue) не выполняется проверка условий на значение, наложенных на значение этого элемента управления на уровне формы. Однако если данный элемент управления является присоединенным, то выполняется проверка условий, наложенных на уровне таблицы, которая содержит базовое поле. Кроме того, макрокоманда ЗадатьЗначение (SetValue) активизирует пересчет, однако, пересчет может быть отложен. Для того чтобы активизировать немедленное обновление элемента управления и завершить отложенный пересчет, следует использовать макрокоманду ОбновитьОбъект (RepaintObject). На значение элемента управления, задающееся с помощью макрокоманды ЗадатьЗначение (SetValue), не влияют также определенная для элемента управления маска ввода и значение свойства Маска ввода (InputMask) поля базовой таблицы.

Для изменения значения элемента управления макрокоманду ЗадатьЗначение (SetValue) можно включить в макрос, связанный со свойством После обновления (AfterUpdate) этого элемента управления. Однако нельзя использовать макрокоманду ЗадатьЗначение в макросе, связанном со свойством До обновления (BeforeUpdate) для изменения значения этого элемента управления (хотя и можно использовать эту макрокоманду для изменения значений других элементов управления). Кроме того, макрокоманду ЗадатьЗначение (SetValue) можно использовать в макросе, связанном со свойствами формы До обновления (BeforeUpdate) или После обновления (AfterUpdate) для изменения значения любого элемента управления в текущей записи.

Примечание. Макрокоманду ЗадатьЗначение (SetValue) нельзя использовать для указания значения следующих элементов управления:

· присоединенные и вычисляемые элементы управления в отчетах.
· вычисляемые элементы управления в формах.

Совет. Макрокоманду ЗадатьЗначение (SetValue) можно использовать в режиме формы для удаления формы с экрана или вывода ее на экран. В качестве значения аргумента «Элемент» введите Forms!имяФормы.Visible и значение «Да» или «Нет» в аргументе «Выражение». Значение «Нет» для свойства Вывод на экран (Visible) модальной формы удаляет форму с экрана и делает ее немодальной. Значение «Да» этого свойства выводит форму на экран и снова делает ее модальной.

Изменение данных в элементе управления или добавление новых данных с помощью макрокоманды ЗадатьЗначение (SetValue) не приводит к возникновению таких событий как До обновления (BeforeUpdate), До вставки (BeforeInsert) или Изменение (Change), которые возникают при выполнении этих действий через интерфейс пользователя. Эти события также не возникают при задании значения элемента управления в программе Visual Basic.

Вызов данной макрокоманды в программе Visual Basic невозможен. Значение следует задавать непосредственно в инструкции Visual Basic.
CoolMind
Дата: 18.12.2009 10:30:36
mds_world, спасибо за информацию. Я имел в виду, где она была в 2003 Аксессе ;)
Честно говоря, вообще не вижу смысла в данной макрокоманде, легче руками формулу написать.
GNM
Дата: 18.12.2009 14:42:04
Ребята, спасибо за внимание!
Команда ЗадатьЗначение (Set Value) очень простая, она равнозначна оператору присваивания в VBA. Согласитесь, что без нее интерфейс не создать - мне нужно было передать значение поля из одной подчиненной формы в другую.
Вчера я потратила более часа, перетаскивая старую базу туда-сюда, создавая новую с разными значениями параметров - бесполезно!
А сегодня нашла, наконец. Даже стыдно, насколько это было на глазах, но я не обращала внимания. В конструкторе макросов еcть кнопка [Показать все действия]; именно она и добавляет в список макрокоманд "запрещенные" для ненадежных баз данных команды. Их становится на 9 штук больше.
Теперь проблема наоборот - где бы не создала БД, в надежном расположении или нет, все команды доступны, если нажать эту кнопку.
Как мне не нравится новый Office! Насколько больше кликов приходится делать и как все запрятано! Месяц назад так же искала в Акс2007 возможность создания проекта. Нет такой команды! Оказалось, нужно просто при создании проекта указать соответствующее расширение; хорошо, что хоть его не изменили. Определила методом тыка.
Лет 15 назад читала в одном интервью с сотрудником MS, "...мы не следуем за потребностями пользователей, мы их активно формируем". Производителям ПО нужно зарабатывать деньги, и поскольку возможности архитектуры ПК уже исчерпаны, изменяют интерфейс, и делают его таким "удобным", что у студентов 3-го, 4-го курса челюсти отвисают на первых занятиях с новым лицензионным ПО!
Еще раз всем спасибо!
CoolMind
Дата: 18.12.2009 14:51:36
GNM, ооо! Не завидую!
У нас тоже преподаватель по базам данных - женщина. На 4 курсе "пилили" этот Аксесс неслабо, ещё 97 версию. Она, конечно, специалист широкого профиля и Оракл знает, и SQL Server, и Fox Pro частично. Тяжело ей было каждому в деталях объяснить, как строятся макросы, запросы, формы.
Сочувствую!!!
bronz
Дата: 19.12.2009 12:17:06
Спасибо за подсказку. Я то же наискался, так и не нашел!
Терь буду знать!