Newsgroup: it.comp.appl.access
Titolo: Campi visibili oppure no in una form....Comportamento strano

Salve a tutto il NG!
Da 2 giorni provo ma non capisco dove intervenire, vi chiedo un aiuto!
In una form ho 5 campi che si popolano in base a una query.
Dei 5 campi alcuni devono essere visibili altri no, in base a al
codice cliente.
La prima volta che passo al record successivo della query, nella form
scompaiono e compaiono i campi correttamente.
Tornando poi al primo record precedente, i campi della form non si
impostano, ma dal secondo record precedente in poi torna a funzionare.
La seconda volta che vado ai record successivi invece, si comporta
come sopra. Non imposta i campi su visibili o meno andando al primo
record successivo ma dal secondo in poi funziona correttamente.
I 5 campi hanno come origine controllo:
=vedoono1([rel1])
=vedoono2([rel2])
=vedoono3([rel3])
=vedoono4([rel4])
=vedoono5([rel5])
La form ha questo modulo:
Option Compare Database
Option Explicit
Dim CodCli As Long
Private Function tuttonascosto()
Forms!frmRelazInv!fldrel1.Visible = False
Forms!frmRelazInv!fldrel1.Visible = False
Forms!frmRelazInv!fldrel1.Visible = False
Forms!frmRelazInv!fldrel2.Visible = False
Forms!frmRelazInv!fldrel2.Visible = False
Forms!frmRelazInv!fldrel2.Visible = False
Forms!frmRelazInv!fldrel3.Visible = False
Forms!frmRelazInv!fldrel3.Visible = False
Forms!frmRelazInv!fldrel3.Visible = False
Forms!frmRelazInv!fldrel4.Visible = False
Forms!frmRelazInv!fldrel4.Visible = False
Forms!frmRelazInv!fldrel4.Visible = False
Forms!frmRelazInv!fldrel5.Visible = False
Forms!frmRelazInv!fldrel5.Visible = False
Forms!frmRelazInv!fldrel5.Visible = False
End Function
Private Function vedoono1(chi As Long) As Long
If (chi = CodCli) Then
vedoono1 = chi
Dim prova1 As Boolean
prova1 = True
Else
vedoono1 = 0
prova1 = False
End If
Me!fldrel1.Visible = prova1
Me!fldcognome1.Visible = prova1
Me!cmbrel1_tipo.Visible = prova1
prova1 = False
End Function
Private Function vedoono2(chi As Long) As Long
If (chi = CodCli) Then
vedoono2 = chi
Dim prova2 As Boolean
prova2 = True
Else
vedoono2 = 0
prova2 = False
End If
Me!fldrel2.Visible = prova2
Me!fldcognome2.Visible = prova2
Me!cmbrel2_tipo.Visible = prova2
prova2 = False
End Function
Private Function vedoono3(chi As Long) As Long
If (chi = CodCli) Then
vedoono3 = chi
Dim prova3 As Boolean
prova3 = True
Else
vedoono3 = 0
prova3 = False
End If
Me!fldrel3.Visible = prova3
Me!fldcognome3.Visible = prova3
Me!cmbrel3_tipo.Visible = prova3
prova3 = False
End Function
Private Function vedoono4(chi As Long) As Long
If (chi = CodCli) Then
vedoono4 = chi
Dim prova4 As Boolean
prova4 = True
Else
vedoono4 = 0
prova4 = False
End If
Me!fldrel4.Visible = prova4
Me!fldcognome4.Visible = prova4
Me!cmbrel4_tipo.Visible = prova4
prova4 = False
End Function
Private Function vedoono5(chi As Long) As Long
If (chi = CodCli) Then
vedoono5 = chi
Dim prova5 As Boolean
prova5 = True
Else
vedoono5 = 0
prova5 = False
End If
Me!fldrel5.Visible = prova5
Me!fldcognome5.Visible = prova5
Me!cmbrel5_tipo.Visible = prova5
prova5 = False
End Function
Private Sub Form_Open(Cancel As Integer)
CodCli = Forms!frmAnagraficaClienti_Principale!fldCodiceCliente
On Error GoTo err
Forms!frmRelazInv!fldCodiceCliente.SetFocus
tuttonascosto
err:
Select Case err.Number
Case 2105
MsgBox "Nessuna relazione inversa"
End Select
End Sub
Qualcuno ha una idea?
Qualsiasi consiglio sarebbe prezioso!
Ciao
F

 ha scritto nel messaggio 
news:d5ced211-9ab5-4ae7...@h11g2000prf.googlegroups.com...

Cosě ad occhio e croce sembra che la variabile CodCli resti valorizzata in 
modo errato se non al primo record quando la valorizzi correttamente su 
form.open.
Sposterei il codice
CodCli = Forms!frmAnagraficaClienti_Principale!fldCodiceCliente
da form.open a form.current
Ciao, Carlo 

 da form.open a form.current
Ho provato come hai pensato tu ma il problema rimane: se dal record 2
passo indietro al record 1, i controlli della maschera non si
aggiornavano.
Ho però fatto così, non so come mai mi sia venuto in mente:
Ho tolto i pulsanti di spostamento e ho aggiunto 2 bottoni avanti e
indietro, al classico codice
DoCmd.GoToRecord , , acNext
ho aggiunto
Me.Recalc
E tutto è a posto.
Grazie per il suggerimento
f