Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

stessa macro riferita a piu fogli di calc

47 views
Skip to first unread message

grotta continua

unread,
Mar 1, 2012, 6:44:48 AM3/1/12
to
Ciao
so che sono contorno e vi pregherei di scusare se possibile

ho un documento calc che contiene tre fogli

ogni foglio ha un form con una tabella collegata a una query in un db
e dei pulsanti di scelta per fare 2 filtri del tipo "casella spuntata,
non spuntata, tutti"

la tabella su cui faccio la query contiene due campi boolean
(Evaso,Extra) che uso per fare i due filtri

ho una macro che cliccando sui pulsanti di scelta mi modifica una
query nel db con i valori "True, False, tutti"

ora la macro è riferita al foglio 13

"oDoc = ThisComponent
oFormC= oDoc.sheets(13)....."

vorrei ripetere lo stesso filtro anche nei fogli 14 e 15 dove ho altre
tabelle simili senza riscrivere tutte le macro
ma naturalmente non so come fare.
qualcuno mi da una dritta per cortesia?

qui di seguito le macro


Option Explicit


Sub Pulsante (Evento)


Dim oPulsanteN 'nombre
Dim oQuery As Object
Dim oDoc, oForm, oFormC,oFormM,oForme As Object
Dim sSQL As String
Dim dbContexte,MaSource As Object
Dim Ricerche, Ricerca, dbDoc, maConnexion as Object
DIM FraseSQ1 as string
dbContexte= CreateUnoService("com.sun.star.sdb.DatabaseContext")
maSource = dbContexte.getByName("Gest-Cantieri")

Ricerche=maSource.QueryDefinitions

oDoc = ThisComponent
oFormC= oDoc.sheets(13).DrawPage.Forms.Cantieri 'FormCantieri
'oFormCL= oFormC.QCantCliRif
oFormR= oFormC.Riferimenti 'FormRiferimenti
oForm = oFormR.MATERIALI 'FormQTotaliRif
'oForm = Evento.Source.Model.Parent

oPulsanteN = Evento.Source.getModel.Tag() 'Nome di informazione
addizionale in proprietà
'formulario attivo
oForm = Evento.Source.Model.Parent
Select Case oPulsanteN
Case "Evaso"
'Crea la Query SQL
sSQL = "SELECT * FROM TMat WHERE Evaso ="&" "& 1
'La Query del formulario
oQuery = Ricerche.getByName ("9-QTMat" )
'Modifica della Query
oQuery.Command = sSQL
' print "originale: "; FraseSQl
'Disattivo la casella de Activado para que no se pueda modificar y
de error
oForm.getByName("Evaso").Enabled = False
'Reactivamos el formulario
oForm.Reload()
Exit Sub
Case "NEvaso"
sSQL = "SELECT * FROM TMat WHERE Evaso ="&" "& 0
oQuery = Ricerche.getByName ("9-QTMat" )
oQuery.Command = sSQL
oForm.getByName("Evaso").Enabled = False
oForm.Reload()
Exit Sub
Case "Tutti"
sSQL = "SELECT * FROM TMat"
oQuery = Ricerche.getByName ("9-QTMat" )
oQuery.Command = sSQL
oForm.getByName("Evaso").Enabled = True
oForm.Reload()
Exit Sub
End Select

End Sub

Sub ReiniciarQuery( Evento )
Dim oQuery As Object
Dim sSQL As String

'Reiniciamos la Query para la proxima apertura
sSQL = "SELECT * FROM TMat"
oQuery = ThisDatabaseDocument.DataSource.QueryDefinitions.getByName
("Query" )
oQuery.Command = sSQL

End Sub

' ____________________________________________

Option Explicit


Sub Pulsante2 (Evento)


Dim oPulsanteN 'nombre
Dim oQuery As Object
Dim oDoc, oForm, oFormC,oFormM,oForme As Object
Dim sSQL As String
Dim dbContexte,MaSource As Object
Dim Ricerche, Ricerca, dbDoc, maConnexion as Object
DIM FraseSQ1 as string
dbContexte= CreateUnoService("com.sun.star.sdb.DatabaseContext")
maSource = dbContexte.getByName("Gest-Cantieri")

Ricerche=maSource.QueryDefinitions

oDoc = ThisComponent
oFormC= oDoc.sheets(13).DrawPage.Forms.Cantieri 'FormCantieri
'oFormCL= oFormC.QCantCliRif
oFormR= oFormC.Riferimenti 'FormRiferimenti
oForm = oFormR.MATERIALI 'FormQTotaliRif
'oForm = Evento.Source.Model.Parent

