Pagina 1 di 1

[Risolto] Macro già pronte per base

Inviato: domenica 19 aprile 2015, 15:52
da steaz
Ciao ragazzi,
chiedo se per cortesia, qualcuno mi può dare indicazioni, perchè sto cercando una macro per:
aprire un formulario filtrato in base all'ID (record) selezionato in un altro formulario, per es:
sono in un formulario in cui sto scorrendo l'elenco tabella delle fatture emesse, clicco a fianco un bottone e relativamente al record corrente mi si apre la scheda (formulario) completa.
Grazie :D

Re: Macro già pronte per base

Inviato: lunedì 20 aprile 2015, 16:41
da Mizio1961
Ciao
La macro che segue dovrebbe fare al caso tuo, ovviamente va adattata

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                                          '
Prova ;-)

Re: Macro già pronte per base

Inviato: lunedì 20 aprile 2015, 17:31
da steaz
Grazie Mizio, provo subito

Re: Macro già pronte per base

Inviato: lunedì 20 aprile 2015, 17:56
da steaz
Sto sbagliando qualcosa

Codice: Seleziona tutto

private sub apriformcorrisp(oEvent)               ' ByMizio - F_CntTes: PERSONE
   dim sNameDB, sNameFm, NBFATT as string
   dim oForm as object
   '---------------------------------------------'
   sNameFm = "Pannello eventi"                         ' maschera che si deve aprire
   sNameDB = gesmenu                ' file odb su cui sto lavorando
   sNameDB = MID$(sNameDB,1,instr(sNameDB, ":")-1)
   NBFATT = oEvent.Source.Model.Parent.getByName("tabella").text ' QUI NON HO CAPITO COSA METTERCI e ci ho messo il nome della tabella
   oForm   = FormOpenDB(sNameDB, sNameFm)        ' APRI FORMULARIO IN DB
   oForm.filter = "id_nominativo = '" & NBFATT & "'"    ' nome del campo di riferimento per individuare la 'Fattura' da vedere
   oForm.reload                                  ' 
end sub 
restituisce il seguente errore:
Errore di runtime basic
Proprietà o metono non trovati.text

Re: Macro già pronte per base

Inviato: lunedì 20 aprile 2015, 18:32
da steaz
ho risolto in questo modo:

prima faccio una macro per la selezione in base all' ID

Codice: Seleziona tutto

Option Explicit

Global id_nominativo As Integer

Sub FormularioEvento(Event As Object)
	Dim oForm As Object
	oForm = Event.Source.Model.Parent
	If oForm.IsNew Or oForm.IsAfterLast Then Exit Sub
	id_nominativo = oForm.Columns.GetByName("id_nominativo").GetInt
	With ThisDatabaseDocument.FormDocuments.GetByName("Pannello eventi")
		.Close
		.Open
	End With
End Sub
Poi all'apertura del formulario con dentro il dettaglio che cerco, imposto questa macro che filtra in base all'ID che avevo selezionato e funziona bene.

Codice: Seleziona tutto

Sub FiltraEvento(Event As Object)
	Dim oForm As Object
	oForm = Event.Source
	oForm.ApplyFilter=True
	oForm.Filter="""id_nominativo""=" & id_nominativo
	oForm.Reload
End Sub

Re: Macro già pronte per base

Inviato: martedì 21 aprile 2015, 10:33
da Mizio1961
;-)
Comunque sNameDB = "gesmenu" (Mancavano le doppie virgolette)
Ciao

Re: Macro già pronte per base

Inviato: martedì 21 aprile 2015, 12:50
da steaz
Auch!!! non ci avevo fatto caso!
Grazie, provo la macro.