[Risolto] Filtro azionato da pulsante

Discussioni sulle caratteristiche di database
Rispondi
r.vanoni
Messaggi: 35
Iscritto il: lunedì 29 novembre 2010, 15:40

[Risolto] Filtro azionato da pulsante

Messaggio da r.vanoni »

Scusate qualcuno conosce la macro per filtrare i dati in una tabella. Ho bisogno di inserire nel formulario dei pulsanti filtro dedicati anzichè utilizzare il filtro automatico presente sulla barra di navigazione formulario. Ho trovato qualche riga di codice sul sito di ooffice ma non riesco a farlo funzionare. Ve lo riporto

Codice: Seleziona tutto

Sub setFilter

' reserve some variables
Dim TopForm As Object
Dim SubForm As Object
Dim SubSubForm As Object

' Fetch the appropiate form
TopForm = ThisComponent.DrawPage.Forms.GetByName("Form1")
SubForm = TopForm.GetByName("Form1_1")
SubSubForm = SubForm.GetByName("Form1_1_1")

' Now we set the filter attribute
SubSubForm.Filter = "p_surname LIKE 'Sch%'"
' and don't forget to reload
SubSubForm.reload()

End Sub
L'ho trovato al seguente indirizzo: http://codesnippets.services.openoffice ... ilter.snip
Grazie per i vostri suggerimenti
Ciao
Ultima modifica di r.vanoni il mercoledì 29 dicembre 2010, 9:05, modificato 2 volte in totale.
Windows 10 - Apache OpenOffice 4.1.8
Avatar utente
marcofoc
Messaggi: 235
Iscritto il: martedì 12 ottobre 2010, 16:48
Località: Arzignano (VI)
Contatta:

Re: Filtro azionato da pulsante

Messaggio da marcofoc »

Io collegherei alla tabella una ricerca con un criterio di filtrazione (in SQL la select finisce con WHERE dato = :dato).
Poi inserirei un bottone, al quale associerei alla sua pressione l'aggiornamento del formulario. Ecco che allora ad ogni pressione Openoffice ti ri-chiederebbe di nuovo il criterio di filtrazione della tabella.
Non esistono buoni maestri senza buoni allievi...
r.vanoni
Messaggi: 35
Iscritto il: lunedì 29 novembre 2010, 15:40

Re: Filtro azionato da pulsante

Messaggio da r.vanoni »

Ho risolto il problema. La macro non funzionava perchè non assegnavo il nome corretto del formulario. Ora con questo codice funziona sia con pulsante su formulario, sia se eseguita da Strumenti>Macro>Esegui macro. Il nome del formulario sul quale il filtro agisce (MainForm) l'ho ricavato guardando il navigatore formulario.

Codice: Seleziona tutto

Sub setFilter_4L  //nome macro
Dim TopForm As Object
Dim SubForm As Object
TopForm = ThisComponent.DrawPage.Forms
SubForm = TopForm.GetByName("MainForm") //nome formulario ricavato dal navigatore formulario 
SubForm.Filter = "classe LIKE '4L%'" //condizione filtro
SubForm.reload()
End Sub
Grazie a marcofoc per l'utile e interessante suggerimento
Ciao
Windows 10 - Apache OpenOffice 4.1.8
Rispondi