Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 4 su 4

Sub con If ... Then ... Else

  1. #1
    mailman_1969 non  in linea Scolaretto
    Buongiorno,
    ho un problema con la seguente Sub:
    Private Sub cmdfrmDFsalva_Click()
    On Error GoTo Err_cmdfrmDFsalva_Click
    
        Dim indice As Long
    
        DoCmd.RunCommand acCmdSaveRecord
        
        indice = Nz(DMax("IDfrmDFid", "TabDdtFornitori"), 0)
            If indice > frmDFIDtabDFid.Value Then GoTo Exit_cmdfrmDFsalva_Click
            Else:
            Me.Requery
            End If
    Exit_cmdfrmDFsalva_Click:
        Exit Sub
    
    Err_cmdfrmDFsalva_Click:
        MsgBox Err.Description
        Resume Exit_cmdfrmDFsalva_Click
        
    End Sub
    
    il debug mi da errore su Else con il msg "Errore di compilazione Else senza If".
    Se lo scrivo cosi' invece:
     ...
    If indice > frmDFIDtabDFid.Value Then GoTo Exit_cmdfrmDFsalva_Click Else
            
            Me.Requery
            End If 
    ...
    
    mi da errore su End If con il msg "Errore di compilazione End If senza blocco If".

    Mentre cosi' non da errori:
    ... 
    If indice > frmDFIDtabDFid.Value Then GoTo Exit_cmdfrmDFsalva_Click Else
            
            Me.Requery
            ...
    
    Dove sbaglio?

  2. #2
    Ma come la scrivi la If?

    Semmai

    Private Sub cmdfrmDFsalva_Click()
        On Error GoTo Err_cmdfrmDFsalva_Click
         Dim indice As Long
     
        DoCmd.RunCommand acCmdSaveRecord
         
        indice = Nz(DMax("IDfrmDFid", "TabDdtFornitori"), 0)
            
        If indice > frmDFIDtabDFid.Value Then
            GoTo Exit_cmdfrmDFsalva_Click
        Else
            Me.Requery
        End If
        
    Exit_cmdfrmDFsalva_Click:
        Exit Sub
     
    Err_cmdfrmDFsalva_Click:
        MsgBox Err.Description
        Resume Exit_cmdfrmDFsalva_Click
    End Sub
    
    Ma sarebbe meglio

    Private Sub cmdfrmDFsalva_Click()
        On  Error GoTo Err_cmdfrmDFsalva_Click
        Dim indice As Long
     
        DoCmd.RunCommand acCmdSaveRecord
         
        indice = Nz(DMax("IDfrmDFid", "TabDdtFornitori"), 0)
            
        If indice <= frmDFIDtabDFid.Value Then Me.Requery
        
    Exit_cmdfrmDFsalva_Click:
        Exit Sub
     
    Err_cmdfrmDFsalva_Click:
        MsgBox Err.Description
        Resume Exit_cmdfrmDFsalva_Click
    End Sub
    
    ℹ️ Leggi di pi su AntonioG ...

  3. #3
    Quote Originariamente inviato da mailman_1969 Visualizza il messaggio
    ...
    If indice > frmDFIDtabDFid.Value Then GoTo Exit_cmdfrmDFsalva_Click
    Else:
    Me.Requery
    End If
    
    il debug mi da errore su Else con il msg "Errore di compilazione Else senza If".
    ...
    Dove sbaglio?
    Ci sono i duepunti dopo Else che non ci vanno. Va' a capo dopo il Then.
    E questo per il problema dell'If Then Else.
    Troppi GoTo concentrati in pochissime righe. Il codice deve essere riscritto.

  4. #4
    mailman_1969 non  in linea Scolaretto
    Capito e memorizzato.
    Grazie

+ Rispondi al messaggio