Кнопка для открытия формы.

Автор Print-out, 30 января 2012, 14:57

0 Пользователи и 1 гость просматривают эту тему.

Print-out

Пожалуйста, помогите написать макрос для кнопки, открывающей из одной формы другую форму. Знаю, здесь уже было подобное обсуждение, я его видела и на основе советов написала какой-то кривой макрос. Видите ли, я в жизни не имела дела с программированием, да и руки не из того места растут.  :-\ Но "партия сказала надо", поэтому приходится.  :(

Мой макрос имеет код:

Sub OpenForm

FormKnopka=ThisComponent.Parent
FormDocuments=Standard
GetByName("Показания"). open

End Sub


Но душа ООо этого безобразия не принимает, выдаёт синтаксическую ошибку.  >:(

Как и что поправить, понять не могу, требуется помощь.
Заранее спасибо!

[вложение удалено Администратором]

neft

1. Формы "Показания" не существует в вашей природе.
2. Попробуйте для существующей в вашей природе формы "OPLATA"
Sub OpenForm
thisComponent.Parent.FormDocuments.getByName("OPLATA").open
end Sub

Print-out

Ой, чёрт, я и забыла, что удалила форму "Показания"))))))). Вот идиотка!  :roll:
neft, спасибо большое, код заработал!

Ильдар

Цитата: neft от 30 января 2012, 13:15Попробуйте для существующей в вашей природе формы "OPLATA"
в либре не существует штатного макроса для открытия формы? я в базе данных хочу кнопку открытия другой формы на основании данных из первоначальной формы. мне нужно писать свои макросы для этого?

rami

Цитата: Ильдар от 21 октября 2015, 09:38в либре не существует штатного макроса для открытия формы? я в базе данных хочу кнопку открытия другой формы на основании данных из первоначальной формы. мне нужно писать свои макросы для этого?
Зачем "штатные макросы" ???, когда есть "внештатные" 8-), и писать ничего не надо, всё давно написано, ищите :o на форуме (в этой теме neft привёл макрос), а если будут конкретные вопросы по конкретной базе и форме, приложите образец базы и формы.

Alexandr Polbin

Пытаюсь написать макрос на открытие формы ReestrForm кнопкой из формы SimpleForm:
Sub OpenFormReestrMacr
   Dim SimpleForm As Object
   Dim ReestrForm As Object
   SimpleForm=ThisComponent
   ReestrForm=Standard   
   thisComponent.Parent.FormDocuments.getByName("ReestrForm").open
End Sub
                 Ругается, что объектная переменная не установлена.
                 Помогите, пожалуйста. Не программист, до этого больше 10 лет создавал разные приложения в Access и все было нормально, а тут... сразу затык..

rami

#6
Цитата: Alexandr Polbin от 12 февраля 2017, 10:10Ругается, что объектная переменная не установлена.
А что такое ReestrForm=Standard в приведённом вами макросе ??? Уберите его и должно заработать.

JohnSUN

И - на всякий случай - лучше указать параметр для этой процедуры:
Sub OpenFormReestrMacr(oEvent As Variant)Поскольку она вызывается как реакция на событие "кнопка нажата", то кнопка пытается сообщить макросу кто именно его запускает. Поэтому она - кнопка на форме - вызывает процедуру, ожидая, что та сможет принять информацию о событии через параметр. А параметра-то и нет
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Alexandr Polbin

Большее спасибо, заработало...!
К тому же пытался выполнить макрос не кнопкой из формы, а непосредственно из окна его правки...

Вячеслав070424

Я новичок в либре офисе и опен офисе. Сделал по образцу из сообщений выше макрос кнопки для открытия формы Libre Office Base и получил ошибку "свойство или метод не найдены parent". Смотрел всякие форумы по написанию аналогичных макросов, но сам не смог понять где ошибся.
Sub OpenForm
thisComponent.Parent.FormDocuments.getByName("MainFormobobvh").open
end Sub


sokol92

#10
Если действие происходит в контексте уже открытого документа базы данных (.odb), то конструкция такая ("MyForm" - имя открываемой формы):

  If  Not ThisDatabaseDocument.CurrentController.isConnected Then
    ThisDatabaseDocument.CurrentController.Connect
  End If 
  ThisDatabaseDocument.FormDocuments.getByName("MyForm").Open

Вместо метода Open можно использовать методы контроллера loadComponent и loadComponentWithArguments, которые предоставляют больше опций.
Владимир.

kleeenxcy

Я новичок в Libre Office. Сделал макрос кнопки для открытия формы Libre Office Base, но при нажатии на кнопку ничего не открывается. Смотрел всякие форумы по написанию аналогичных макросов, но сам не смог понять где ошибся. Можете объяснить мою ошибку. Мой код:
Sub Main
thisComponent.Parent.FormDocuments.getByName("Транспорт").Open
End Sub


sokol92

Сам код без файла мало информативен. Выгрузите, пожалуйста, файл (*.odb).

О компоненте LO Base написана замечательная книга Э.Питоньяка AndrewBase.odt. Там дается описание интерактивных действий и следом - как это сделать макросом.
Владимир.

kleeenxcy

Вот моя работа, мне нужно чтобы я нажимал на кнопку в которой есть макрос и меня перенаправляло в другие формы

sokol92

Открываю форму "Кнопочная форма".

При нажатии на любую из трех кнопок открывается соответствующая форма.

Я работаю в версии 24.2.6.2 Win 10, у Вас версия 24.8.2.1 (для энтузиастов  :) ) Win 10.
Владимир.