oPulsanteN = Evento.Source.getModel.Tag() 'Nome di informazione
addizionale in proprietà
'formulario attivo
oForm = Evento.Source.Model.Parent
Select Case oPulsanteN
Case "Extra"
'Crea la Query SQL
sSQL = "SELECT * FROM TMat WHERE Extra ="&" "& 1
'La Query del formulario
oQuery = Ricerche.getByName ("9-QTMat" )
'Modifica della Query
oQuery.Command = sSQL
' print "originale: "; FraseSQl
'Disattivo la casella de Activado para que no se pueda modificar y
de error
oForm.getByName("Extra").Enabled = False
'Reactivamos el formulario
oForm.Reload()
Exit Sub
Case "NExtra"
sSQL = "SELECT * FROM TMat WHERE Extra ="&" "& 0
oQuery = Ricerche.getByName ("9-QTMat" )
oQuery.Command = sSQL
oForm.getByName("Extra").Enabled = False
oForm.Reload()
Exit Sub
Case "Tutti extra"
sSQL = "SELECT * FROM TMat"
oQuery = Ricerche.getByName ("9-QTMat" )
oQuery.Command = sSQL
oForm.getByName("Extra").Enabled = True
oForm.Reload()
Exit Sub
End Select

End Sub

Sub ReiniciarQuery1( Evento )
Dim oQuery As Object
Dim sSQL As String

'Reiniciamos la Query para la proxima apertura
sSQL = "SELECT * FROM TMat"
oQuery = ThisDatabaseDocument.DataSource.QueryDefinitions.getByName
("Query" )
oQuery.Command = sSQL

End Sub

martello

unread,
Mar 1, 2012, 12:56:26 PM3/1/12
to

> "oDoc = ThisComponent
> oFormC= oDoc.sheets(13)....."
>
> vorrei ripetere lo stesso filtro anche nei fogli 14 e 15 dove ho altre
> tabelle simili senza riscrivere tutte le macro
> ma naturalmente non so come fare.

Ma che dire non va bene:

oFormC= oDoc.sheets(14)

e

oFormC= oDoc.sheets(15)


ecc. ecc.

In alternativa puoi cercare di capire quale č il foglio corrente.
E' questa la domanda?

grotta continua

unread,
Mar 5, 2012, 4:01:58 AM3/5/12
to
On 1 Mar, 18:56, martello <"martelozzo1(martello)"@tin.it> wrote:
> > "oDoc = ThisComponent
> > oFormC= oDoc.sheets(13)....."
>
> > vorrei ripetere lo stesso filtro anche nei fogli 14 e 15 dove ho altre
> > tabelle simili senza riscrivere tutte le macro
> > ma naturalmente non so come fare.
>
> Ma che dire non va bene:
>
> oFormC= oDoc.sheets(14)
>
> e
>
> oFormC= oDoc.sheets(15)
>
> ecc. ecc.
>
> In alternativa puoi cercare di capire quale è il foglio corrente.
> E' questa la domanda?

si ok meglio con foglio corrente grazie

martello

unread,
Mar 5, 2012, 9:49:45 AM3/5/12
to
Il 05/03/2012 10.01, grotta continua ha scritto:
> On 1 Mar, 18:56, martello<"martelozzo1(martello)"@tin.it> wrote:
>>> "oDoc = ThisComponent
>>> oFormC= oDoc.sheets(13)....."
>>
>>> vorrei ripetere lo stesso filtro anche nei fogli 14 e 15 dove ho altre
>>> tabelle simili senza riscrivere tutte le macro
>>> ma naturalmente non so come fare.
>>
>> Ma che dire non va bene:
>>
>> oFormC= oDoc.sheets(14)
>>
>> e
>>
>> oFormC= oDoc.sheets(15)
>>
>> ecc. ecc.
>>
>> In alternativa puoi cercare di capire quale č il foglio corrente.
>> E' questa la domanda?
>
> si ok meglio con foglio corrente grazie


Allora per sapere quale č il foglio corrente prova questa:


Foglio = ThisComponent.CurrentSelection.CellAddress.sheet
print Foglio

pablo

unread,
Mar 5, 2012, 10:21:14 AM3/5/12
to
Il 05/03/2012 15:49, martello ha scritto:
[...]
> Allora per sapere quale č il foglio corrente prova questa:
>
>
> Foglio = ThisComponent.CurrentSelection.CellAddress.sheet
> print Foglio

Oppure questa:
ThisComponent.CurrentController.ActiveSheet


ciao
pablo

grotta continua

unread,
Mar 14, 2012, 6:32:12 AM3/14/12
to
On 5 Mar, 16:21, pablo <inva...@mail.org> wrote:
> Il 05/03/2012 15:49, martello ha scritto:
> [...]
>
> > Allora per sapere quale è il foglio corrente prova questa:
>
> > Foglio = ThisComponent.CurrentSelection.CellAddress.sheet
> > print Foglio
>
> Oppure questa:
> ThisComponent.CurrentController.ActiveSheet
>
> ciao
> pablo

diciamo che mi vanno bene tutte e due :-)
grazie molte
0 new messages