[RISOLTO]Apertura formulario in automatico

Discussioni sulle caratteristiche di database
Rispondi
fantacilli
Messaggi: 5
Iscritto il: martedì 29 marzo 2011, 11:48

[RISOLTO]Apertura formulario in automatico

Messaggio da fantacilli »

Come faccio ad impostare che all'apertura del db si apra in automatico un formulario?

Inoltre volevo creare degli utenti alcuni in sola lettura e altri in lettura e scrittura, oltre alla ad un amministratore. Come faccio? ho provato da strumenti > amministrazione degli utenti, ma la selezione è disabilitata..

Ciao
Ultima modifica di fantacilli il sabato 9 aprile 2011, 7:48, modificato 1 volta in totale.
openoffice 3.2
r.vanoni
Messaggi: 35
Iscritto il: lunedì 29 novembre 2010, 15:40

Re: Apertura formulario in automatico

Messaggio da r.vanoni »

Primo metodo
Strumenti > Personalizza > Apri documento assegna Macro
di solito si assegna la macro Autoexec che trovi qui nel forum

Secondo metodo (che uso io)
creare un lanciatore sul desktop che apre il file e avvia la macro. Il lanciatore contiene il seguente comando:
In UBUNTU
oobase /home/docenti2/alterna/Alterna.odb macro:///Alterna.Module1.login1
dove Alterna.odb è il file oobase e login1 è la macro da avviare

In Windows il corrispondente è questo
"C:\Program Files\OpenOffice.org 3\program\soffice.exe" C:\Users\cri\Desktop\Riccardo\dbase\alterna\Alterna.odb macro:///alterna.Module1.login1

Riguardo alla gestione utenti credo ti convenga usare MYSQL come motore dbase perchè ti consente una personalizzazione molto fine degli utenti connessi. Se invece vuoi utilizzare solo oobase con HSQL credo sia necessario creare una macro di login che va ad aprire un menu formulario dedicato a ciascun utente. Questo menu richiamerà a sua volta i formulari nel quale abilitati i permessi e i controlli che desideri.
Naturalmente questa è una possibilità e probabilmente ce ne saranno molte altre.

Ciao
Windows 10 - Apache OpenOffice 4.1.8
fantacilli
Messaggi: 5
Iscritto il: martedì 29 marzo 2011, 11:48

Re: Apertura formulario in automatico

Messaggio da fantacilli »

scusa l'ignoranza, ma dove la trovo la macro autoexec?
openoffice 3.2
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Apertura formulario in automatico

Messaggio da vladko »

AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
fantacilli
Messaggi: 5
Iscritto il: martedì 29 marzo 2011, 11:48

Re: Apertura formulario in automatico

Messaggio da fantacilli »

r.vanoni ha scritto:Primo metodo
Strumenti > Personalizza > Apri documento assegna Macro
di solito si assegna la macro Autoexec che trovi qui nel forum

Secondo metodo (che uso io)
creare un lanciatore sul desktop che apre il file e avvia la macro. Il lanciatore contiene il seguente comando:
In UBUNTU
oobase /home/docenti2/alterna/Alterna.odb macro:///Alterna.Module1.login1
dove Alterna.odb è il file oobase e login1 è la macro da avviare

In Windows il corrispondente è questo
"C:\Program Files\OpenOffice.org 3\program\soffice.exe" C:\Users\cri\Desktop\Riccardo\dbase\alterna\Alterna.odb macro:///alterna.Module1.login1

Riguardo alla gestione utenti credo ti convenga usare MYSQL come motore dbase perchè ti consente una personalizzazione molto fine degli utenti connessi. Se invece vuoi utilizzare solo oobase con HSQL credo sia necessario creare una macro di login che va ad aprire un menu formulario dedicato a ciascun utente. Questo menu richiamerà a sua volta i formulari nel quale abilitati i permessi e i controlli che desideri.
Naturalmente questa è una possibilità e probabilmente ce ne saranno molte altre.

Ciao
Mi puoi postare la macro autoexec?
openoffice 3.2
r.vanoni
Messaggi: 35
Iscritto il: lunedì 29 novembre 2010, 15:40

Re: Apertura formulario in automatico

Messaggio da r.vanoni »

Scusa ma è così fatica leggere il forum? Per stavolta ecco qua un esempio ma approfitto per chiarire che la macro autoexec è una semplice macro che devi creare tu e che potrebbe chiamarsi anche pippo o topolino. Rimane il fatto che sarà eseguita all'apertura del file .odb perché impostato da te (vedi sopra).

