é possível abrir um formulário logo que se abre o arquivo do base… eu fazia isto com um assistente no access com um form que chamava os outros forms como um menu.
agora gostaria de fazer o mesmo com o Libre.
Não tem. Mas existe uma maneira de abrir diretamente o formulário, já que o mesmo é um arquivo do Writer.
Ao fazer um formulário no Base, mandar “Salvar como” o formulário numa pasta. depois fecha-se o Base e vá direto no Writer.
No Writer, abra o formulário (só aparece o formulário sem os dados pois os links se perdem), então vá no Menu “exibir” e escolha “barra de ferramentas”, “controle de formulários”, ative o modo design, e clique na caixa de listagem com o botão direito, escolha “formulário” ali insira (navegando pelos diretórios) os dados necessários para ligar ao banco de dados.
Novamente clique com o botão direito em cima do campo, mas desta vez escolha: “controle” para escolher qual campo do banco de dados quer que apareça ali. Basta fazer num campo para ligar a todos. No caso de um formulário com sub formulário, deve-se repetir o processo no campo do sub-formulário.
Depois é só desativar o modo desing, e está tudo lá, funcionando direitinho,
É só salvar e usar quando quiser.
Em caso de usar um banco que vem de outra máquina, não esquecer de registrá-lo no Libreoffice da máquina atual na mesma sequência de pastas para não perder os links.
tem uma macro que faz isso, olha o código:
REM ***** BASIC *****
Sub AutoExec
On Error Goto HandleError
Dim LastFrame As Object
Dim NumFrames As Integer
Static FormDocs As Object
Dim DBDoc As Object
Dim ImpName As String
Dim DataSource As Object
Dim Conn As Object
Dim Args(1) As New com.sun.star.beans.PropertyValue
Dim FormName As String
Dim FormDoc As Object
FormName="frm_menu" 'Mude aqui para o Forms de Abertura da Aplicação
ImpName="com.sun.star.comp.dba.ODatabaseDocument"
NumFrames=StarDesktop.Frames.Count
LastFrame=StarDesktop.Frames.getByIndex(NumFrames-1)
If LastFrame.Frames.Count>1 Then
Exit Sub
End If
If Not (LastFrame.Controller.Model.ImplementationName=ImpName) Then
Exit Sub REM not a db doc
End If
DataSource=LastFrame.Controller.DataSource
DBDoc=DataSource.DatabaseDocument
FormDocs=DBDoc.FormDocuments
Conn=DataSource.getConnection("","") REM no user/password
Args(0).Name="ActiveConnection" : Args(0).Value=Conn
if FormDocs.hasByName(FormName) Then
FormDoc=FormDocs.loadComponentFromURL(FormName,"_self",2,Args() )
FormDoc.CurrentController.Frame.ContainerWindow.setFocus()
End If
HandleError:
If Err<>0 Then
Exit Sub
End If
End Sub
Pra criar uma macro vc tem que ir no menu ferramentas–>macros–>organizar caixa de diálogo–> módulos → Biblioteca–>editar
Boa noite.
Sou novo no Base mas usava o access e estou produzindo um banco de dados para gerenciar pessoal.
Também usava um Form inicial no Access e gostaria de fazer o mesmo com o Base.
Porém, estou tentando usar esse código mas não consigo obter sucesso.
FormName=“frm_menu” 'Mude aqui para o Forms de Abertura da Aplicação
é isso?
FormName=“F_Inicial” (é o nome do meu menu inicial)
Testei essa macro aqui, mas verifiquei que ela não funcionou. Já a tinha utilizado a algum tempo atrás, mas como sempre perco meus HDs e não tenho costume de deixar um registro escrito, não lembrava onde a tinha visto. Após verificar que a mesma não funcionou, resolvi pesquisar e encontrei o site do João Mateus (A Ver Se Nos Entendemos (Nós e o computador): Abrir forms ao abrir um documento do Base do OpenOffice) contendo o restante da informação para que a mesma funcione corretamente:
"(…)Preferimos criar esta macro numa biblioteca a um nível superior pois a mesma irá servir, no futuro, para todas as aplicações criadas no Open Office (se quisermos utilizá-la numa outra máquina podemos sempre exportá-la como ocx) mas a mesma pode ser criada no módulo da aplicação (isso foi testado).
Com a macro criada, abrimos o documento do base onde queremos que a mesma seja utilizada e:
Vamos a Ferramentas → Personalizar e escolhemos o separador Eventos
Escolhemos o evento “Abrir Documento” e em “Atribuir” escolhemos a “Macro” que criámos."
Abaixo, a imagem postada na página dele: