Pagina 1 di 1
[Risolto] Macro unica per agg. ,chiudere e aprire Formulari
Inviato: venerdì 10 gennaio 2014, 12:51
da congiu.andr
Buon giorno,
Ho un Formulario Residenti dimessi che contiene un pulsante Chiudi, il quale è associato a una macro che chiude il formulario corrente (Formulario residenti dimessi) e apre il Formulario MENU. Vorrei che venisse modificata in modo tale che prima della chiusura faccia l'aggiornamento del formulario corrente (Formulario residenti dimessi) e poi l'apertura del MENU.
Questa idea mi è venuta per rendere visibili gli aggiornamenti fatti nel formulario MENU senza dover aggiornare manualmente il formulario dimessi. Quindi:
1. Aggiorna Formulario residenti dimessi
2. Chiude Formulario residenti dimessi
3. Apre il formulario MENU
Di seguito la macro da modificare
Codice: Seleziona tutto
REM Apre il Formulario MENU - Macro associata al pulsante Chiudi nel formulario residenti dimessi
Sub ApriMENU
Dim InteractionHandler As Object
InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
ThisDatabaseDocument.CurrentController.connect("","")
ThisDatabaseDocument.FormDocuments.getByName ( "MENU" ).open ' ( "Nome del formulario da aprire" )
ThisComponent.CurrentController.Frame.close(True) ' Chiude il formulario corrente
End Sub
Saluti e grazie
andrea
Re: Macro unica per aggiornare, chiudere e aprire Formulari
Inviato: domenica 19 gennaio 2014, 4:15
da unlucky83
Codice: Seleziona tutto
REM Apre il Formulario MENU - Macro associata al pulsante Chiudi nel formulario residenti dimessi
Sub ApriMENU
Dim InteractionHandler As Object
InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
ThisDatabaseDocument.CurrentController.connect("","")
ThisComponent.CurrentController.Frame.close(True) ' Chiude il formulario corrente
ThisDatabaseDocument.FormDocuments.getByName ( "MENU" ).open ' ( "Nome del formulario da aprire" )
End Sub
Scambiare le ultime duue righe dovrebbe essere sufficiente
Re: Macro unica per aggiornare, chiudere e aprire Formulari
Inviato: domenica 19 gennaio 2014, 11:34
da congiu.andr
Ciao, grazie per la risposta,
ho provato a scambiare le ultime due rige ma, non fà l'aggiornamento, credo che bisogna inserire un'istruzione specifica per l'aggiornamento del formulario.
Grazie ancora
Buona domenica
andrea
Re: Macro unica per aggiornare, chiudere e aprire Formulari
Inviato: domenica 19 gennaio 2014, 14:06
da unlucky83
esiste il metodo refresh() da applicare agli elementi del formulario Menu
Re: Macro unica per aggiornare, chiudere e aprire Formulari
Inviato: domenica 19 gennaio 2014, 14:42
da congiu.andr
Lo so ma, io ho bisogno di inserirlo nella macro
Re: Macro unica per aggiornare, chiudere e aprire Formulari
Inviato: domenica 19 gennaio 2014, 14:52
da unlucky83
se alleghi un facsimile, con le tabelle vuote e almeno i due formulari, sarebbe più comodo. è possibile?
Re: Macro unica per aggiornare, chiudere e aprire Formulari
Inviato: lunedì 20 gennaio 2014, 11:49
da congiu.andr
Ciao
ho allegato il database spogliandolo di tutto ciò che non serve.
Al suo avvio si apre il formulario Menu. In questo formulario è presente la tabella Residenti e supponiamo di mettere la spunta alla voce dimesso di un nominativo quindi, premere direttamente il punsante anagrafica dimessi. In questo momento nel nuovo formulario aperto la tabella sarà vuota ma, inserendo un'istruzione di aggiornamento comparirà il nominativo del residente dimesso.
Sono coscio che se dopo aver messo la spunta allavoce dimesso mi spostassi su un'altro record tutto andrebbe come dovrebbe, ma io devo prevedere l'utilizzo del db da utenti che a malapena conoscono l'esistenza del computer ed è anche per questo che vorrei evitare un pulsante con la funzione aggiorna (cosa che faccio per i miei db), quindi devo automatizzare chiusure, aperture e aggiornamenti del formulari.
Ciao
e grazie
Re: Macro unica per aggiornare, chiudere e aprire Formulari
Inviato: lunedì 20 gennaio 2014, 20:17
da unlucky83
Questo fa ciò che volevi?
Re: Macro unica per aggiornare, chiudere e aprire Formulari
Inviato: martedì 21 gennaio 2014, 10:25
da congiu.andr
Ciao,
nel db da te allegato funziona benissimo e fa quello che volevo, ma quando ho riportato l'istruzione nella mia macro, mi da errore. Ho allegato l'immagine con l'errore.
grazie per l'aiuto che mi dai.
saluti
andrea
Re: Macro unica per aggiornare, chiudere e aprire Formulari
Inviato: martedì 21 gennaio 2014, 11:01
da charlie
Ciao, sembrerebbe che non trovi la sub salvarecord. Sei sicuro di averla inserita integralmente?
Re: Macro unica per aggiornare, chiudere e aprire Formulari
Inviato: martedì 21 gennaio 2014, 14:03
da unlucky83
É come dice Charlie. Nel mio db ho aggiunto una mia macro, ottenuta per giuntacon il registratore di macro, che si chiama salvarecord. Devi copiare anche quella e incollarla nel modulo delle macro del tuo db
Re: Macro unica per aggiornare, chiudere e aprire Formulari
Inviato: martedì 21 gennaio 2014, 20:26
da congiu.andr
Ciao, ho commesso io un errore nel copia e incolla, mi mancava l'ultima "d" di salvarecord.
Funziona alla grande grazie 1000.
Per non prendermi meriti non miei, posso nominarti in una riga REM nel db?
Domani con calma metterò [Risolto] e le macro.
Per ora grazie ancora
buona serata
Re: Macro unica per aggiornare, chiudere e aprire Formulari
Inviato: martedì 21 gennaio 2014, 22:12
da unlucky83
I meriti lasciamoli agli sviluppatori di software open-source
Mi basta sapere di aver risolto il tuo problema
Ti auguro buon lavoro per il completamento del tuo Db
Ciao
Re: Macro unica per aggiornare, chiudere e aprire Formulari
Inviato: mercoledì 22 gennaio 2014, 10:30
da congiu.andr
Ciao a tutti, unlucky83 mi ha risolto il problema, in un suo precedente messaggio ha allegato un database con la funzione attiva, di seguito il riferimento a tale messaggio:
unlucky83 ha scritto:Questo fa ciò che volevi?
Per comodità allego qui sotto le macro
Codice: Seleziona tutto
REM Apre il Formulario MENU
Sub ApriMENU
Dim InteractionHandler As Object
InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
ThisDatabaseDocument.CurrentController.connect("","")
call salvarecord 'chiama la Sub salvarecord per l'aggiornamento prima della chiusura del formulario
ThisComponent.CurrentController.Frame.close(True) ' chiude il formulario dove si trova il pulsante di comando
ThisDatabaseDocument.FormDocuments.getByName ( "MENU" ).open ' ( "Nome del formulario da aprire" )
End Sub
REM Apre il Formulario Residenti dimessi
Sub ApriDimessi
Dim InteractionHandler As Object
InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
ThisDatabaseDocument.CurrentController.connect("","")
call salvarecord 'chiama la Sub salvarecord per l'aggiornamento prima della chiusura del formulario
ThisComponent.CurrentController.Frame.close(True) ' Chiude il formulario dove si trova il pulsante (Formulario MENU) se
'non dovesse servire perchè si vuole lasciare aperto il Formulario MENU è sufficiente cancellare la stringa
ThisDatabaseDocument.FormDocuments.getByName ( "Formulario residenti dimessi" ).open ' ( "Nome del formulario da aprire" )
End Sub
REM MACRO PER AGGIORNARE I RECORD PRIMA DI CHIUDERE UN FORMULARIO
REM QUESTA MACRO É CHIAMATA DALLE MACRO EVENTI LA SEGUENTE ISTRUZIONE (call salvarecord)
sub Salvarecord
rem define variables
dim document,doc as object
dim dispatcher as object
'________________________________________________
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
'________________________________________________
dispatcher.executeDispatch(document, ".uno:RecSave", "", 0, Array())
end sub
Grazie ancora
Saluti
andrea