[Risolto] Macro già pronte per base

Creare una macro - Scrivere uno script - Usare le API
Rispondi
Avatar utente
steaz
Messaggi: 88
Iscritto il: lunedì 19 marzo 2012, 8:41

[Risolto] Macro già pronte per base

Messaggio da steaz »

Ciao ragazzi,
chiedo se per cortesia, qualcuno mi può dare indicazioni, perchè sto cercando una macro per:
aprire un formulario filtrato in base all'ID (record) selezionato in un altro formulario, per es:
sono in un formulario in cui sto scorrendo l'elenco tabella delle fatture emesse, clicco a fianco un bottone e relativamente al record corrente mi si apre la scheda (formulario) completa.
Grazie :D
Ultima modifica di steaz il mercoledì 22 aprile 2015, 6:38, modificato 1 volta in totale.
LibreOffice 6.1.6.3 - Windows 10
Avatar utente
Mizio1961
Volontario
Volontario
Messaggi: 841
Iscritto il: mercoledì 5 ottobre 2011, 22:55
Località: Roma

Re: Macro già pronte per base

Messaggio da Mizio1961 »

Ciao
La macro che segue dovrebbe fare al caso tuo, ovviamente va adattata

Codice: Seleziona tutto

private sub F_CnTe_Persone(oEvent)               ' ByMizio - F_CntTes: PERSONE
   dim sNameDB, sNameFm, NBFATT as string
   dim oForm as object
   '---------------------------------------------'
   sNameFm = "F_AnaPer"                         ' MASCHERA DA APRIRE (Il nome del tuo formulario contenente la singola fattura)
   sNameDB = thisComponent.title                 ' NOME FILE BASE SU CUI SI OPERA
   sNameDB = MID$(sNameDB,1,instr(sNameDB, ":")-1)
   NBFATT = oEvent.Source.Model.Parent.getByName("NBFATT ").text ' ACQUISISCI IL TUO NUMERO DI FATTURA (NBFATT E' FITTIZIO, DEVI METTERE IL NOME DEL TUO CAMPO TABELLARE)
   oForm   = FormOpenDB(sNameDB, sNameFm)        ' APRI FORMULARIO IN DB
   oForm.filter = "T_ANAPER.AZIENDA = '" & NBFATT & "'"    ' FILTRO PER NUMERO FATTURA DA PERSONALIZZARE CON TUO NOME_TABELLA.NOMECAMPO = NUMFATTURA
   oForm.reload                                  ' 
end sub                                          '
Prova ;-)
OpenOffice Windows - Libre su Ubuntu Desktop e Notebook WiFi
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto. ;-)
Avatar utente
steaz
Messaggi: 88
Iscritto il: lunedì 19 marzo 2012, 8:41

Re: Macro già pronte per base

Messaggio da steaz »

Grazie Mizio, provo subito
LibreOffice 6.1.6.3 - Windows 10
Avatar utente
steaz
Messaggi: 88
Iscritto il: lunedì 19 marzo 2012, 8:41

Re: Macro già pronte per base

Messaggio da steaz »

Sto sbagliando qualcosa

Codice: Seleziona tutto

private sub apriformcorrisp(oEvent)               ' ByMizio - F_CntTes: PERSONE
   dim sNameDB, sNameFm, NBFATT as string
   dim oForm as object
   '---------------------------------------------'
   sNameFm = "Pannello eventi"                         ' maschera che si deve aprire
   sNameDB = gesmenu                ' file odb su cui sto lavorando
   sNameDB = MID$(sNameDB,1,instr(sNameDB, ":")-1)
   NBFATT = oEvent.Source.Model.Parent.getByName("tabella").text ' QUI NON HO CAPITO COSA METTERCI e ci ho messo il nome della tabella
   oForm   = FormOpenDB(sNameDB, sNameFm)        ' APRI FORMULARIO IN DB
   oForm.filter = "id_nominativo = '" & NBFATT & "'"    ' nome del campo di riferimento per individuare la 'Fattura' da vedere
   oForm.reload                                  ' 
end sub 
restituisce il seguente errore:
Errore di runtime basic
Proprietà o metono non trovati.text
LibreOffice 6.1.6.3 - Windows 10
Avatar utente
steaz
Messaggi: 88
Iscritto il: lunedì 19 marzo 2012, 8:41

Re: Macro già pronte per base

Messaggio da steaz »

ho risolto in questo modo:

prima faccio una macro per la selezione in base all' ID

Codice: Seleziona tutto

Option Explicit

Global id_nominativo As Integer

Sub FormularioEvento(Event As Object)
	Dim oForm As Object
	oForm = Event.Source.Model.Parent
	If oForm.IsNew Or oForm.IsAfterLast Then Exit Sub
	id_nominativo = oForm.Columns.GetByName("id_nominativo").GetInt
	With ThisDatabaseDocument.FormDocuments.GetByName("Pannello eventi")
		.Close
		.Open
	End With
End Sub
Poi all'apertura del formulario con dentro il dettaglio che cerco, imposto questa macro che filtra in base all'ID che avevo selezionato e funziona bene.

Codice: Seleziona tutto

Sub FiltraEvento(Event As Object)
	Dim oForm As Object
	oForm = Event.Source
	oForm.ApplyFilter=True
	oForm.Filter="""id_nominativo""=" & id_nominativo
	oForm.Reload
End Sub
LibreOffice 6.1.6.3 - Windows 10
Avatar utente
Mizio1961
Volontario
Volontario
Messaggi: 841
Iscritto il: mercoledì 5 ottobre 2011, 22:55
Località: Roma

Re: Macro già pronte per base

Messaggio da Mizio1961 »

;-)
Comunque sNameDB = "gesmenu" (Mancavano le doppie virgolette)
Ciao
OpenOffice Windows - Libre su Ubuntu Desktop e Notebook WiFi
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto. ;-)
Avatar utente
steaz
Messaggi: 88
Iscritto il: lunedì 19 marzo 2012, 8:41

Re: Macro già pronte per base

Messaggio da steaz »

Auch!!! non ci avevo fatto caso!
Grazie, provo la macro.
LibreOffice 6.1.6.3 - Windows 10
Rispondi