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
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
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.
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.
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