[Risolto] Macro unica per agg. ,chiudere e aprire Formulari

Discussioni sulle caratteristiche di database
Rispondi
congiu.andr
Messaggi: 22
Iscritto il: venerdì 20 dicembre 2013, 17:47

[Risolto] Macro unica per agg. ,chiudere e aprire Formulari

Messaggio 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
Ultima modifica di charlie il giovedì 23 gennaio 2014, 15:33, modificato 2 volte in totale.
Motivazione: Aggiunto segno di spunta verde
Open Office 3.3
Linux Mint 15
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Macro unica per aggiornare, chiudere e aprire Formulari

Messaggio 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
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
congiu.andr
Messaggi: 22
Iscritto il: venerdì 20 dicembre 2013, 17:47

Re: Macro unica per aggiornare, chiudere e aprire Formulari

Messaggio 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
Open Office 3.3
Linux Mint 15
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Macro unica per aggiornare, chiudere e aprire Formulari

Messaggio da unlucky83 »

esiste il metodo refresh() da applicare agli elementi del formulario Menu
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
congiu.andr
Messaggi: 22
Iscritto il: venerdì 20 dicembre 2013, 17:47

Re: Macro unica per aggiornare, chiudere e aprire Formulari

Messaggio da congiu.andr »

Lo so ma, io ho bisogno di inserirlo nella macro
Open Office 3.3
Linux Mint 15
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Macro unica per aggiornare, chiudere e aprire Formulari

Messaggio da unlucky83 »

se alleghi un facsimile, con le tabelle vuote e almeno i due formulari, sarebbe più comodo. è possibile?
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
congiu.andr
Messaggi: 22
Iscritto il: venerdì 20 dicembre 2013, 17:47

Re: Macro unica per aggiornare, chiudere e aprire Formulari

Messaggio 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
Allegati
Prelievi.odb
(63.27 KiB) Scaricato 249 volte
Open Office 3.3
Linux Mint 15
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Macro unica per aggiornare, chiudere e aprire Formulari

Messaggio da unlucky83 »

Questo fa ciò che volevi?
Allegati
Prelievi.odb
(63.4 KiB) Scaricato 342 volte
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
congiu.andr
Messaggi: 22
Iscritto il: venerdì 20 dicembre 2013, 17:47

Re: Macro unica per aggiornare, chiudere e aprire Formulari

Messaggio 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
Allegati
Errore Base
Errore Base
Open Office 3.3
Linux Mint 15
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8945
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Macro unica per aggiornare, chiudere e aprire Formulari

Messaggio da charlie »

Ciao, sembrerebbe che non trovi la sub salvarecord. Sei sicuro di averla inserita integralmente?
charlie
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Macro unica per aggiornare, chiudere e aprire Formulari

Messaggio 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
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
congiu.andr
Messaggi: 22
Iscritto il: venerdì 20 dicembre 2013, 17:47

Re: Macro unica per aggiornare, chiudere e aprire Formulari

Messaggio 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
Open Office 3.3
Linux Mint 15
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Macro unica per aggiornare, chiudere e aprire Formulari

Messaggio da unlucky83 »

I meriti lasciamoli agli sviluppatori di software open-source :D
Mi basta sapere di aver risolto il tuo problema
Ti auguro buon lavoro per il completamento del tuo Db
Ciao :)
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
congiu.andr
Messaggi: 22
Iscritto il: venerdì 20 dicembre 2013, 17:47

Re: Macro unica per aggiornare, chiudere e aprire Formulari

Messaggio 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
Open Office 3.3
Linux Mint 15
Rispondi