Newsgroup: it.comp.appl.access
Titolo: funzione con diversi errori

ciao a tutti
 
ho tre errori in questa funzione,
1-cancel=true
2-necessario oggetto
3-il focus non si sposta sul record mancante
 
Public Function DestDiversa( _
  ByVal campo1 As Variant, _
  ByVal campo2 As Variant, _
  ByVal campo3 As Variant) As Boolean
 
  Dim X As String
 
  X = ""
 
  X = IIf(Nz(campo1, 0) = 0, ", Indirizzo", "") _
    & IIf(Nz(campo2, 0) = 0, ", C.A.P.", "") _
    & IIf(Nz(campo3, 0) = 0, ", Città", "")
 
  If (X) <> "" Then
            Dim Risposta As Variant
            Risposta = vbYes
 
 
            Risposta = MsgBox("Attenzione manca:" & Mid(X, 2) & ", vuoi inserire i dati mancanti?.", vbYesNo, "Attenzione!")
 
            If (Risposta = vbYes) Then
                Cancel = True
 
                If Nz(campo1, 0) = 0 Then
                    campo1.SetFocus
 
                ElseIf Nz(campo1, 0) = 0 Then
                    campo1.SetFocus
 
                ElseIf Nz(campo1, 0) = 0 Then
                    campo1.SetFocus
 
                End If
 
            End If
 
  End If
 
End Function
 


correggo alcuni errori, ma non risolve il problema
 
 
                If Nz(campo1, 0) = 0 Then
                    campo1.SetFocus
 
                ElseIf Nz(campo2, 0) = 0 Then
                    campo2.SetFocus
 
                ElseIf Nz(campo3, 0) = 0 Then
                    campo3.SetFocus 


E' la seconda volta che ti facciola domanda.
Sai cosa significa passare i parametri per valore o per riferimento?
 
-- 
ac (x=y-1)
Aborro il Killfile
(La violenza e' l'ultimo rifugio degli incapaci -Salvor Hardin-)
 
---
Questa e-mail è stata controllata per individuare virus con Avast antivirus.
https://www.avast.com/antivirus
 
 


ciao Alessandro e grazie
 
ByRef puo' essere cambiato
ByVal rimane invariato anche se si cerca di cambiarlo
 
ho sostituito ByVal con ByRef
ma ugualmente l'errore
necessario oggetto


ho notato che non mi da l'errore "necessario oggetto"
se anzichè campo1 ecc. ecc.
scrivo il percorso del controllo
p.e.
forms!miaform!miasubform.form!miocontrollo
 
perchè?
 
grazie


Mi sembra ovvio.
forms!miaform!miasubform.form!miocontrollo
Questa va sulla collezione /forms/  che e' globale
 
Non mi sono chiesto cosa /diavolo/   passi alla funzione.
Non fai prima a passare "Me" (che sarebbe il form corrente
o comunque il form che ti interessa)?
 
e quindi una cosa poi cisi':
 
Public Function DestDiversa( frm as Form) as boolean
........
If Nz(frm!quellochee', 0) = 0 Then
                      campo1.SetFocus
....etc



grazie per la dritta,
ora ci provo

 Nz(frm!quellochee', 0) = 0 Then campo1.SetFocus ....etc
 
 
Public Function DestDiversa( frm as Form) as boolean
  ........
  IfNz(frm!quellochee', 0) = 0
     Then frm!quellochee'.SetFocus



ciao Alessando
è cosi devo fare?
 
Public Function DestDiversa(frm As Form) As Boolean
 
  Dim X As String
 
  X = ""
 
  X = IIf(Nz(frm!campo1, 0) = 0, ", Indirizzo", "") _
    & IIf(Nz(frm!campo2, 0) = 0, ", C.A.P.", "") _
    & IIf(Nz(frm!campo3, 0) = 0, ", Città", "")
 
  If (X) <> "" Then
    Dim Risposta As Variant
    Dim Cancel As Integer
    Risposta = vbYes
 
    Risposta = MsgBox("Attenzione manca:" & Mid(X, 2) & ", vuoi inserire i dati mancanti?.", vbYesNo, "Attenzione!")
 
    If (Risposta = vbYes) Then
      Cancel = True
 
      If Nz(frm!campo1, 0) = 0 Then
        frm!campo1.SetFocus
 
      ElseIf Nz(frm!campo2, 0) = 0 Then
        frm!campo2.SetFocus
 
      ElseIf Nz(frm!campo3, 0) = 0 Then
        frm!campo3.SetFocus
 
      End If
 
    End If
 
  End If
 
End Function
 
-come la richiamo?
-"cancel=true" non credo vada bene scritta cosi nella funzione
 
grazie ancora