[Risolto] macro Basic di apertura form

Creare una macro - Scrivere uno script - Usare le API
Rispondi
ndrini
Messaggi: 93
Iscritto il: lunedì 8 agosto 2011, 23:28

[Risolto] macro Basic di apertura form

Messaggio da ndrini »

Ho copiato una macro (apri_Forms_Parcelle e apri_Forms_Client) che apre un form di base (libreoffice) da un altro form (chiamato menu).

Codice: Seleziona tutto

Sub apri_Forms_Parcelle
ThisDatabaseDocument.FormDocuments.getbyname("Parcelle").open()
End Sub
Mi sapete dire perché non funziona (né dà errore) all'interno del DB?

Anche se a dire il vero ho questo messaggio di errore,
BASIC runtime error.
An exception occurred
Type: com.sun.star.lang.WrappedTargetException
Message:
TargetException:
Type: com.sun.star.sdbc.SQLException
Message: [OOoBase] No connection to the database exists.
Grazie.

Andrea

PS qui la fa tanto facile
viewtopic.php?f=13&t=4912&p=26532#p26532
:knock:
Allegati
fatturazione.macro_test.odb
fatturazione con apertura da tasto dei form
(73.78 KiB) Scaricato 173 volte
Ultima modifica di charlie il martedì 11 marzo 2014, 11:44, modificato 2 volte in totale.
Motivazione: Inserito segno di spunta verde
LibreOffice 5.1.4.2 su Ubuntu 16.04
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: macro di apertura form

Messaggio da unlucky83 »

manca la connessione al db
Avevo una macro da parte, è nell'allegato
Allegati
fatturazione.macro_test.odb
(73.91 KiB) Scaricato 238 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
ndrini
Messaggi: 93
Iscritto il: lunedì 8 agosto 2011, 23:28

Re: macro di apertura form

Messaggio da ndrini »

Aprendolo così al volo, il bottone non dà l'effetto sperato (apertura del form).
Ho visto la tua macro Unlucky83, e mi pare seria :D
Quindi sto cercando di capire che cosa non va ...

Se la apro da
Tools --> Macros --> Organize Macros --> LibreOffice Basic

mi appare una finestra di dialogo

Codice: Seleziona tutto

soffice
fatturazione.macro_test.odb
ok
clicco ok, e si apre il form...

Che sia perché uso libreoffice Version: 4.1.5.3 (e non openoffice 3.3 come dichiaro erroneamente)?
Grazie.

Andrea
LibreOffice 5.1.4.2 su Ubuntu 16.04
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: macro di apertura form

Messaggio da unlucky83 »

Il pulsante non l'ho provato..ho dato per scontato che lanciasse l'esecuzione della macro,ma forse non lo fa...quando torno al pc controllo.
Per quanto riguarda la finestra che si apre,mi é servita solo per controllare il nome del db,può essere commentata la parte del codice con il msgbox,non é funzionale per l'esecyzione della macro
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
ndrini
Messaggi: 93
Iscritto il: lunedì 8 agosto 2011, 23:28

Re: macro di apertura form

Messaggio da ndrini »

unlucky83 ha scritto: Per quanto riguarda la finestra che si apre, mi é servita solo per controllare il nome del db,può essere commentata la parte del codice con il msgbox, non è funzionale per l'esecuzione della macro
:)
Perfetto.
Infatti dà il nome del database corretto.

Intanto, buona notte!

Andrea
LibreOffice 5.1.4.2 su Ubuntu 16.04
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: macro di apertura form

Messaggio da unlucky83 »

Ho controllato..l'evento del pulsante a cui era associata la macro... era sbagliata.
Una volta corretto l'evento, ho notato un errore nella macro, che ora ho corretto.

Codice: Seleziona tutto

Sub apri_Forms_Parcelle
 call cmdOpenForm("fatturazione.macro_test.odb","Parcelle")
End Sub

public sub cmdOpenForm(sNameDB, sNameFm)        ' APRI FORMULARIO
dim sTitle as string
dim oThisCp, oConnDB, oCompWn as object
dim oForm, oFormLM as object
dim oElement as object
dim i as integer
'--------------------------------------------'
oThisCp = ThisComponent
sTitle = oThisCp.Title
if instr(sTitle,sNameDB)>0 then
	if sTitle<>sNameDB then
		oThisCp=oThisCp.Parent
	end if
	if oThisCp.FormDocuments.hasByName(sNameFm) then
		oForm   = oThisCp.FormDocuments.getByName(sNameFm)
		if oThisCP.currentController.isConnected = false then
			oThisCP.currentController.Connect   ' ATTIVA CONN DB SE MANCANTE
		end if                                  '
		oForm.open                             ' APRE FORM RICHIESTA
'--------------------------------------
'         oThisCp = ThisComponent
'         oFormLM = oThisCp.CurrentController.Frame.LayoutManager
'         for i = lbound(oFormLM.elements) to ubound(oFormLM.elements)
'            oFormLM.hideElement(oFormLM.elements(i).resourceurl)
'         next i                                 ' HIDE TOOLBAR SVILUPPO
	endif                                     
endif                                        
end sub
Funziona solo la parte per il form Parcelle. La modifica alla macro dell'altro pulsante e relativo evento li lascio a te ;)
Allegati
fatturazione.macro_test.odb
(73.82 KiB) Scaricato 272 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
ndrini
Messaggi: 93
Iscritto il: lunedì 8 agosto 2011, 23:28

Re: macro di apertura form

Messaggio da ndrini »

Unlucky83... santo subito!!

Vedo che funziona anche sul mio pc.

Grazie!
Ciao.

Andrea

PS per la cronaca, era un problema di azione sull'evento (quindi la povera macro non c'entrava molto...)
LibreOffice 5.1.4.2 su Ubuntu 16.04
Rispondi