Pagina 1 di 1

(risolto)macro per aprire formulario chiudendo il precedente

Inviato: mercoledì 14 dicembre 2011, 10:50
da il fendente
Buongiorno a tutti, non sono un esperto di database ma cercherò ugualmente di farmi capire.

Il database su cui sto lavorando ha un formulario in cui è presente un pulsante che, se cliccato, apre un altro formulario grazie ad una macro collegata al pulsante (e fin qui ok).
Ecco la macro in questione:

  • Sub OpenForm( oEvent as variant, aFormName as string) as variant
    Dim args(1) As New com.sun.star.beans.PropertyValue
    Dim container as variant

    container = oEvent.Source.Model.Parent.ActiveConnection.Parent.DatabaseDocument.FormDocuments

    args(0).Name = "ActiveConnection"
    args(0).Value = oEvent.Source.Model.Parent.ActiveConnection
    args(1).Name = "OpenMode"
    args(1).Value = "open"
    container.loadComponentFromURL(aFormName,"_blank",0,args())

    End Sub

    Sub onClickOpenInserisci ( oEvent as variant )
    OpenForm(oEvent, "Inserisci nuovo utente")
    End sub

Il problema è che il nuovo formulario si apre in un'altra finestra sovrapposta alla precedente mentre, per comodità, preferirei che l'utente lavorasse su un'unica finestra.
Mi servirebbe quindi una macro che mi apra il formulario chiudendo contemporaneamente il precedente (o qualcosa di simile).

Grazie

Re: macro per aprire formulario chiudendo il precedente

Inviato: mercoledì 14 dicembre 2011, 14:08
da bydindi
Ciao, nell' altro topic dove anche tu sei intervenuto:
http://user.services.openoffice.org/it/ ... =13&t=2370
Ho inserito la macro che utilizzo io, noterai che c'è una riga che è questa:
ThisComponent.CurrentController.Frame.close(True)
che esegue cio che tu chiedi

Re: macro per aprire formulario chiudendo il precedente

Inviato: mercoledì 14 dicembre 2011, 14:35
da il fendente
ciao ho inserito la macro che hai postato nell'altra discussione ma mi esce una finestra d'errore
"errore di runtime BASIC. variabile dell'oggetto non impostata"
e mi evidenzia questa riga

oConnection = oDatabase.DataSource.getConnection("","")

Re: macro per aprire formulario chiudendo il precedente

Inviato: mercoledì 14 dicembre 2011, 15:44
da il fendente
contro ordine!!
mi è bastato inserire quella tua stringa di testo nella mia macro e ora funziona perfettamente
grazie mille

Re: macro per aprire formulario chiudendo il precedente

Inviato: martedì 20 dicembre 2011, 8:36
da laquila
x il fendente:
anch'io ho usato la tua macro per l'apertura del formulario,
in quale riga inserisci la stringa

Codice: Seleziona tutto

ThisComponent.CurrentController.Frame.close(True)
nella tua macro per chiudere l'altra?
grazie!

Re: macro per aprire formulario chiudendo il precedente

Inviato: martedì 20 dicembre 2011, 12:02
da il fendente
ecco la macro completa:

Codice: Seleziona tutto

Sub OpenForm( oEvent as variant, aFormName as string) as variant
  Dim args(1) As New com.sun.star.beans.PropertyValue
  Dim container as variant

  container = oEvent.Source.Model.Parent.ActiveConnection.Parent.DatabaseDocument.FormDocuments
  args(0).Name = "ActiveConnection"
  args(0).Value = oEvent.Source.Model.Parent.ActiveConnection
  args(1).Name = "OpenMode"
  args(1).Value = "open"
  container.loadComponentFromURL(aFormName,"_blank",0,args())

End Sub

Sub onClickOpenInserisci ( oEvent as variant )
   OpenForm(oEvent, "Inserisci nuovo contatto")
   ThisComponent.CurrentController.Frame.close(True)
End sub

come puoi vedere l'ho inserita alla penultima riga ;-)

Re: (risolto)macro per aprire formulario chiudendo il preced

Inviato: martedì 20 dicembre 2011, 13:36
da laquila
inserendo la stringa

Codice: Seleziona tutto

ThisComponent.CurrentController.Frame.close(True)
nella penultima riga ho che il secondo formulario (DATI POZZO) si apre e subito si richiude. Invece vorrei che si chiudesse il primo formulario (ARCHIVIO POZZI) e restasse aperto solo il secondo (DATI POZZO). Qualche suggerimento?grazie!

ecco il codice completo

Codice: Seleziona tutto

REM  *****  BASIC  *****
    Sub OpenForm( oEvent as variant, aFormName as string) as variant
    Dim args(1) As New com.sun.star.beans.PropertyValue
    Dim container as variant

    container = oEvent.Source.Model.Parent.ActiveConnection.Parent.DatabaseDocument.FormDocuments

    args(0).Name = "ActiveConnection"
    args(0).Value = oEvent.Source.Model.Parent.ActiveConnection
    args(1).Name = "OpenMode"
    args(1).Value = "open"
    container.loadComponentFromURL(aFormName,"_blank",0,args())

    End Sub

    Sub onClickOpenDatiPozzo ( oEvent as variant )
    ThisComponent.CurrentController.Frame.close(True)
    OpenForm(oEvent, "DATI POZZO")
    End sub

Re: (risolto)macro per aprire formulario chiudendo il preced

Inviato: giovedì 22 dicembre 2011, 11:32
da il fendente
scusami ho scritto penultima riga perché consideravo anche la riga "end sub"
l'ordine corretto è questo:

Codice: Seleziona tutto

OpenForm(oEvent, "Inserisci nuovo contatto")
   ThisComponent.CurrentController.Frame.close(True)
tu li hai invertiti

Re: (risolto)macro per aprire formulario chiudendo il preced

Inviato: venerdì 23 dicembre 2011, 8:54
da laquila
anche invertendoli succede la stessa cosa: si apre la seconda maschera e subito si richiude e la prima, invece, resta aperta :/

Re: (risolto)macro per aprire formulario chiudendo il preced

Inviato: venerdì 23 dicembre 2011, 10:19
da vladko
puoi mettere per intero tua macro o ancora meglio tuo file che non funziona come si deve
prima di mettere file sostituisci tuoi dati con dati falsi come Paperina Paperino etc
cosi è veramente difficile capire

Re: (risolto)macro per aprire formulario chiudendo il preced

Inviato: martedì 27 dicembre 2011, 12:25
da il fendente
quoto vladko, prova a postare il tuo database dopo averlo pulito dai dati sensibili.
Hai registrato il database? Forse è per questo che non ti funziona la macro.

Re: (risolto)macro per aprire formulario chiudendo il preced

Inviato: martedì 24 gennaio 2012, 7:14
da TMY
Ho usato la seguente macro:

Sub OpenForm( oEvent as variant, aFormName as string) as variant
Dim args(1) As New com.sun.star.beans.PropertyValue
Dim container as variant

container = oEvent.Source.Model.Parent.ActiveConnection.Parent.DatabaseDocument.FormDocuments

args(0).Name = "ActiveConnection"
args(0).Value = oEvent.Source.Model.Parent.ActiveConnection
args(1).Name = "OpenMode"
args(1).Value = "open"
container.loadComponentFromURL(aFormName,"_blank",0,args())

End Sub

Sub onClickOpenDatiPozzo ( oEvent as variant )
ThisComponent.CurrentController.Frame.close(True)
OpenForm(oEvent, "RicercaB")
End sub

ma ricevo il seguente messaggio: Wrong number of parameters

dove sbaglio???????