[Risolto] Macro per aprire un formulario

Creare una macro - Scrivere uno script - Usare le API
Rispondi
Stefano V.
Messaggi: 137
Iscritto il: domenica 31 marzo 2019, 15:51

[Risolto] Macro per aprire un formulario

Messaggio da Stefano V. »

Buongiorno, premetto che questo è un argomento già trattato in altre sedi ma in nessuna di essi ho trovato una soluzione soddisfacente.

Ho un database composto da due formulari, uno si chiama "f-Immissione" dove vengono inseriti i dati relativi a ciascun trovatello ( :D ) che sono Nome e Cognome, Sesso, Età al momento del ritrovamento, espressa in Anni, Mesi e Giorni e Data di Nascita. Naturalmente ogni soggetto ha un ID univoco. Poi c'e un altro formulario chiamato "f_ricerca" dove, inserendo determinati parametri, tipo "Anno Nascita" il db mi restituisce, in una tabella, nell'esempio dell' "Anno di Nascita", tutti i trovatelli nati in un dato anno.

Mi piacerebbe che cliccando su uno dei record di un dato risultato di una ricerca contenuto in questa tabella che, ripeto, è nel formulario "f_ricerca", si aprisse il formulario "f_Immissione" alla schermata che contiene i dati del trovatello corrispondente.

dunque avevo trovato questa macro che ho inserito in Eventi > "Ricevimento del punto focale", nelle proprietà della tabella di ricerca contenuta nel formulario "f_ricerca"

Codice: Seleziona tutto

Sub ApriFormCompilazioneDaTabella ()
Dim prop(1) as New com.sun.star.beans.PropertyValue
forms=ThisComponent.Parent.getFormDocuments()
conn=ThisComponent.Parent.DataSource.getConnection("","")
prop(0).Name="ActiveConnection"
prop(0).Value=conn
prop(1).Name="OpenMode"
prop(1).Value="open"

oStartDoc = ThisComponent
oStartForm = oStartDoc.drawpage.forms.MainForm
i = oStartForm.columns.InventoryID.getInt

oNewDoc = forms.loadComponentFromURL("FORM_NC_PR","_blank",0,prop())
oNewDocForm = oNewDoc.drawpage.forms.MainForm
wait 100
oNewDocForm.Filter = "ID_NC_PR ='" & i & "'"
oNewDocForm.ApplyFilter = True
oNewDocForm.Reload
End Sub
dove, secondo le istruzioni, ho sostituito "FORM_NC_PR" con "f_Immissione" e "ID_NC_PR ='" & i & "'" con "ID_Proietto ='" & i & "'"
si dice che non era funzionante anche nell'argomento da dove l'ho presa [Macro apertura di un form BASE da risultato tabellare] e si dice che la soluzione era nel forum in inglese, che consisterebbe essenzialmente nel sostituire la riga "oStartForm = oStartDoc.drawpage.forms.MainForm" con "oStartForm = oStartDoc.drawpage.forms.MainForm.SubForm", cosa che ho fatto nel db che allego, ma in ogni caso la macro non funziona (Errore di runtime BASIC.
Proprietà o metodo non trovato: MainForm) .

Avrei trovato anche un'altra macro nell'argomento [ viewtopic.php?f=26&t=6792 ]

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                                          '
che però non sono stato in grado di adattare al mio db perchè non ho trovato nel predetto argomento un db allegato di riferimento da cui poter capire le "personalizzazioni". Peraltro la soluzione finale proposta dall'autore (evidentemente molto esperto) dell'argomento è formata da due macro e lì non saprei dove mettere le mani per adattarle al mio caso :crazy: :D

Grazie se qualcuno potra darmi una mano...
Ultima modifica di Stefano V. il domenica 2 giugno 2019, 19:04, modificato 1 volta in totale.
LibreOffice Versione: 7.5.9.2 installata su macOS Big Sur 11.7.10
Stefano V.
Messaggi: 137
Iscritto il: domenica 31 marzo 2019, 15:51

Re: Macro per aprire un formulario

Messaggio da Stefano V. »

Mi sono accorto che il mio db è grande e vorrei postarlo tra gli allegati pesanti ma
provo a mettere le credenziali suggerite nell'argomento "allegati pesanti" in dropbox ma mi viene detto che la password è errata :crazy: e per sbaglio ho anche aperto un altro argomento con lo stesso nome... Mi spiace, non so come cancellarlo... :cry:
LibreOffice Versione: 7.5.9.2 installata su macOS Big Sur 11.7.10
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Macro per aprire un formulario

Messaggio da charlie »

Stefano V. ha scritto:Mi sono accorto che il mio db è grande e vorrei postarlo tra gli allegati pesanti ma
provo a mettere le credenziali suggerite nell'argomento "allegati pesanti" in dropbox ma mi viene detto che la password è errata :crazy: e per sbaglio ho anche aperto un altro argomento con lo stesso nome... Mi spiace, non so come cancellarlo... :cry:
La password indicata è corretta, hai usato il giusto username? (allegatiaoo@gmail.com). Lo so che le indicazioni non sono chiarissime, saranno modificate quanto prima.
Per cance,lare un messaggio c'è l'apposito tasro con la crocetta.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Stefano V.
Messaggi: 137
Iscritto il: domenica 31 marzo 2019, 15:51

Re: Macro per aprire un formulario

Messaggio da Stefano V. »

Caricato tramite dropbox "Trovatelli macro non funzionante" :super: . Mettevo, sbagliando, l'altro indirizzo gmail come username perché "allegatiaoo@gmail.com" sembrava cancellato. :D. Grazie della dritta.
LibreOffice Versione: 7.5.9.2 installata su macOS Big Sur 11.7.10
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Macro per aprire un formulario

Messaggio da Gaetanopr »

Ho apportato qualche modifica alla macro e associata all'evento pulsante del mouse rilasciato o premuto

Codice: Seleziona tutto

Sub ApriFormCompilazioneDaTabella (Ev)
Dim prop(1) as New com.sun.star.beans.PropertyValue
forms=ThisComponent.Parent.getFormDocuments()
conn=ThisComponent.Parent.DataSource.getConnection("","")
prop(0).Name="ActiveConnection"
prop(0).Value=conn
prop(1).Name="OpenMode"
prop(1).Value="open"

oForm = Ev.Source.Model.Parent 
i= oForm.columns.getByName("ID_Proietto").value
oNewDoc = forms.loadComponentFromURL("f_Immissione","_blank",0,prop())
oNewDocForm = oNewDoc.drawpage.forms.MainForm
wait 100
oNewDocForm.Filter = "ID_Proietto ='" & i & "'"
oNewDocForm.ApplyFilter = True
oNewDocForm.Reload
End Sub
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Stefano V.
Messaggi: 137
Iscritto il: domenica 31 marzo 2019, 15:51

Re: Macro per aprire un formulario

Messaggio da Stefano V. »

Grazie Gaetanopr, l'aiuto è stato utilissimo. La macro l'ho testata sia sul database "Trovatelli macro non funzionante" che ora si chiama "Trovatelli macro funzionante" :D e che ho caricato su dropbox (non so se a qualcuno possa in ogni caso servire e se ingombra inutilmente la casella voi provvederete a cancellarlo), sia, e soprattutto, sulla versione completa del mio database che non posto perché di dimensioni ancora più grandi. L'ho associata all'evento della tabella "tasto premuto del mouse".
Grazie ancora. :super:
LibreOffice Versione: 7.5.9.2 installata su macOS Big Sur 11.7.10
Rispondi