Estou trabalhando em um banco de dados do LibreOffice Base 6.3.5,onde eu criei um formulário com botões de pressão, e em um desses botões ,é necessária a ação de abrir um formulário, ação essa que só é possível através de uma macro. Sou usuário iniciante do LibreOffice, e possuo muito pouco conhecimento em programação, gostaria muito de receber auxílio de alguém que me descrevesse, passo a passo como criar essa macro, e também respectivamente uma macro que fechasse o formulário, e uma última macro que acessa- se um relatório.
Boa tarde!
Também sou iniciante no LibreOffice Base e tenho (ou tinha) um problema semelhante. No meu caso, eu já consigo abrir e fechar os formulários, mas eu quero um botão com duas ações (fechar o formulário atual e abrir outro sem voltar para o formulário inicial). Para abrir e fechar (botão com uma só ação), eu fiz assim:
PASSO 1 - Ativar macros
No “Menu Principal” do LibreOffice, clique em “Ferramentas”, depois em “Opções”, depois em “Segurança”, depois no botão “Segurança de macros…” e na aba “Nível de segurança”, marque a opção “Média” ou “Baixa (não recomendado)”
Obs: no nível “Média”, toda vez que abrir o arquivo de banco de dados vai pedir para ativar macros (eu escolhi o nível “Media”; o nível “Baixa” é mais arriscado).
PASSO 2 - Criar as macros (acho que o arquivo do banco de dados precisa está aberto)
a) No “Menu Principal” do LibreOffice, clique em “Ferramentas”, selecione “Macros”, “Organizar Macros” e depois clique em “Basic”.
Na janela “Macros do BASIC”, na coluna esquerda deve aparecer a lista de macros: “Minhas macros”, “Macros do Libreoffice”, etc e logo abaixo o nome do(s) seu(s) arquivo(s) de banco de dados.
b) Com dois cliques (ou pela seta), selecione seu arquivo de banco de dados, depois “Standard” e depois clique em “Nova” (no meu caso ficou “Module1”, mas acho que poderia ter dado outro nome. Todas as macros que criei ficou dentro de "Module1 e depois da primeira macro eu clicava em “Editar” para criar as outras macros). O LibreOffice cira uma macro vazia chamada Main (não sei se tem alguma função, mas eu não mexi nela, apenas criei as minhas logo abaixo dela):
REM ***** BASIC *****
Sub Main
End Sub
Obs: O texto após o “REM” é um comentário. “Sub” delimita o início da macro, “Main” é o nome da macro e “End Sub” o fim da macro.
c) Os códigos das macros que criei (logo abaixo da macro “Main”:
REM ***** Abre o formulário fm_produtos *****
Sub Abrir_fm_produtos
const sNewDocumentName=“fm_produtos”
oNewFormDocument=ThisDatabaseDocument.FormDocuments.getbyname(sNewDocumentName).open
End Sub
REM ***** Fecha o formulário fm_produtos *****
Sub Fechar_fm_produtos
const sNewDocumentName=“fm_produtos”
oNewFormDocument=ThisDatabaseDocument.FormDocuments.getbyname(sNewDocumentName).close
End Sub
REM ***** Abre o relatório rl_estoque_produtos *****
Sub Abrir_rl_estoque_produtos
const sNewDocumentName=“rl_estoque_produtos”
oNewReportDocument=ThisDatabaseDocument.ReportDocuments.getbyname(sNewDocumentName).open
End Sub
Obs1: não esquecer de salvar a macro assim que criá-la. Eu criei uma de cada vez, saia para configurar e testar os botões e voltava para criar a próxima (ao voltar para “Module1”, eu clicava em “Editar” em vez de “Nova”).
Obs2: o nome da macro fica logo após o “Sub”, na primeira linha, e não pode ter caracteres especiais nem espaço. Ex: “Abrir_fm_produtos” para diferenciar do nome do formulário que ela abrirá (fm_produtos).
Obs3: “const sNewDocumentName”, na segunda linha, é uma constante que recebe o nome do objeto que será acionado (formulário, relatório, etc). Ex: fm_produtos
Obs4: o que diferencia a ação das macros é o comando no final da terceira linha, após o ponto (.). Ex: “open” para abrir e “close” para fechar.
Obs5: na terceira linha, no meio do comando (?) é informado o tipo do objeto que será acionado. Ex: “oNewFormDocument” e “FormDocuments” (para formulários) ou “oNewReportDocument” e “ReportDocuments” (para relatórios).
PASSO 3 - Configurar o botão para chamar a macro
a) No arquivo do banco de dados, abrir o formulário (ou relatório) para edição.
b) Criar ou selecionar o botão de pressão e abrir “Propriedades do controle”.
c) Na aba “Geral”, se desejar, mude o “Nome” e o “Rótulo” do botão.
d) Na aba “Eventos”, em “Executar ação”, clique no botão ao lado (3 pontinhos), na janela “Atribuir ação” selecione “Ao executar ação” e clique no botão “Macro…”, na janela “Seletor de macros”, na coluna “Biblioteca”, selecione seu banco de dados, depois “Standard”, depois “Module1”, selecione a macro correspondente a ação e clique em “Ok”.
e) Feche as janelas na sequência inversa, saia do modo edição e salve seu formulário e seu banco de dados. Pronto. No meu funcionou.
E para o meu problema, deve ser possível colocar as duas ações (fechar um e abrir outro) na mesma marco. Vou continuar procurando a solução. Se alguém puder ajudar, eu agradeço.
REM Abre o formulário fm_produtos
Sub Abrir_fm_produtos
const sNewDocumentName=“fm_produtos”
oNewFormDocument=ThisDatabaseDocument.FormDocuments.getbyname(sNewDocumentName).open
End Sub
REM Fecha o formulário fm_produtos
Sub Fechar_fm_produtos
const sNewDocumentName=“fm_produtos”
oNewFormDocument=ThisDatabaseDocument.FormDocuments.getbyname(sNewDocumentName).close
End Sub
REM Abre o relatório rl_estoque_produtos
Sub Abrir_rl_estoque_produtos
const sNewDocumentName=“rl_estoque_produtos”
oNewReportDocument=ThisDatabaseDocument.ReportDocuments.getbyname(sNewDocumentName).open
End Sub
Na postagem anterior, os códigos não ficaram em linhas separadas para facilitar o entendimento…