Newsgroup: it.comp.appl.access
Titolo: Inserire controllo riferimento su funzione IIf() Access.

Premetto che sono un utente totalmente inesperto nell'utilizzo di Access.
Non riesco a risolvere un problema apparentemente semplice.
Ho creato una maschera con una sottomaschera (tra l'altro, nella
sottomaschera appaiono le intestazioni dei campi anziché l'intestazione
della sottomaschera):
 in un campo della sottomaschera, desidero, quando un valore della maschera
è  = X, restituire un valore dato dalla somma di un campo della
sottomaschera
+ 9 (esempio).
nell' "Origine Controllo" ho provato ad esprimermi in varie soluzioni, ad
esempio
=IIf(Maschere![preventivo 3]![Tmisura]="*oscuro*";[Base]+9;[Base])
risultato:  #nome?
Non riesco a venirne fuori!
Ringrazio anticipatamente colui che vorrà darmi aiuto.
Non ho capito dove vuoi restituire il valore dell'espressione, comunque
prova con:
=IIf(form![preventivo
3]![Tmisura]="*oscuro*";form!NomeMaschera![Base]+9;form!NomeMaschera![Base])
Ciao.
La ringrazio per il Suo interessamento, ma la sua indicazione non ha
cambiato il risultato.
Il campo dove deve apparire il risultato della funzione si trova nella
sottomaschera.
il campo origine del controllo, nella maschera, ha etichetta "TipoMisura";
il campo della sottomaschera dove ho inserito l'espressione è "Mbase";
partevera [Base]+9 ha etichetta "Base" e la partefalsa [Base] ha etichetta
"Base".
La ringrazio anticipatamente se vorrà aiutarmi a risolvere il problema.
Andrea.
prova a modificale la iif così:
=iif(forms![preventivo 3]!tmisura like "*oscuro*";[base]+9;[base])
Ciao.
ho ottenuto un miglioramento; adesso mi restituisce sempre la
partefalsa [base] come se non riconoscesse il contenuto di Tmisura.

 =IIf(Maschere![preventivo 3]![Tmisura]="*oscuro*";[Base]+9;[Base])
se oscuro e' un numero:
=iif(Parent.Tmisura=3;[Base]+9;[Base])
se oscuro e' una stringa:
=iif(Parent.Tmisura Like "*oscuro*";[Base]+9;[Base])
-- 
Federico
--------------------------------------
Sito Comune di it.comp.appl.access
http://members.xoom.it/it_db_access
mailto:
it_db_...@usa.net
--------------------------------------
Tutte le richieste che mi arrivano
in privato, vengono cestinate.
--------------------------------------
Rimuovi paperino. per e-mail
--------------------------------------

 wrote in message
39F02755...@paperino.libero.it...


 Andrea.
Per favore rispondi dopo la parte quotata. Grazie
La proprieta' Parent serve per far riferimento alla form principale (maggiori
dettagli sull'help)
Visto che il controllo Tmisura si trova sulla form principale, allora per far
riferimento ad esso, da una subform, si puo' utilizzare Parent.
Nella form principale:
 Tmisura
nella subform:
 Mbase
 Base
come origine controllo di Mbase:
=iif(Parent.Tmisura Like "*oscuro*";[Base]+9;[Base])
in queste ipotesi sono sicuro che funziona.
Naturalmente devi inserire un:
 Me.nomeSubForm.requery
nell'evento dopo aggiornamento del controllo Tmisura


 wrote in message
39F052D6...@paperino.libero.it...

Non capisco l'ultima parte del tuo messaggio (e forse è proprio quello che
mi manca).
Andrea.

 mi manca).
Sei proprio a digiuno eh :-)
devi gestire l'evento dopoaggiornamento del controllo Tmisura, cioe' 'crea'
l'evento e scrivici
  Me.nomeSubForm.requery
Inoltre, mi ero dimenticato di dirtelo, devi gestire anche l'evento SuCorrente
della form principale, quindi crea l'evento e scrivici:
  Me.nomeSubForm.requery
dove nomeSubForm va sostituito con il nome della subform
In questo modo quando modifichi il campo Tmisura o quando ti muovi tra i record
della form principale, il controllo Mbase viene ricalcolato.


 wrote in message
39F07943...@paperino.libero.it...

Hai ragione, sono proprio a digiuno.
Infatti, ho provato a scrivere un codice con quello che mi hai scritto ma
non ho nessun risultato.
Tuttavia, non funziona nemmeno nell'inserimento di un nuovo record.
Andrea.

 Andrea.
Andrea, 
mi spiace, ma non so piu' come spiegartelo.
Forse e' meglio che prima di andare avanti ti studi cosa sono gli eventi e come
si gestiscono.
Cmq, questo funziona:
Nella form principale:
 Tmisura
nella subform:
 Mbase
come origine controllo di Mbase:
=iif(Parent.Tmisura Like "*oscuro*";[Base]+9;[Base])
eventi da gestire nella form principale:
Private Sub Form_Current()
  Me.SostituisciNomeSubForm.requery
End Sub
Private Sub Tmisura_AfterUpdate()
  Me.SostituisciNomeSubForm.requery
End Sub


 wrote in message
39F3F7DF...@paperino.libero.it...

Ho creato, come mi hai suggerito, mediante il generatore di eventi (visual
basic), i controlli che mi hai scritto.
Sono rientrato per controllare che cosa era stato memorizzato:
NELLA MASCHERA PRINCIPALE
Private Sub Corpo_Click()
End Sub
Private Sub Form_Current()
  Me.Sottomaschera_Corpo_preventivo_Query3.Requery
End Sub
Private Sub Sottomaschera_Corpo_preventivo_Query3_Enter()
End Sub
Private Sub Tmisura_AfterUpdate()
  Me.Sottomaschera_Corpo_preventivo_Query3.Requery
End Sub
NELLA SOTTOMASCHERA
Private Sub Form_Current()
  Me.Sottomaschera_Corpo_preventivo_Query3.Requery
End Sub
Private Sub Sottomaschera_Corpo_preventivo_Query3_Enter()
End Sub
Private Sub Tmisura_AfterUpdate()
  Me.Sottomaschera_Corpo_preventivo_Query3.Requery
End Sub
La funzione in base =IIf(Parent.Tmisura Like "*oscuro*";[Base]+9;[Base]
Mi restituisce ancora il valore partefalsa (base).
Colgo l'occasione per ringraziarti del tuo interesse.