|
|
|
| Привет всем. Народ, подскажите плиз такую штуку. Есть форма, на форме надпись. "1". Можно ли эту надпись изменить без конструктора? Жму кнопку, открываю форму запроса, меняю и при закрытии формы выполняю код
Forms!Форма1!Надпись1.Caption = Me.Поле0
Надпись на форме1 меняется.
Но при повторном открытии этой формы снова вылазит старая надпись та, что прописана в свойствах конструктора. Можно ли как-то избежать фазы конструктора?
Одно время все такие надписи хранил в отдельной таблице, при открытии формы пробегая рекордсетом назначал данные надписям и прочему. Можно ли без рекордсета из таблиц значений надписей как-то? что бы новые данные в надписи сохранились. | |
|
| |
|
|
|
| На кнопку закрытия формы повесить acSaveYes:
docmd.Close acForm,me.Name,acSaveYes | |
|
| |
|
|
|
| Что-то не то. Прервано выполнение макрокоманды Close
Пробовал всякое. мe.name - имя формы определяет правильно. ругается на acform
без него форму закрывает, но ничего не сохраняет. | |
|
| |
|
|
|
| Надо не на событие Close, а на кнопку(сделать кнопку и на нее повесить)
Щас проверю сам. Несколько минут...
Да. Не сохраняет.
Насколько я понимаю, капшин меняется из другой формы?
Подчиненная?
Тогда отцепить и открыть в режиме конструктора
docmd.OpenForm "Форма1",acDesign,,,,acHidden
сделать изменения и закрыть
ПС
проверил
DoCmd.OpenForm "Frm1", acDesign, , , , acHidden
Forms("Frm1").Caption = "********"
DoCmd.Close acForm, "Frm1", acSaveYes
работает | |
|
| |
|
11 Кб. |
|
| Форма не подчиненная. Изменения с другой формы в процессе работы. А при закрытии формы 1 необходимо все эти изменения сохранить.
Ща попробую с таким кодом. Но, если будет переключаться каждый раз при закрытии формы в режим конструктора, то это ни есть гуд наверное. Неужто придется таблицу ставить и при открытии формы из этой таблицы вгонять caption. | |
|
| |
|
|
|
| Тогда мой код 100% прокатит
Но, если будет переключаться каждый раз при закрытии формы в режим конструктора, то это ни есть гуд наверное
|
Почему? Что смущает?
А при закрытии формы 1 необходимо все эти изменения сохранить.
|
Наверное, не так.
При закрытии вызывающей формы сохранить в форме1.
Саму себя форма не откроет. | |
|
| |
|
|
|
|
Неужто придется таблицу ставить и при открытии формы из этой таблицы вгонять caption.
|
Еще вариант: формировать капшины в запросе формы, если есть такая воозможность (т.е. если в источнике данных (запросе) можно подцепить правила формирования капшинов.
И еще. Если форма не подч.
Forms!Форма1!Надпись1.Caption = Me.Поле0 - синтаксис не верный. | |
|
| |
|
|
|
| Еще вариант открывать форму1 через класс
Dim f As Form
Set f = New Form_Форма1
DoCmd.OpenForm f.name
Тогда можно мой код спокойно ставить | |
|
| |
|
14 Кб. |
|
| Или я что-то не понял или одно из двух. Третьего точно не дано. И что там с синтаксисом?
Вот пример.
Дана форма 1. На ней надпись 33. Нажимаем на нее 2 раза. Выходит форма2 с полем. Вводим в поле нечто иное и закрываем эту форму. На форме 1 вместо 33 видим то, что вводили в форме 2. Может синтаксис не верный, но работает на ура. Далее надо закрыть форму 1 и открыв в следующий раз в надписи должно быть не 33, а то самое нечто иное, с чем закрывали эту форму. Вот в этом загвоздка. Тут хоть какую кнопку ставь, один хрен ругается на acform,...
Через класс тоже ничего не получается. | |
|
| |
|
15 Кб. |
|
| в форме2
Private Sub Form_Close()
Forms!Форма1!Надпись1.Caption = Me.Поле0
DoCmd.OpenForm "Форма1", acDesign, , , acFormEdit, acHidden
Forms("Форма1").Надпись1.Caption = Поле0
DoCmd.Close acForm, "Форма1", acSaveYes
DoCmd.OpenForm "Форма1"
End Sub
Недостаток: если форма1 тяжелая - будет заметна перезагрузка | |
|
| |
|
16 Кб. |
|
| Вариант 2 через глоб. переменную (описана в module1) | |
|
| |
|
|
|
| Спасибо, дядя Федор. Выходит, что простого способа не существует. Остается скрывать форму 1, при запуске формы 2, что бы перезагрузка не сильно в глаза бросалась.
А все из-за пределов измерения. В рабочей форме таких надписей масса. Но это респект. | |
|
| |
|
|
|
| //Остается скрывать форму 1, при запуске формы 2, что бы перезагрузка не сильно в глаза бросалась. //
Хороший вариант.
Еще подумай о запросе. (Может можно там формировать капшины, если они зависят от связанных данных) | |
|
| |
|
|
|
| Маловероятно. Есть формы, на которых полтора десятка различных пунктов. На каждый пункт по 3 параметра, да еще результат. Каждый параметр надо ограничить по пунктам Min и Max, при выходе за пределы которых меняется цвет шрифта и т.д. (условное форматирование) Пределы надо иметь возможность менять. Таблу делать неохота, хотя... В общем решил выпендриться таким образом. А запросом - весьма проблематично. Если только запрос на рекордсет и считывать параметры из таблицы, ну и т.д....
Хочу опробовать текущий вариант. | |
|
| |
|