Codice: Seleziona tutto

	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="MENU"  REM CHANGE TO YOUR FORM NAME 

   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() 
REM nasconde menu oooffice
      oLMgr = FormDoc.CurrentController.Frame.LayoutManager
      oLMgr.setVisible(False) 'nasconde strumenti
      oLMgr.hideElement("private:resource/menubar/menubar") ' nasconde il menu
   End If 
HandleError: 
   If Err<>0 Then 
      Exit Sub 
   End If 
REM nasconde finestra iniziale OOO  
  'oWin = starDesktop.getCurrentFrame.getContainerWindow()
 ' oWin.visible = false
End Sub 
Scrivi RISOLTO se ok
Windows 10 - Apache OpenOffice 4.1.8
fantacilli
Messaggi: 5
Iscritto il: martedì 29 marzo 2011, 11:48

Re: Apertura formulario in automatico

Messaggio da fantacilli »

r.vanoni ha scritto:Scusa ma è così fatica leggere il forum? Per stavolta ecco qua un esempio ma approfitto per chiarire che la macro autoexec è una semplice macro che devi creare tu e che potrebbe chiamarsi anche pippo o topolino. Rimane il fatto che sarà eseguita all'apertura del file .odb perché impostato da te (vedi sopra).

Mitico...ho risolto!
openoffice 3.2
marcelotero
Messaggi: 28
Iscritto il: venerdì 8 aprile 2011, 14:00

Re: [RISOLTO]Apertura formulario in automatico

Messaggio da marcelotero »

Ho utilizzato la macro Autoexec per aprire il menu del mio database.Funziona nel senso che all'apertura del documento mi apre il menu
PERO' se poi premo uno dei pulsanti per raggiungere un altro form mi restituisce questo errore
Immagine

Faccio notare che se apro il form MENU manualmente,i pulsanti dei collegamenti ad altri form funzionano correttamente
Cosa può essere?
OpenOffice.Org 3.2.1 su Windows XP
marcelotero
Messaggi: 28
Iscritto il: venerdì 8 aprile 2011, 14:00

Re: [RISOLTO]Apertura formulario in automatico

Messaggio da marcelotero »

nessun suggerimento sul motivo per cui mi da questo errore?
E' strano perchè come ho detto aprendolo manualmente i collegamenti funzionano
OpenOffice.Org 3.2.1 su Windows XP
codicem
Messaggi: 57
Iscritto il: venerdì 30 aprile 2010, 14:30

Re: [RISOLTO]Apertura formulario in automatico

Messaggio da codicem »

ma il tuo database è registrato?
OpenOffice 3.3 su Winxp / Libreoffice 3.3.2 su Mandriva 2010.2
fulk
Messaggi: 46
Iscritto il: martedì 19 aprile 2011, 12:11

Re: [RISOLTO]Apertura formulario in automatico

Messaggio da fulk »

Dato che il mio attuale problema in qualche modo è legato a questo inizio a postarlo qui...

Quello che vorrei ottenere è l'apertura di un formulario INGRANDITO in automatico.
Attualmente nella mia macro utilizzo questa funzione:

Codice: Seleziona tutto

sub subDisplayForm(sDatabaseName as string, sFormName as string)
	dim mArgs(1) as new com.sun.star.beans.PropertyValue
	oDatabase = fnGetOpenDatabase(sDatabaseName)
	oConnection = oDatabase.DataSource.getConnection("","")
	mArgs(0).name = "OpenMode"
	mArgs(0).value = "open" '"openDesign" ' '"openForMail"
	mArgs(1).name = "ActiveConnection"
	mArgs(1).value = oConnection
	oForm = oDatabase.getFormDocuments.getByName(sFormName)
	oDatabase.getFormDocuments.loadComponentFromURL(sFormName, "_blank", 0, mArgs())
end sub
che fa il suo sporco lavoro tuttavia il formulario non viene aperto con la finestra ingradita..
Sapreste dirmi quale sia il parametro da impostare per ottenere l'effetto desiderato ?
OpenOffice 3.3.0 su Windows 7 Professional 64bit
Avatar utente
giorgiofoga
Messaggi: 116
Iscritto il: venerdì 28 gennaio 2011, 11:39

Re: [RISOLTO]Apertura formulario in automatico

