Newsgroup: it.comp.appl.access
Titolo: Identificare sottomaschera istanziata chiamante II

Scusate se apro un altro tread (si dice cosï¿œ?)
Lo faccio per migliorarne la visibilitï¿œ e perchï¿œ il primo era ormai 
affogato tra le nebbie dell'alcool e la grandine dello zampone di fine 
anno...
Il buon "don" Karl mi ha dato un suggerimento ma data la mia pessima 
spiegazione del problema la soluzione non era quella adatta...
 
Riposto il problema, nella speranza di essere piï¿œ chiaro.
 
Ho una form con "dentro" 4 sottomaschere che sono istanze di una stessa 
sottomaschera.
1ï¿œ: ï¿œ possibile sapere la sottomaschera attiva in un dato momento?
una specie di me.activesubform? (se mai esistesse...)
 
grazie della pazienza
 
BC

 BC
 
A parte la discutibile idea di inserire un nuovo 3D... punto di vista
che non mi trova in accordo...
spiega perchè quello che ti ha suggerito Karl non va bene...!
 
Se nella form hai 4 subForm che siano tutte derivate dalla stessa non
ha alcuna importanza.
Le SubForm sono dei controlli... di fatto... ma se hai un Controllo
attivo nella SubForm, la verifica del PARENT
restituisce proprio quello che chiedi... e questo è proprio quello che
ha suggerito Karl.
 
Quindi prima di perdere del tempo ed aprire inutili 3D aggiuntivi,
dacci delle spiegazioni tecniche di cosa hai
testato e di che risultati hai ottenuto e di che risultati volevi
ottenere.
 
@Alex


Uhmmm......"lui scrive ' 4 sottomaschere che sono istanze di una stessa 
sottomaschera', l'unico modo che io conosca per fare questo e' 
modificare il recordsource. "lui" dice "istanze"  ma in questo caso non 
credo si possa parlare di istanze (*) (o almeno non conosco il modo di 
farlo), se fosse cosi' l'unico modo e' testare, appunto, il  recordsource.
 
(*) se fosse cosi' il "parent" e' sempre lo stesso
 
 
ahhhhhhh........ last but not least, Buon fine del mondo.
-- 
 
ac (x=y-1)

 @Alex
 
Il comando
MsgBox 
Me.ActiveControl.Parent.Name
 ha come risposta il nome della Form 
"contenitore" delle quattro subform.
Forse non ho ben capito come sfruttare questo codice, nel qual caso 
chiedo venia e lumi.
 
Se lo stesso codice lo metto nella sub, genera un'errore.
 
 
grazie ancora
 
BC


wrote:

Si ovviamente il NOME(Form) sarà sempre quello, infatti a lui deve
interessare il nome del "Container" che invece pare non
interessargli...
 
Ritengo che, come indicato all'inizio, il problema non sia nel
suggerimento di Karl, ma nell'interpretazione che l'OP da
dell'esigenza.
 
Dal Container poi si accede all'oggetto ISTANZA così:
 
Forms!NomeForm.Controls("NomeContainer").Form
 
quel NomeContainer lo ricava esattamente come ha suggerito Karl.
 
@Alex


Come ti dicevo la SubForm è un Controllo...
Prova questo:
MsgBox 
Me.ActiveControl.Parent.Form.Name
 
 
@Alex

 @Alex
sono perfettamente d'accordo...
purtroppo
MsgBox 
Me.ActiveControl.Parent.Form.Name
 
restituisce solo il nome del form "contenitore"
 
Comunque riepilogo perchè potrei io con le mie spiegazioni a confondere 
le acque:
Una form contenitore o mamma  o come si vuole chiamare (frmFoglioTerapia).
Una sub Form (subTerapiaParallea) con tre istanze della stessa 
affiancate (in tutto 4 subform contenute in SubT1 subT2 ecc...).
  Siccome la tabella origine mostra
idterapia
idrelaterapia
DATATerapia
Farmaco
...
 
ogni subform mostra solo la terapia di un giorno...
Da frmFoglioterapia sull'evento Load vengono settati i recordsource 
delle varie Sub (se volete vi invio il prg...)
 
Identificando la sub attiva posso scrivere routine per aggiornare, 
cancellare, aggiungere dati... (per lo meno è una starda che ho pensato)
 
Ancora grazie per la pazienza
 
BC
 

 ha scritto nel messaggio 
news:4f02d63c$0$6822$5fc...@news.tiscali.it...

A Cesare ma se già sai qual'è il rocorsource della sottomaschera fai tutto 
da codice...
Poi hai dato adito a incomprensioni.
Una form con 4 subform?
Una form con una subform che contiene 4 subform?
 
Ciao, Carlo 
 
 

Egregio don Carlo, è da tempo che non la sento direttamente e mi fa 
piacere risentirla..
Riepilogo :
una Form;
dentro 4 subform (SubT1, SubT2, SubT3, SubT4) che sono copie istanziate 
di una stessa subform.
Voglio, 
p.es
 facedo click su di una subform che mi venga fuori :
La sub attiva è : SubT3
Grazie dell'interessamento
 
BC
 
 
 

 MsgBox 
Me.ActiveControl.Parent.Form.Name
 
e:
Me.ActiveControl.Parent.Activecontrol.controlname  (o Name)?
 
 
-- 
 
ac (x=y-1)


... purtroppo la risposta è sempre (come giro giro) :
Proprietà o metodo non supportati dall'oggetto...
 
Il Mistero si infittisce...
 
Grazie del pensiero..
 
BC

 ha scritto nel messaggio 
news:4f0346cf$0$16656$5fc...@news.tiscali.it...

Ciao Cesare
cosa vuol dire "copie istanziate di una stessa subform"?
Comunque sia l'espressione:
MsgBox [Forms]![NomeMacheraPrincipale].ActiveControl.Name
sistemata su clik di un pulsante in un'altra maschera, mi da il risultato 
voluto.
Prova a costruire un'altra maschera, mettici il pulsante con l'istruzione 
sopra detta e aprila in contemporanea con la tua form con le subform.
Seleziona una subform (un campo al suo interno) e poi clicca sul pulsante 
della maschera aggiunta.
Quale messaggio da?
 
Ciao, Carlo 
 
 

 ha scritto nel messaggio 
news:4f04b7cd$0$16655$5fc...@news.tiscali.it...

Ho risposto alla tue email privata.
La soluzione è di usare il codice "su invio":
Me.ActiveControl.Name
 
 
Ciao, Carlo 
 
 


Grazie
Comunque non esiste un metodo "diretto" per "estrarre" il nome della 
subform tipo un 
me.activesubform.name
.
 
Grazie ancora
  BC

 ha scritto nel messaggio 
news:4f08334e$0$16661$5fc...@news.tiscali.it...

Sì che esiste! Basta un po' di fantasia.
Ricapitolo anche per chi ci legge.
BC ha una form che al click di un pulsante apre una seconda form con 4 
subform.
Lui ha bisogno di sapere quale subform della seconda maschera è attiva.
Utilizzando l'evento "su invio" della subform può conoscere il nome della 
subform semplicemente con
Me.ActiveControl.Name
 
e, per esempio, applicare un RecordSource alla sub così:
sempre su Invio della SubForm
Call AssegnaRecordSource(Me.Form, Me.NomeSubForm (nel caso specifico 
Me.SubT1))
dove la sub (in un modulo pubblico) AssegnaRecordSource è così fatta:
 
Public Sub AssegnaRecordSource(F As Form, C As SubForm)
F.Form.Controls(C.Name).Form.RecordSource = "select * from TblTerapia;"
End Sub
 
 
Ciao, Carlo