Newsgroup: it.comp.appl.access
Titolo: Funzione con risultato errato

ciao a tutti
 
 
utilizzo questa funzione........
 
Public Function Conf_Chiusura( _
  ByRef Campo1 As Variant, _
  ByRef Campo2 As Variant, _
  ByRef Campo3 As Variant, _
  ByRef Campo4 As Variant, _
  ByRef Campo5 As Variant, _
  ByRef msg As String, _
  ByRef ban As String) As Boolean
 
  Dim X As String
 
    X = IIf(Nz(Campo1, 0) = 0, ", data chiusura", "") & _
        IIf(Nz(Campo2, 0) = 0, ", Targa", "") & _
        IIf(Nz(Campo3, 0) = 0, ", n.Colli", "") & _
        IIf(Nz(Campo4, 0) = 0, ", Quantità", "") & _
        IIf(Nz(Campo5, 0) = 0, ", Prezzo", "")
 
    If (X) <> "" Then
        msg = "Attenzione manca:" & Mid(X, 2)
        ban = "Chiusura Annullata!!!"
    Exit Function
    End If
 
Conf_Chiusura = True
End Function
 
 
per il campo3, campo4 e campo5 trattandosi di maschere continue, il riusltato non è corretto.
Mi rileva solo se è sul primo record il valore = 0.
 
come posso fare?
grazie


ho provato in questo modo, ma non credo vada bene...................
 
 
 
Public Function Conf_Chiusura( _
  ByRef Campo1 As Variant, _
  ByRef Campo2 As Variant, _
  ByRef Campo3 As Variant, _
  ByRef Campo4 As Variant, _
  ByRef Campo5 As Variant, _
  ByRef msg As String, _
  ByRef ban As String) As Boolean
 
  Dim db As Database
  Dim rsCheck As dao.Recordset
  Dim strsCheckQL As String
 
  strsCheckQL = "SELECT * FROM DettaglioCarichi" _
   & " Where IdCarico =" & Forms("M_ChiusuraCarico")!IDCarico
 
  Set db = CurrentDb
  Set rsCheck = db.OpenRecordset(strsCheckQL)
 
  rsCheck.FindFirst "nColli=0"
 
  If Not rsCheck.NoMatch Then
    Campo3 = 0
 
  End If
 
  rsCheck.FindFirst "Quantità=0"
 
  If Not rsCheck.NoMatch Then
    Campo4 = 0
 
  End If
 
  rsCheck.FindFirst "Prezzo=0"
 
  If Not rsCheck.NoMatch Then
    Campo5 = 0
 
  End If
 
  Dim X As String
 
    X = IIf(Nz(Campo1, 0) = 0, ", data chiusura", "") & _
        IIf(Nz(Campo2, 0) = 0, ", Targa", "") & _
        IIf(Nz(Campo3, 0) = 0, ", n.Colli", "") & _
        IIf(Nz(Campo4, 0) = 0, ", Quantità", "") & _
        IIf(Nz(Campo5, 0) = 0, ", Prezzo", "")
 
    If (X) <> "" Then
        msg = "Attenzione manca:" & Mid(X, 2)
        ban = "Chiusura Annullata!!!"
    Exit Function
    End If
 
    Set db = Nothing
    Set rsCheck = Nothing


 Il giorno domenica 26 luglio 2015 14:32:46 UTC+2, 
francodel...@gmail.com
 ha scritto:
 
cut
 
ciao a tutti
 
ho fatto in questo modo..................
puo' anadare bene?
 
grazie.
 
_______inzio funzione_____
 
Public Function Conf_Chiusura( _
  ByRef Campo1 As Variant, _
  ByRef Campo2 As Variant, _
  ByRef Campo3 As Variant, _
  ByRef Campo4 As Variant, _
  ByRef Campo5 As Variant, _
  ByRef msg As String, _
  ByRef ban As String) As Boolean
 
  Dim db As Database
  Dim rsCheck As dao.Recordset
  Dim strsCheckQL As String
 ' Dim intChoice As Byte

_______fine funzione_____
 
 
 
poi su click di un pulsante
 
_______inzio codice_____
 
    Me.Requery
 
    Dim msg_ChiusuraCarico As String
    Dim ban_ChiusuraCarico As String
 
    If Conf_Chiusura(Me!DataChiusura.Value, _
                    Me!TargaCamion.Value, _
                    Me!SM_DettCarichi.Form!nColli.Value, _
                    Me!SM_DettCarichi.Form!Quantità.Value, _
                    Me!SM_DettCarichi.Form!Prezzo.Value, _
                    msg_ChiusuraCarico, _
                    ban_ChiusuraCarico) = False Then
    MsgBox msg_ChiusuraCarico, vbExclamation, ban_ChiusuraCarico
 
    If Len(Me!DataChiusura & vbNullString) = 0 Then
        Me!DataChiusura.SetFocus
 
    ElseIf Len(Me!TargaCamion & vbNullString) = 0 Then
        Me!TargaCamion.SetFocus
 
    Else
        Dim rsCheck As dao.Recordset
        Set rsCheck = Me!SM_DettCarichi.Form.RecordsetClone
 
        rsCheck.FindFirst "Prezzo=0"
 
        If Not rsCheck.NoMatch Then
            Me!SM_DettCarichi.Form.Bookmark = rsCheck.Bookmark ' segnalibro per trovare il prezzo = 0
            Me!SM_DettCarichi.SetFocus
            Me!SM_DettCarichi.Form!Prezzo.SetFocus
 
        End If
 
        rsCheck.FindFirst "Quantità=0"
 
        If Not rsCheck.NoMatch Then
            Me!SM_DettCarichi.Form.Bookmark = rsCheck.Bookmark ' segnalibro per trovare la quantità = 0
            Me!SM_DettCarichi.SetFocus
            Me!SM_DettCarichi.Form!Quantità.SetFocus
 
        End If
 
        rsCheck.FindFirst "nColli=0"
 
        If Not rsCheck.NoMatch Then
            Me!SM_DettCarichi.Form.Bookmark = rsCheck.Bookmark ' segnalibro per trovare il prezzo = 0
            Me!SM_DettCarichi.SetFocus
            Me!SM_DettCarichi.Form!nColli.SetFocus
 
        End If
 
        rsCheck.Close: Set rsCheck = Nothing
 
    End If
 
    Exit Sub
 
    End If
 
    Dim Risposta As Variant
    Risposta = vbYes
 
    If Not IsNull(DLookup("RifCliente", "TrovaDuplicatiRif", _
      "IdCliente = " & Me!LstCliente & " And " & _
      "RifCliente= " & Nz(Me!RifCliente, 0))) Then
 
        Risposta = MsgBox("ATTENZIONE: Numero Riferimento già inserito!!!, aprire il Report ?", vbYesNo)
    End If
 
    If (Risposta = vbYes) Then
        DoCmd.OpenForm "M_ChiusuraCaricoFo", , , "IdCarico=" & Me!IDCarico
 
    End If
 
_______fine codice_____