Messaggio da giorgiofoga »

With oForm.getCurrentController().getFrame().getContainerWindow()
.setPosSize( 50, 50 , , , com.sun.star.awt.PosSize.POS) 'REM posizione dell'angolo in alto a sinistra
.setPosSize( , , 1400, 1046 , com.sun.star.awt.PosSize.SIZE ) 'REM dimensione in pixel della finestra (att.ne .... se vai fuori schermo non vedi più _[]X

End With

righe che mancavano anche nella mia macro fino a una settimana fa.....
libreoffice 3.3.1 su ubuntu 10.10 64bit
openoffice 3.2.1 su ubuntu 10.10 32bit
fulk
Messaggi: 46
Iscritto il: martedì 19 aprile 2011, 12:11

Re: [RISOLTO]Apertura formulario in automatico

Messaggio da fulk »

Ciao giorgiofoga,
intanto grazie per la risposta !

In linea teorica il codice che mi hai postato potrebbe andare bene (anche se sarebbe meglio il codice che corrisponde proprio alla pressione del tasto "ingrandisci" perchè non conosco nè risoluzione nè dimensione del monitor di chi utilizzerà il database e tra l'altro verrà sicuramente utilizzato con monitor diversi).

In ogni caso non riesco a farlo funzionare, mi viene restituito questo errore:

Errore di runtime basic.
Proprietà o metodo non trovati: getCurrentController.


Hai idea di cosa possa essere ?

PS
il form è dichiarato così:
Dim oForm as Object
OpenOffice 3.3.0 su Windows 7 Professional 64bit
fulk
Messaggi: 46
Iscritto il: martedì 19 aprile 2011, 12:11

Re: [RISOLTO]Apertura formulario in automatico

Messaggio da fulk »

Ho rivisto un po' il codice prendendo spunto da qui:
http://de.openoffice.info/viewtopic.php?f=18&t=16028

Codice: Seleziona tutto

Sub subDisplayForm2(sDatabaseName as string, sFormName as string)
	Dim pProp(1) As New com.sun.star.beans.PropertyValue
	Dim dbContext As Object
	dbContext = createUnoService("com.sun.star.sdb.DatabaseContext")
	oDataSource = dbContext.GetByName(sDatabaseName)
	oForms = oDataSource.DatabaseDocument.FormDocuments
	oAConnection = oDataSource.getConnection("","")

	'impostazione properties
	pProp(0).Name = "ActiveConnection"
	pProp(0).Value = oAConnection
	pProp(1).Name = "OpenMode"
	pProp(1).Value = "open" ' OR: openDesign

	'apertura form
	oFormulario = oForms.loadComponentFromURL(sFormName,"_blank",0,pProp())

	'impostazione dimensioni form
	With oFormulario.getCurrentController().getFrame().getContainerWindow()
		.setPosSize( 50, 50 , , , com.sun.star.awt.PosSize.POS) 'posizione dell'angolo in alto a sinistra
		.setPosSize( .PosSize.x, .PosSize.y , 800, 600 , com.sun.star.awt.PosSize.SIZE ) 'dimensione in pixel della finestra
	End With

End Sub
Così facendo funziona correttamente.
Rispetto a prima cambia la modalità di apertura del database e i "property values".
(ATTENZIONE: il parametro sDatabaseName deve essere passato alla funzione senza l'estensione odb).

Rimane il quesito di poter aprire il form massimizzando la sua dimensione rispetto alla risoluzione del monitor in uso...ci sto sbattendo la testa ma non sono ancora arrivato a nulla.. :crazy:

edit (22/04/2011):
nel codice mancava la riga che provvede al posizionamento del punto in alto a sinistra del form, ho provveduto ad aggiungerla e commentarla
OpenOffice 3.3.0 su Windows 7 Professional 64bit
Avatar utente
giorgiofoga
Messaggi: 116
Iscritto il: venerdì 28 gennaio 2011, 11:39

Re: [RISOLTO]Apertura formulario in automatico

Messaggio da giorgiofoga »

bhe direi tante cose ::: ma ne dico una sola invece...

una volta ho visto usare la prprietà IsMaximise ...... ma chiissà dove non lo ricordo più infatti non l'ho mai usata.
libreoffice 3.3.1 su ubuntu 10.10 64bit
openoffice 3.2.1 su ubuntu 10.10 32bit
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: [RISOLTO]Apertura formulario in automatico

Messaggio da vladko »

ora scrivo ma non posso provare anche....
anche in altro messaggio scritto che trucco è tutto schermo che su macro si scrive

Codice: Seleziona tutto

uno:FullScreen
già uso con linux e funziona perfetto ma

qui trovato qualcuno che si lamenta
http://user.services.openoffice.org/es/ ... een#p18248

e qui altra soluzione
http://user.services.openoffice.org/es/ ... een#p18560

spero che vada bene anche per te o che metti tua soluzione grazie
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
fulk
Messaggi: 46
Iscritto il: martedì 19 aprile 2011, 12:11

Re: Apertura formulario in automatico

Messaggio da fulk »

Ciao vladko !

Ho provato le due possibilità indicate nel forum spagnolo.
Purtroppo però non riesco a far funzionare neanche queste ..

In corrispondenza di questa riga di codice:
oFrame=Event.Source.Parent.Parent.CurrentController.Frame

Mi viene visualizzato il seguente errore runtime:
Variabile dell'oggetto non impostata.

Possibile che sia così complicato aprire un form massimizzato ?!
:crazy:
OpenOffice 3.3.0 su Windows 7 Professional 64bit
marcelotero
Messaggi: 28
Iscritto il: venerdì 8 aprile 2011, 14:00

Re: [RISOLTO]Apertura formulario in automatico

Messaggio da marcelotero »

codicem ha scritto:ma il tuo database è registrato?
scusa il ritardo,non ho avuto accesso a Internet per un pò di giorni
si il databaase è registrato
OpenOffice.Org 3.2.1 su Windows XP
codicem
Messaggi: 57
Iscritto il: venerdì 30 aprile 2010, 14:30

Re: [RISOLTO]Apertura formulario in automatico

Messaggio da codicem »

marcelotero ha scritto: scusa il ritardo,non ho avuto accesso a Internet per un pò di giorni
si il databaase è registrato
Prova a usare questa macro per l'apertura dei forms:

Codice: Seleziona tutto

Sub ApriForm
   Dim InteractionHandler As Object
   InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
   ThisDatabaseDocument.CurrentController.connect("","")
   ThisDatabaseDocument.FormDocuments.getByName ( "NometuoForm" ).open
End Sub
OpenOffice 3.3 su Winxp / Libreoffice 3.3.2 su Mandriva 2010.2
Avatar utente
giorgiofoga
Messaggi: 116
Iscritto il: venerdì 28 gennaio 2011, 11:39

Re: [RISOLTO]Apertura formulario in automatico

Messaggio da giorgiofoga »

nessuno ha poi mai usato la proprietà .... IsMaximized ...?? evidentemente .... la dimensione dello schermo in pixel va bene uguale ..... peccato mi sarebbe piacuto saperne qualcosa in più.
libreoffice 3.3.1 su ubuntu 10.10 64bit
openoffice 3.2.1 su ubuntu 10.10 32bit
fulk
Messaggi: 46
Iscritto il: martedì 19 aprile 2011, 12:11

Re: [RISOLTO]Apertura formulario in automatico

Messaggio da fulk »

giorgiofoga ha scritto:nessuno ha poi mai usato la proprietà .... IsMaximized ...?? evidentemente .... la dimensione dello schermo in pixel va bene uguale ..... peccato mi sarebbe piacuto saperne qualcosa in più.
Ciao giorgiofoga,
no no la dimensione dello schermo in pixel a me non va affatto bene perchè ho a che fare con monitor e risoluzioni diverse...

La proprietà di cui parli (IsMaximized) non ho ben capito come usarla..ho fatto qualche prova senza ottenere un esito positivo.
Se riesci a darmi qualche dritta in più faccio volentieri altre prove
OpenOffice 3.3.0 su Windows 7 Professional 64bit
giannidalmi
Messaggi: 62
Iscritto il: lunedì 21 febbraio 2011, 7:00

Re: [RISOLTO]Apertura formulario in automatico

Messaggio da giannidalmi »

in altri linguaggi (C) ci sono funzioni che rilevano la risoluzione dello schermo, poi con le proporzioni (quelle che abbiamo studiato alla scuola media) si scrive una funzione che modula opportunamente lunghezze e larghezze ;)
ma in openoffice non ho trovato nulla :(
qualcuno ne sa qualcosa?
ovviamente poi tutto va gestito da macro/programma
open office 3.2.1
window 7
Rispondi