Dimensione Routine troppo grande

di il
20 risposte

Dimensione Routine troppo grande

CIao a tutti

Una routine che ha sempre funzionato, ora che sono passato a Office 2019 (Access 2019),

mi da errore di compilazione: Routine troppo grande.

Qualcuno sa se è diminuita la dimensione della singola routine?

Avevo letto da qualche parte che il limite era 64K ma ripeto con Office 2013 compilava tranquillamente senza errore.

Poi sapete come si fà a misurare le dimensioni in K di una routine?

Ho provato a copiare la routine su blocco note e vedere la dimensione ma non so se è il metodo giusto.

Ciao e grazie
Allegati:
27207_2b726ebefb9d080f0d33424716b66bf9.png
27207_2b726ebefb9d080f0d33424716b66bf9.png

20 Risposte

  • Re: Dimensione Routine troppo grande

    stevesally ha scritto:


    Una routine che ha sempre funzionato, ora che sono passato a Office 2019 (Access 2019),
    mi da errore di compilazione: Routine troppo grande.
    A mio avviso il problema segnalato nasconde altro. Utilizzo di API? Riferimenti a librerie mancanti? La versione è 32 o 64 bit di Office? E il sistema operativo?
    Prova a pubblicare la routine e tutto quello che in essa viene richiamato (tipo altre funzioni o sub)
  • Re: Dimensione Routine troppo grande

    Ma perché la tua routine deve essere così grande? Non usi Sub?
  • Re: Dimensione Routine troppo grande

    Ciao la routine è lunga perchè complessa e uso una transazione e per mia ignoranza non so come spezzare la routine

    sta di fatto che finchè non ho cambiato office funzionava benissimo
    
    Public Function GeneraFatture()
    
    On Error GoTo Err_GeneraFatture
        
     If MsgBox("Sei sicuro/a di voler" & vbNewLine & "generare le fatture?", vbCritical + vbYesNo, "Genera Fatture?") = vbYes Then
       
      DoCmd.Hourglass True
      Dim genfat As ADODB.Connection
      Set genfat = CurrentProject.Connection
      
      Dim strRptName As String
      strRptName = "RptFatture"
      Dim intNumFattura As Integer
      Dim intAnno As Integer
      Dim strRisposta As String
      
      Dim strCriteria As String
      Dim intIdFattura As Integer
      Dim strQry As String
      Dim strCriteriaQry As String
      Dim strTipoContabilita As String
      
      genfat.BeginTrans
      
      Dim rstdit As ADODB.Recordset
      Dim rstfat As ADODB.Recordset
      Dim rstdetfat As ADODB.Recordset
      Dim rstdetfateme As ADODB.Recordset
      Dim rstFatture As ADODB.Recordset
        
      Set rstdit = New ADODB.Recordset
      Set rstfat = New ADODB.Recordset
      Set rstdetfat = New ADODB.Recordset
      Set rstdetfateme = New ADODB.Recordset
      Set rstFatture = New ADODB.Recordset
      
      rstdit.Open "QryDitteFatture", genfat, adOpenStatic, adLockOptimistic, adCmdTableDirect
      rstfat.Open "TblFatture", genfat, adOpenStatic, adLockOptimistic, adCmdTableDirect
      rstdetfat.Open "TblDettaglioFatture", genfat, adOpenStatic, adLockOptimistic, adCmdTableDirect
      rstdetfateme.Open "TblDettaglioFattureDaEmettere", genfat, adOpenStatic, adLockOptimistic, adCmdTableDirect
      
      intAnno = Year(Date)
      intIdFattura = CalcolaNumFattura()
      strCriteriaQry = "IdFattura >= " & intIdFattura & " And Anno = " & intAnno
      strQry = "SELECT * From QryFAttureDoUntil WHERE " & strCriteriaQry
       
        With rstdit
             If .RecordCount > 0 Then
             intNumFattura = CalcolaNumFattura() - 1
                
              
            Do Until .EOF
        
            If .Fields("NonFatturo") Then
                
                .Fields("NonFatturo") = False
                
                .MoveNext
                
                
            Else
            
                If .Fields("Rid") Then 'Verifica se pagano con la Rid
                    
                    Select Case .Fields("TipoContabilità") '
                        
                        Case "O" 'Contabilità ordinaria
       
                                rstfat.AddNew
                                intNumFattura = intNumFattura + 1
                                rstfat("IdFattura") = intNumFattura
                                rstfat("IdDitta") = .Fields("IdDitta")
                                rstfat("EmessaIl") = Date
                                rstfat("Anno") = intAnno
                                
                                rstfat.Update
                                    
                                 With rstdetfat
                                    
                                     If IsNull(rstdit("Fatture")) Or rstdit("Fatture") = "" Then
                            
                                     Else
                                                                    
                                        .AddNew
                                        .Fields("IdFattura") = intNumFattura
                                        .Fields("IdUnitàMisura") = 1
                                        .Fields("Quantità") = 1
                                        .Fields("Anno") = intAnno
                                        
                                        If Format(Date, "mmmm") = "gennaio" Then
                                            .Fields("Descrizione") = strOrd & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                        Else
                                            .Fields("Descrizione") = strOrd & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                        End If
                                        
                                        .Fields("Importo") = rstdit("Fatture")
                                        .Fields("IdAliquotaIva") = 8
                                        
                                    End If
                                         
                                        
                                        If rstdit("Paghe") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 2
                                                .Fields("Anno") = intAnno
                                                
                                            If Format(Date, "mmmm") = "gennaio" Then
                                                .Fields("Descrizione") = str13 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                .Fields("Quantità") = rstdit("Paghe") * 2
                                             Else
                                                .Fields("Descrizione") = strPag & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                .Fields("Quantità") = rstdit("Paghe")
                                            End If
                                            
                                        .Fields("Importo") = rstdit("QuotaPaghe") '* rstdit("Paghe")
                                        .Fields("IdAliquotaIva") = 8
                      
                                        End If
                                        
                                                         
                                        If rstdit("F24") > 0 Then
                                        
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
                                                
                                            If Format(Date, "mmmm") = "gennaio" Then
                                            
                                                .Fields("Descrizione") = strF24 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                              
                                             Else
                                                .Fields("Descrizione") = strF24 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                
                                            End If
                                            
                                                .Fields("Quantità") = rstdit("F24")
                                                .Fields("Importo") = costof24
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("F24") = 0
       
                                            End If
                                        
                                        If rstdit("Cococo") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 2
                                                .Fields("Anno") = intAnno
                                                
                                                                                            
                                            If Format(Date, "mmmm") = "gennaio" Then
                                            
                                                .Fields("Descrizione") = strCol & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                
                                            Else
                                                .Fields("Descrizione") = strCol & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                
                                            End If
                                            
                                                .Fields("Quantità") = rstdit("Cococo")
                                                .Fields("Importo") = rstdit("QuotaCococo")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Cococo") = 0
                                  
                                        End If
                                        
                                        If rstdit("770") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
                              
                                                .Fields("Descrizione") = str770 & Year(Date)
                       
                                                .Fields("Quantità") = rstdit("770")
                                                .Fields("Importo") = rstdit("Quota770")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("770") = 0
                               
                                        End If
                                    
                                        If rstdit("Inail") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
               
                                                .Fields("Descrizione") = strIna & Year(Date)
                                     
                                                .Fields("Quantità") = rstdit("Inail")
                                                .Fields("Importo") = rstdit("QuotaInail")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Inail") = 0
                           
                                        End If
                                   
                                                                           
                                        If rstdit("Spesometro") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
      
                                                .Fields("Descrizione") = strSpe
                                                
                                           
                                                .Fields("Quantità") = rstdit("Spesometro")
                                                .Fields("Importo") = 50
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Spesometro") = 0
                                   
                                        End If
                                        
                                        If rstdit("Cu") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
                                                
                                                                                            
                                            
                                                .Fields("Descrizione") = strCeu
                                                
                                           
                                                .Fields("Quantità") = rstdit("Cu")
                                                .Fields("Importo") = rstdit("QuotaCu")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Cu") = 0
                                       
                            
                                        End If
                                        
                                        If rstdit("CassaVirtuale") = -1 Then
                                            
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
                                                
                                                                                            
                                            
                                                .Fields("Descrizione") = strIva
                                                
                                           
                                                .Fields("Quantità") = 1
                                                .Fields("Importo") = 40
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("CassaVirtuale") = 0
                                      
                   
                         
                                        End If
                                        
                                      rstdetfateme.Filter = "IdDitta = " & rstdit("IdDitta")
                   
                                      
                                      If rstdetfateme.RecordCount > 0 Then
                                       
                                         Do Until rstdetfateme.EOF
                                         
                                            If rstdetfateme("StopFatturo") Then
                                            
                                            Else
                                            
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("Anno") = intAnno
                                                .Fields("IdUnitàMisura") = rstdetfateme("IdUnitàMisura")
                                                .Fields("Descrizione") = rstdetfateme("Descrizione")
                                                .Fields("Quantità") = rstdetfateme("Quantità")
                                                .Fields("Importo") = rstdetfateme("Importo")
                                                .Fields("IdAliquotaIva") = rstdetfateme("IdAliquotaIva")
                                                                                  
                                                rstdetfateme.Delete
                                       
                                            End If
                                          
                                            rstdetfateme.MoveNext
                                       
                                         Loop
                                       
                                  
                                       
                                      End If
                                       
                                       rstdetfateme.Filter = adFilterNone
                  
                                    .Update
                                                                
                                 End With
                                
                     
                                                    
                        Case "S", "M", "F" 'Tipo di contabilità Semplificata Minimo Forfettario
                        
        
                            Select Case .Fields("Periodo")
                            
                            
                                    Case "M" 'Pagamento mensile
                                    
                                        rstfat.AddNew
                                        intNumFattura = intNumFattura + 1
                                        rstfat("IdFattura") = intNumFattura
                                        
                                            rstfat("IdDitta") = .Fields("IdDitta")
                                            rstfat("EmessaIl") = Date
                                            rstfat("Anno") = intAnno
                                            rstfat.Update
                                    
                                    With rstdetfat
                                            
                                        If IsNull(rstdit("Fatture")) Or rstdit("Fatture") = "" Then
                            
                                        Else
                                                
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("Anno") = intAnno
                                                .Fields("IdUnitàMisura") = 1
                                                .Fields("Quantità") = 1
                                                
                                            
                                                
                                            
                                            Select Case rstdit("TipoContabilità")
                                        
                                            
                                            
                                            Case "S", "M", "F" 'semplificata, minima, forfettaria
                                            
                                                strTipoContabilita = rstdit.Fields("Descrizione")
                                                
                                                If Format(Date, "mmmm") = "gennaio" Then
                                                        .Fields("Descrizione") = strSem & strTipoContabilita & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                    Else
                                                        .Fields("Descrizione") = strSem & strTipoContabilita & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                 End If
                                            
                                                                                                                          
                                            End Select
                                            
                                                .Fields("Importo") = rstdit("Fatture")
                                                .Fields("IdAliquotaIva") = 8
                                            
                                        End If
                                      
                                              
                                            If rstdit("Paghe") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 2
                                                .Fields("Anno") = intAnno
                                                
                                                
                                            If Format(Date, "mmmm") = "gennaio" Then
                                                .Fields("Descrizione") = str13 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                .Fields("Quantità") = rstdit("Paghe") * 2
                                             Else
                                                .Fields("Descrizione") = strPag & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                .Fields("Quantità") = rstdit("Paghe")
                                            End If
                                            
                                        .Fields("Importo") = rstdit("QuotaPaghe") '* rstdit("Paghe")
                                        .Fields("IdAliquotaIva") = 8
                                        
                                      
                                        
                                        End If
            
                                        If rstdit("F24") > 0 Then
                                        
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
                                                
                                            If Format(Date, "mmmm") = "gennaio" Then
                                            
                                                .Fields("Descrizione") = strF24 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                              
                                             Else
                                                .Fields("Descrizione") = strF24 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                
                                            End If
                                            
                                                .Fields("Quantità") = rstdit("F24")
                                                .Fields("Importo") = costof24
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("F24") = 0
       
                                        
                                            End If
                                        
                                        
                                        If rstdit("Cococo") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 2
                                                .Fields("Anno") = intAnno
                                                                                            
                                            If Format(Date, "mmmm") = "gennaio" Then
                                            
                                                .Fields("Descrizione") = strCol & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                
                                            Else
                                                .Fields("Descrizione") = strCol & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                               
                                            End If
                                            
                                                .Fields("Quantità") = rstdit("Cococo")
                                                .Fields("Importo") = rstdit("QuotaCococo")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Cococo") = 0
    
                                        
                                         End If
       
                                         If rstdit("770") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
                                                                                            
                                            
                                                .Fields("Descrizione") = str770 & Year(Date)
                                                
                                           
                                                .Fields("Quantità") = rstdit("770")
                                                .Fields("Importo") = rstdit("Quota770")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("770") = 0
                                       
                                        
                                        End If
                                    
                                        If rstdit("Inail") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
                                                                                            
                                            
                                                .Fields("Descrizione") = strIna & Year(Date)
                  
                                                .Fields("Quantità") = rstdit("Inail")
                                                .Fields("Importo") = rstdit("QuotaInail")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Inail") = 0
                                       
                                        
                                        End If
                                         
                                         If rstdit("Spesometro") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
                           
                                                .Fields("Descrizione") = strSpe
                                                .Fields("Quantità") = rstdit("Spesometro")
                                                .Fields("Importo") = 50
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Spesometro") = 0
                                       
                                        
                                        End If
                                         
                                        If rstdit("Cu") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
                                                
                                                                                            
                                            
                                                .Fields("Descrizione") = strCeu
                                           
                                                .Fields("Quantità") = rstdit("Cu")
                                                .Fields("Importo") = rstdit("QuotaCu")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Cu") = 0
                                       
                                        
                                        End If
                                         
                                         
                                          If rstdit("TipoContabilità") = "S" Then
                                                
                                                If rstdit("CassaVirtuale") = -1 Then
                                            
                                                        .AddNew
                                                        .Fields("IdFattura") = intNumFattura
                                                        .Fields("IdUnitàMisura") = 1
                                                        .Fields("Anno") = intAnno
     
                                                        .Fields("Descrizione") = strCav
    
                                                        .Fields("Quantità") = 1
                                                        .Fields("Importo") = 30
                                                        .Fields("IdAliquotaIva") = 8
                                                        rstdit.Fields("CassaVirtuale") = 0
                                                        
                                              
                              
                                                End If
                                        
                                            
                                            End If
                                            
                                         rstdetfateme.Filter = "IdDitta = " & rstdit("IdDitta")
                     
                                      If rstdetfateme.RecordCount > 0 Then
                                       
                                         Do Until rstdetfateme.EOF
                                         
                                            If rstdetfateme("StopFatturo") Then
                                            
                                            Else
                                            
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("Anno") = intAnno
                                                .Fields("IdUnitàMisura") = rstdetfateme("IdUnitàMisura")
                                                .Fields("Descrizione") = rstdetfateme("Descrizione")
                                                .Fields("Quantità") = rstdetfateme("Quantità")
                                                .Fields("Importo") = rstdetfateme("Importo")
                                                .Fields("IdAliquotaIva") = rstdetfateme("IdAliquotaIva")
                                                                                  
                                                rstdetfateme.Delete
                                       
                                            End If
                                          
                                            rstdetfateme.MoveNext
                                       
                                         Loop
    
                                      End If
                                       
                                       rstdetfateme.Filter = adFilterNone
                                        
                                        .Update
            
                                    End With
                            
                                  
                            
                            Case "T" 'Pagamento trimestrale
                            
                                    If Format(Date, "mmmm") = "gennaio" Or Format(Date, "mmmm") = "aprile" Or Format(Date, "mmmm") = "luglio" Or Format(Date, "mmmm") = "ottobre" Then
                                    
                                        rstfat.AddNew
                                        
                                        intNumFattura = intNumFattura + 1
                                        rstfat("IdFattura") = intNumFattura
                                        rstfat("Anno") = intAnno
                                        
                                            rstfat("IdDitta") = .Fields("IdDitta")
                                            rstfat("EmessaIl") = Date
                                            rstfat.Update
                                            
                                            With rstdetfat
                                                
                                             If IsNull(rstdit("Fatture")) Or rstdit("Fatture") = "" Then
                                    
                                             Else
                                             
                                                .AddNew
                                                    .Fields("IdFattura") = intNumFattura
                                                    .Fields("IdUnitàMisura") = 1
                                                    .Fields("Quantità") = 3
                                                    .Fields("Anno") = intAnno
            
                                              
                                              Select Case rstdit("TipoContabilità")
                                            
                                                Case "S", "M", "F" 'Semplificata, Minima, Forfettaria
                                                
                                                    strTipoContabilita = rstdit.Fields("Descrizione")
                                                    
                                                    Select Case Format(Date, "mmmm")
                                                    
                                                        Case Is = "gennaio"
                                                            .Fields("Descrizione") = strSem & strTipoContabilita & "4° TRIMESTRE " & Year(DateAdd("yyyy", -1, Date))
                                                    
                                                        Case Is = "aprile"
                                                            .Fields("Descrizione") = strSem & strTipoContabilita & "1° TRIMESTRE " & Year(Date)
                                                        
                                                        Case Is = "luglio"
                                                            .Fields("Descrizione") = strSem & strTipoContabilita & "2° TRIMESTRE " & Year(Date)
                                                    
                                                        Case Is = "ottobre"
                                                            .Fields("Descrizione") = strSem & strTipoContabilita & "3° TRIMESTRE " & Year(Date)
                                                        
           
                                                    End Select
                                        
                                                    
                                                End Select
                              
                                                    .Fields("Importo") = rstdit("Fatture")
                                                    .Fields("IdAliquotaIva") = 8
                                        
                                           End If
                                
             
                                                If rstdit("Paghe") > 0 Then
                                                            .AddNew
                                                            .Fields("IdFattura") = intNumFattura
                                                            .Fields("IdUnitàMisura") = 2
                                                            .Fields("Anno") = intAnno
                                                     
                                                        If Format(Date, "mmmm") = "gennaio" Then
                                                            .Fields("Descrizione") = str13 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                            .Fields("Quantità") = rstdit("Paghe") * 2
                                                        Else
                                                            .Fields("Descrizione") = strPag & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                            .Fields("Quantità") = rstdit("Paghe")
                                                        End If
                                                        .Fields("Importo") = rstdit("QuotaPaghe") '* rstdit("Paghe")
                                                        .Fields("IdAliquotaIva") = 8
                                                        
                                               
                                        
                                                End If
                                        
                                          If rstdit("F24") > 0 Then
                                        
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
                                                
                                            If Format(Date, "mmmm") = "gennaio" Then
                                            
                                                .Fields("Descrizione") = strF24 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                              
                                             Else
                                                .Fields("Descrizione") = strF24 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                
                                            End If
                                            
                                                .Fields("Quantità") = rstdit("F24")
                                                .Fields("Importo") = costof24
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("F24") = 0
       
                                            
                                        
                                            End If
                                        
                                        If rstdit("Cococo") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 2
                                                .Fields("Anno") = intAnno
                                                                                            
                                            If Format(Date, "mmmm") = "gennaio" Then
                                            
                                                .Fields("Descrizione") = strCol & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                
                                            Else
                                                .Fields("Descrizione") = strCol & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                
                                            End If
                                            
                                                .Fields("Quantità") = rstdit("Cococo")
                                                .Fields("Importo") = rstdit("QuotaCococo")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Cococo") = 0
                                 
                                        
                                        End If
                                            
                                        If rstdit("770") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
                                                                                            
                                            
                                                .Fields("Descrizione") = str770 & Year(Date)
                                                
                                           
                                                .Fields("Quantità") = rstdit("770")
                                                .Fields("Importo") = rstdit("Quota770")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("770") = 0
                                        
                                        
                                        End If
                                    
                                        If rstdit("Inail") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
                                 
                                                .Fields("Descrizione") = strIna & Year(Date)
                            
                                                .Fields("Quantità") = rstdit("Inail")
                                                .Fields("Importo") = rstdit("QuotaInail")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Inail") = 0
                                       
                                        
                                        End If
                                            
                                            
                                         If rstdit("Spesometro") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
                                  
                                                .Fields("Descrizione") = strSpe
                                      
                                                .Fields("Quantità") = rstdit("Spesometro")
                                                .Fields("Importo") = 50
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Spesometro") = 0
                                     
                                        
                                        End If
                                            
                                        If rstdit("Cu") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
                                                
                                                                                            
                                            
                                                .Fields("Descrizione") = strCeu
                                                
                                           
                                                .Fields("Quantità") = rstdit("Cu")
                                                .Fields("Importo") = rstdit("QuotaCu")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Cu") = 0
                                       
                                        
                                        End If
             
                                        If rstdit("TipoContabilità") = "S" Then
                                                
                                                If rstdit("CassaVirtuale") = -1 Then
                                            
                                                        .AddNew
                                                        .Fields("IdFattura") = intNumFattura
                                                        .Fields("IdUnitàMisura") = 3
                                                        .Fields("Anno") = intAnno
    
                                                        .Fields("Descrizione") = strCav
                                                        
                                                   
                                                        .Fields("Quantità") = 1
                                                        .Fields("Importo") = 30
                                                        .Fields("IdAliquotaIva") = 8
                                                        rstdit.Fields("CassaVirtuale") = 0
                                                       
                                     
                                                
                                                End If
                                      
                                        End If
                         
                                        
                                         rstdetfateme.Filter = "IdDitta = " & rstdit("IdDitta")
    
                                      If rstdetfateme.RecordCount > 0 Then
                                       
                                         Do Until rstdetfateme.EOF
                                         
                                            If rstdetfateme("StopFatturo") Then
                                            
                                            Else
                                            
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("Anno") = intAnno
                                                .Fields("IdUnitàMisura") = rstdetfateme("IdUnitàMisura")
                                                .Fields("Descrizione") = rstdetfateme("Descrizione")
                                                .Fields("Quantità") = rstdetfateme("Quantità")
                                                .Fields("Importo") = rstdetfateme("Importo")
                                                .Fields("IdAliquotaIva") = rstdetfateme("IdAliquotaIva")
                                                                                  
                                                rstdetfateme.Delete
                                       
                                            End If
                                          
                                            rstdetfateme.MoveNext
                                       
                                         Loop
                                       
                                      
                                       
                                      End If
                                       
                                       rstdetfateme.Filter = adFilterNone
                               
                                        .Update
                                        
                                        End With
                                                
                                                    
          Exit_GeneraFatture:
       Exit Function
        
    Err_GeneraFatture:
        
        MsgBox Err.Description
        genfat.RollbackTrans
        genfat.Close
        Set genfat = Nothing
        MsgBox Err.Description
        Resume Exit_GeneraFatture
    
    End Function                 
                            
    
    La routine intera non ci stà neppure nel forum
  • Re: Dimensione Routine troppo grande

    È sbagliato scrivere codice così lungo in una sola funzione/routine. Va riscritta ottimizzandola e suddividendo in parti più piccole. E a prescindere dal fatto che prima funzionasse o no perché in futuro devi comunque poterla modificare/integrare.
  • Re: Dimensione Routine troppo grande

    Condivido in pieno l'osservazione di oregon ma non saprei come aiutarti per il caso concreto, servirebbe parecchio tempo per capire dove agire.

    stevesally ha scritto:


    ...
    La routine intera non ci stà neppure nel forum
    Quella che hai pubblicato, la funzione GeneraFatture non è quindi l'intera routine? Carica un file txt o scrivila in due post separati.
    Ad intuito già qualcosina potrebbe essere migliorato ed altro è un po' dubbioso: quella If iniziale mi tiene con il fiato sospeso fino alla fine! Anzi... dov'è che finisce? non riesco a trovare un End If corrispondente, l'ho perso nelle 800 e passa righe? o è questo che intendevi come il fatto che non ci stava tutto sul forum, l'hai pubblicata parzialmente?
     If MsgBox("Sei sicuro/a di voler" & vbNewLine & "generare le fatture?", vbCritical + vbYesNo, "Genera Fatture?") = vbYes Then
    e parte tutto.
    Per rendere la cosa più "leggera" (ripeto, mi fa stare con il fiato sospeso) e più chiara da leggere, opera al contrario
    If MsgBox("Sei sicuro/a di voler" & vbNewLine & "generare le fatture?", vbCritical + vbYesNo, "Genera Fatture?") = vbNo Then
         Exit Function
    End If
    e poi parti con il codice che deve essere eseguito se la risposta è Yes.

    Hai verificato il resto di quello che ti ho chiesto?
  • Re: Dimensione Routine troppo grande

    Sono assolutamente d'accordo con voi e che per via della transazione e dei recordset in memoria non so come fare a dividere la routine
    Allego il resto della routine
    
                            Else 'Se non è un mese di fatturazione popola la tabella Fatture da Emettere
                                   
                                With rstdetfateme
                                  
                                If rstdit("Paghe") > 0 Then
        
                                        
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 2
                                                                                            
                                            If Format(Date, "mmmm") = "gennaio" Then
                                                .Fields("Descrizione") = str13 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                .Fields("Quantità") = rstdit("Paghe") * 2
                                             Else
                                                .Fields("Descrizione") = strPag & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                .Fields("Quantità") = rstdit("Paghe")
                                            End If
                                            
                                        .Fields("Importo") = rstdit("QuotaPaghe") '* rstdit("Paghe")
                                        .Fields("IdAliquotaIva") = 8
    
                                        
                                  
                                        
                                  End If
                                           
                                            If rstdit("F24") > 0 Then
                                        
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                                                
                                                
                                            If Format(Date, "mmmm") = "gennaio" Then
                                            
                                                .Fields("Descrizione") = strF24 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                              
                                             Else
                                                .Fields("Descrizione") = strF24 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                
                                            End If
                                            
                                                .Fields("Quantità") = rstdit("F24")
                                                .Fields("Importo") = costof24
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("F24") = 0
       
                                        
                                        
                                            End If
                                        
                                            If rstdit("Cococo") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 2
                                                
                                                
                                                                                            
                                            If Format(Date, "mmmm") = "gennaio" Then
                                            
                                                .Fields("Descrizione") = strCol & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                
                                            Else
                                                .Fields("Descrizione") = strCol & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                
                                            End If
                                            
                                                .Fields("Quantità") = rstdit("Cococo")
                                                .Fields("Importo") = rstdit("QuotaCococo")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Cococo") = 0
    
                                            End If
                                        
                                        
                                            If rstdit("770") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                                               
                                                .Fields("Descrizione") = str770 & Year(Date)
                                     
                                                .Fields("Quantità") = rstdit("770")
                                                .Fields("Importo") = rstdit("Quota770")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("770") = 0
                                          
                                        
                                            End If
                                    
                                        If rstdit("Inail") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                                                                                 
                                            
                                                .Fields("Descrizione") = strIna & Year(Date)
                                    
                                                .Fields("Quantità") = rstdit("Inail")
                                                .Fields("Importo") = rstdit("QuotaInail")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Inail") = 0
                                       
                                        
                                        End If
                                        
                                      If rstdit("Spesometro") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                                                                             
                                            
                                                .Fields("Descrizione") = strSpe
                                       
                                                .Fields("Quantità") = rstdit("Spesometro")
                                                .Fields("Importo") = 50
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Spesometro") = 0
                                      
                                        
                                        End If
                                        
                                        If rstdit("Cu") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                                                
                                                                                            
                                            
                                                .Fields("Descrizione") = strCeu
                                                
                                           
                                                .Fields("Quantità") = rstdit("Cu")
                                                .Fields("Importo") = rstdit("QuotaCu")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Cu") = 0
                                     
                                        
                                        End If
                                        
              
                                        If rstdit("TipoContabilità") = "S" Then
                                                
                                                If rstdit("CassaVirtuale") = -1 Then
                                            
                                                        .AddNew
                                                        .Fields("IdDitta") = rstdit("IdDitta")
                                                        .Fields("EmessaIl") = Date
                                                        .Fields("IdUnitàMisura") = 1
                                                        
                                                                                                    
                                                    
                                                        .Fields("Descrizione") = strCav
                                                        
                                                   
                                                        .Fields("Quantità") = 1
                                                        .Fields("Importo") = 30
                                                        .Fields("IdAliquotaIva") = 8
                                                        rstdit.Fields("CassaVirtuale") = 0
                                                
                                                End If
                                      
                                        End If
        
                   
                                        
                                    .Update
                                    End With
                                
                                End If
           
                                
                                End Select
                      
                       
                      Case "P"
                                          
                            
                            Select Case rstdit.Fields("Periodo")
               
                            
                                Case "M" 'Pagamento mensile
                            
                             
                                        If rstdit("Paghe") > 0 Or rstdit("F24") > 0 Or rstdit("Cococo") > 0 Or rstdit("770") > 0 Or rstdit("Inail") > 0 Or rstdit("Cu") > 0 Then
                                                         
                                                         
                                                             rstfat.AddNew
                                                             intNumFattura = intNumFattura + 1
                                                             rstfat("IdFattura") = intNumFattura
                                                             rstfat("IdDitta") = .Fields("IdDitta")
                                                             rstfat("EmessaIl") = Date
                                                             rstfat("Anno") = intAnno
                                                             
                                                             rstfat.Update
                                                             
                                    
                                                             
                                                         With rstdetfat
                                                               
                                                                     If rstdit("Paghe") > 0 Then
                                                                     
                                                                             .AddNew
                                                                             .Fields("IdFattura") = intNumFattura
                                                                             .Fields("IdUnitàMisura") = 2
                                                                             .Fields("Anno") = intAnno
                                 
                                                            
                                                                         
                                                                         If Format(Date, "mmmm") = "gennaio" Then
                                                                             .Fields("Descrizione") = str13 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                                             .Fields("Quantità") = rstdit("Paghe") * 2
                                                                          Else
                                                                             .Fields("Descrizione") = strPag & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                                             .Fields("Quantità") = rstdit("Paghe")
                                                                         End If
                                                                         
                                                                     .Fields("Importo") = rstdit("QuotaPaghe") '* rstdit("Paghe")
                                                                     .Fields("IdAliquotaIva") = 8
                                                                   
                                                                                       '
                                                             End If
                                                             
                                              If rstdit("F24") > 0 Then
          
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
                                                                                        
                                                
                                            If Format(Date, "mmmm") = "gennaio" Then
                                            
                                                .Fields("Descrizione") = strF24 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                              
                                             Else
                                                .Fields("Descrizione") = strF24 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                
                                            End If
                                            
                                                .Fields("Quantità") = rstdit("F24")
                                                .Fields("Importo") = costof24
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("F24") = 0
       
                                            End If
                                        
                                            If rstdit("Cococo") > 0 Then
                                            
                                                
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 2
                                                .Fields("Anno") = intAnno
                                                
                                                
                                                                                            
                                            If Format(Date, "mmmm") = "gennaio" Then
                                            
                                                .Fields("Descrizione") = strCol & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                
                                            Else
                                                .Fields("Descrizione") = strCol & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                
                                            End If
                                            
                                                .Fields("Quantità") = rstdit("Cococo")
                                                .Fields("Importo") = rstdit("QuotaCococo")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Cococo") = 0
                                           
                                        
                                            End If
                                        
                                        
                                            If rstdit("770") > 0 Then
                                            
                                                
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
                                               
                                                .Fields("Descrizione") = str770 & Year(Date)
                                     
                                                .Fields("Quantità") = rstdit("770")
                                                .Fields("Importo") = rstdit("Quota770")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("770") = 0
                                          
                                            End If
                                    
                                        If rstdit("Inail") > 0 Then
                                            
                                                
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
                                                                                 
                                            
                                                .Fields("Descrizione") = strIna & Year(Date)
                                    
                                                .Fields("Quantità") = rstdit("Inail")
                                                .Fields("Importo") = rstdit("QuotaInail")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Inail") = 0
                                       
                                        
                                        End If
                                        
                                      
                                        
                                        If rstdit("Cu") > 0 Then
                                            
                                                
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
                 
                                                .Fields("Descrizione") = strCeu
                                                
                                           
                                                .Fields("Quantità") = rstdit("Cu")
                                                .Fields("Importo") = rstdit("QuotaCu")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Cu") = 0
                                        
                                        End If
                               
                       
                                                              rstdetfateme.Filter = "IdDitta = " & rstdit("IdDitta")
                                                                    
                                                        
                                                                   If rstdetfateme.RecordCount > 0 Then
                                                
                                                                      Do Until rstdetfateme.EOF
                                                   
                                                                         If rstdetfateme("StopFatturo") Then
                                                     
                                                                         Else
                                                       
                                                                             .AddNew
                                                                             .Fields("IdFattura") = intNumFattura
                                                                             .Fields("Anno") = intAnno
                                                                             .Fields("IdUnitàMisura") = rstdetfateme("IdUnitàMisura")
                                                                             .Fields("Descrizione") = rstdetfateme("Descrizione")
                                                                             .Fields("Quantità") = rstdetfateme("Quantità")
                                                                             .Fields("Importo") = rstdetfateme("Importo")
                                                                             .Fields("IdAliquotaIva") = rstdetfateme("IdAliquotaIva")
                                                                                                               
                                                                             rstdetfateme.Delete
                                                                    
                                                                         End If
                                                                       
                                                                         rstdetfateme.MoveNext
                                                                   
                                                                      Loop
                                                                 
                                                                   End If
                                                                    
                                                                    rstdetfateme.Filter = adFilterNone
                                                            
                                                                     .Update
                                                                     
                                                                End With
                                                                                 
                                                          
                                                         End If
                             
                           
                             
                                Case "T" 'Pagamento trimestrale
    
    
                                    If Format(Date, "mmmm") = "gennaio" Or Format(Date, "mmmm") = "aprile" Or Format(Date, "mmmm") = "luglio" Or Format(Date, "mmmm") = "ottobre" Then
    '
    
                                    
                                            If rstdit("Paghe") > 0 Or rstdit("F24") > 0 Or rstdit("Cococo") > 0 Or rstdit("770") > 0 Or rstdit("Inail") > 0 Or rstdit("Cu") > 0 Then
                                    
                                    
                                                rstfat.AddNew
                                                intNumFattura = intNumFattura + 1
                                                rstfat("IdFattura") = intNumFattura
                                                rstfat("IdDitta") = .Fields("IdDitta")
                                                rstfat("EmessaIl") = Date
                                                rstfat("Anno") = intAnno
        
                                                rstfat.Update
    
                                            With rstdetfat
    
                                                  
                                            If rstdit("Paghe") > 0 Then
                                                  
                                                  .AddNew
                                                  .Fields("IdFattura") = intNumFattura
                                                  .Fields("IdUnitàMisura") = 2
                                                  .Fields("Anno") = intAnno
                                            
                                            
                                            
                                            If Format(Date, "mmmm") = "gennaio" Then
                                                          .Fields("Descrizione") = str13 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                          .Fields("Quantità") = rstdit("Paghe") * 2
                                             Else
                                                           .Fields("Descrizione") = strPag & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                           .Fields("Quantità") = rstdit("Paghe")
                                             End If
                                            
                                            
                                                            .Fields("Importo") = rstdit("QuotaPaghe") '* rstdit("Paghe")
                                                            .Fields("IdAliquotaIva") = 8
                                                            .Update
     
                                            End If
                                            
                                            
                                   If rstdit("F24") > 0 Then
                                                
                 
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
                                                                                        
                                                
                                            If Format(Date, "mmmm") = "gennaio" Then
                                            
                                                .Fields("Descrizione") = strF24 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                              
                                             Else
                                                .Fields("Descrizione") = strF24 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                
                                            End If
                                            
                                                .Fields("Quantità") = rstdit("F24")
                                                .Fields("Importo") = costof24
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("F24") = 0
       
                                            
                                            End If
                                        
                                            If rstdit("Cococo") > 0 Then
                                            
                                                
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 2
                                                .Fields("Anno") = intAnno
                                                               
                                            If Format(Date, "mmmm") = "gennaio" Then
                                            
                                                .Fields("Descrizione") = strCol & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                
                                            Else
                                                .Fields("Descrizione") = strCol & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                
                                            End If
                                            
                                                .Fields("Quantità") = rstdit("Cococo")
                                                .Fields("Importo") = rstdit("QuotaCococo")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Cococo") = 0
                                           
                                            End If
                                        
                                        
                                            If rstdit("770") > 0 Then
                                            
                                                
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
                                               
                                                .Fields("Descrizione") = str770 & Year(Date)
                                     
                                                .Fields("Quantità") = rstdit("770")
                                                .Fields("Importo") = rstdit("Quota770")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("770") = 0
                                            
                                            End If
                                    
                                        If rstdit("Inail") > 0 Then
                       
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
                                                                                 
                                            
                                                .Fields("Descrizione") = strIna & Year(Date)
                                    
                                                .Fields("Quantità") = rstdit("Inail")
                                                .Fields("Importo") = rstdit("QuotaInail")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Inail") = 0
                                       
                                        
                                        End If
                                        
                        
                                        If rstdit("Cu") > 0 Then
                                            
                                                
                                                .AddNew
                                                .Fields("IdFattura") = intNumFattura
                                                .Fields("IdUnitàMisura") = 3
                                                .Fields("Anno") = intAnno
    
                                                .Fields("Descrizione") = strCeu
                                                
                                           
                                                .Fields("Quantità") = rstdit("Cu")
                                                .Fields("Importo") = rstdit("QuotaCu")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Cu") = 0
                                        
                                        End If
                    
                                            rstdetfateme.Filter = "IdDitta = " & rstdit("IdDitta")
                                            
                                            
                                            If rstdetfateme.RecordCount > 0 Then
    '
                                                                      Do Until rstdetfateme.EOF
    
                                                        If rstdetfateme("StopFatturo") Then
    
                                                         Else
    
                                                                             .AddNew
                                                                             .Fields("IdFattura") = intNumFattura
                                                                             .Fields("Anno") = intAnno
                                                                             .Fields("IdUnitàMisura") = rstdetfateme("IdUnitàMisura")
                                                                             .Fields("Descrizione") = rstdetfateme("Descrizione")
                                                                             .Fields("Quantità") = rstdetfateme("Quantità")
                                                                             .Fields("Importo") = rstdetfateme("Importo")
                                                                             .Fields("IdAliquotaIva") = rstdetfateme("IdAliquotaIva")
    
                                                                             rstdetfateme.Delete
    
                                                          End If
    
                                                                         rstdetfateme.MoveNext
    
                                                                      Loop
    
                                                          End If
                                            
                           
                                            
                                                                    rstdetfateme.Filter = adFilterNone
                                                                    .Update
                                            
    
                                            
                                            End With
                                            
                            
                                            End If
                                    
                                    
                      
                                    Else
    
                                            With rstdetfateme
                                  
                                            If rstdit("Paghe") > 0 Or rstdit("F24") > 0 Or rstdit("Cococo") > 0 Or rstdit("770") > 0 Or rstdit("Inail") > 0 Or rstdit("Cu") > 0 Then
                        
                                        
                                        If rstdit("Paghe") > 0 Then
                                        
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 2
                                                                                            
                                            If Format(Date, "mmmm") = "gennaio" Then
                                                .Fields("Descrizione") = str13 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                .Fields("Quantità") = rstdit("Paghe") * 2
                                             Else
                                                .Fields("Descrizione") = strPag & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                .Fields("Quantità") = rstdit("Paghe")
                                            End If
                                            
                                        .Fields("Importo") = rstdit("QuotaPaghe") '* rstdit("Paghe")
                                        .Fields("IdAliquotaIva") = 8
    
                                        End If
                                        
                                             If rstdit("F24") > 0 Then
                                        
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                                                
                                                
                                            If Format(Date, "mmmm") = "gennaio" Then
                                            
                                                .Fields("Descrizione") = strF24 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                              
                                             Else
                                                .Fields("Descrizione") = strF24 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                
                                            End If
                                            
                                                .Fields("Quantità") = rstdit("F24")
                                                .Fields("Importo") = costof24
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("F24") = 0
       
                                            End If
                                        
                                            If rstdit("Cococo") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 2
                                                
                                                
                                                                                            
                                            If Format(Date, "mmmm") = "gennaio" Then
                                            
                                                .Fields("Descrizione") = strCol & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                
                                            Else
                                                .Fields("Descrizione") = strCol & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                
                                            End If
                                            
                                                .Fields("Quantità") = rstdit("Cococo")
                                                .Fields("Importo") = rstdit("QuotaCococo")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Cococo") = 0
                                                                           
                                            End If
                                        
                                        
                                            If rstdit("770") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                                               
                                                .Fields("Descrizione") = str770 & Year(Date)
                                     
                                                .Fields("Quantità") = rstdit("770")
                                                .Fields("Importo") = rstdit("Quota770")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("770") = 0
                                                                  
                                            End If
                                    
                                        If rstdit("Inail") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                                                                                 
                                            
                                                .Fields("Descrizione") = strIna & Year(Date)
                                    
                                                .Fields("Quantità") = rstdit("Inail")
                                                .Fields("Importo") = rstdit("QuotaInail")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Inail") = 0
                                    
                                        End If
                                        
                                      
                                        
           
    
    Stefano
  • Re: Dimensione Routine troppo grande

    Ecco la fine della routine
    
                                 If rstdit("Cu") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                                                
                                                                                            
                                            
                                                .Fields("Descrizione") = strCeu
                                                
                                           
                                                .Fields("Quantità") = rstdit("Cu")
                                                .Fields("Importo") = rstdit("QuotaCu")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Cu") = 0
                                   
                                        
                                        End If
                                        
        
                                        
                                  End If
                                    
                                   End With
                                                       
                                    End If
                                    
                        
                             End Select
                  
                  
                        End Select
                    
            Else ' Senza Rid
                    
                    Select Case .Fields("TipoContabilità")
                        Case "O"
                                                                                 
                                 With rstdetfateme
                                    
                                    If IsNull(rstdit("Fatture")) Or rstdit("Fatture") = "" Then
                            
                                     Else
                                    .AddNew
                                        .Fields("IdDitta") = rstdit("IdDitta")
                                        .Fields("EmessaIl") = Date
                                        .Fields("IdUnitàMisura") = 1
                                        .Fields("Quantità") = 1
                                        
                                        If Format(Date, "mmmm") = "gennaio" Then
                                            .Fields("Descrizione") = strOrd & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                        Else
                                            .Fields("Descrizione") = strOrd & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                        End If
                                        
                                        .Fields("Importo") = rstdit("Fatture")
                                        .Fields("IdAliquotaIva") = 8
                                        
                                     End If
                                     
                                        If rstdit("Paghe") > 0 Then
                                            .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 2
                                                
                                            If Format(Date, "mmmm") = "gennaio" Then
                                                .Fields("Descrizione") = str13 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                .Fields("Quantità") = rstdit("Paghe") * 2
                                             Else
                                                .Fields("Descrizione") = strPag & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                .Fields("Quantità") = rstdit("Paghe")
                                            End If
                                        .Fields("Importo") = rstdit("QuotaPaghe") '* rstdit("Paghe")
                                        .Fields("IdAliquotaIva") = 8
                                      
                                        
                                        End If
                                        
                                        If rstdit("F24") > 0 Then
                                        
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                                                
                                            If Format(Date, "mmmm") = "gennaio" Then
                                            
                                                .Fields("Descrizione") = strF24 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                              
                                             Else
                                                .Fields("Descrizione") = strF24 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                
                                            End If
                                            
                                                .Fields("Quantità") = rstdit("F24")
                                                .Fields("Importo") = costof24
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("F24") = 0
       
                                        
                                            End If
                             
                                        If rstdit("Cococo") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 2
                                                
                                                                                            
                                            If Format(Date, "mmmm") = "gennaio" Then
                                            
                                                .Fields("Descrizione") = strCol & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                
                                            Else
                                                .Fields("Descrizione") = strCol & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                
                                            End If
                                            
                                                .Fields("Quantità") = rstdit("Cococo")
                                                .Fields("Importo") = rstdit("QuotaCococo")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Cococo") = 0
                                     
                                        
                                        End If
     
                                        If rstdit("770") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                             
                                                .Fields("Descrizione") = str770 & Year(Date)
                                    
                                                .Fields("Quantità") = rstdit("770")
                                                .Fields("Importo") = rstdit("Quota770")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("770") = 0
                                      
                                        
                                            End If
                                    
                                        If rstdit("Inail") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                          
                                                .Fields("Descrizione") = strIna & Year(Date)
                                 
                                                .Fields("Quantità") = rstdit("Inail")
                                                .Fields("Importo") = rstdit("QuotaInail")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Inail") = 0
                                      
                                        
                                        End If
                                        
                                      If rstdit("Spesometro") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                  
                                                .Fields("Descrizione") = strSpe
                               
                                                .Fields("Quantità") = rstdit("Spesometro")
                                                .Fields("Importo") = 50
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Spesometro") = 0
                                      
                                        
                                        End If
                                        
                                        If rstdit("Cu") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                  
                                                .Fields("Descrizione") = strCeu
                                                
                                           
                                                .Fields("Quantità") = rstdit("Cu")
                                                .Fields("Importo") = rstdit("QuotaCu")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Cu") = 0
                                       
                                        
                                        End If
                                        
                
                                                                      
                                                If rstdit("CassaVirtuale") = -1 Then
                                                
                                            
                                                        .AddNew
                                                        .Fields("IdDitta") = rstdit("IdDitta")
                                                        .Fields("EmessaIl") = Date
                                                        .Fields("IdUnitàMisura") = 1
                                                        
                                                                                                    
                                                    
                                                        .Fields("Descrizione") = strIva
                                                        
                                                   
                                                        .Fields("Quantità") = 1
                                                        .Fields("Importo") = 40
                                                        .Fields("IdAliquotaIva") = 8
                                                        rstdit.Fields("CassaVirtuale") = 0
                                                        
                                              
                                                End If
                                       
                                        
                                    .Update
                                End With
                                
                        Case "S", "M", "F"
                        
                            If Format(Date, "mmmm") = "gennaio" Or Format(Date, "mmmm") = "aprile" Or Format(Date, "mmmm") = "luglio" Or Format(Date, "mmmm") = "ottobre" Then
                                
                                With rstdetfateme
                                
                                 If IsNull(rstdit("Fatture")) Or rstdit("Fatture") = "" Then
                            
                                     Else
                                     
                                        .AddNew
                                            .Fields("IdDitta") = rstdit("IdDitta")
                                            .Fields("EmessaIl") = Date
                                            .Fields("IdUnitàMisura") = 1
                                            .Fields("Quantità") = 3
            
                                            Select Case rstdit("TipoContabilità")
                                            
                                                Case "S", "M", "F" 'Semplificata, Minima, Forfettaria
                                                
                                                    strTipoContabilita = rstdit.Fields("Descrizione")
                                                    
                                                    Select Case Format(Date, "mmmm")
                                                    
                                                        Case Is = "gennaio"
                                                            .Fields("Descrizione") = strSem & strTipoContabilita & "4° TRIMESTRE " & Year(DateAdd("yyyy", -1, Date))
                                                    
                                                        Case Is = "aprile"
                                                            .Fields("Descrizione") = strSem & strTipoContabilita & "1° TRIMESTRE " & Year(Date)
                                                        
                                                        Case Is = "luglio"
                                                            .Fields("Descrizione") = strSem & strTipoContabilita & "2° TRIMESTRE " & Year(Date)
                                                    
                                                        Case Is = "ottobre"
                                                            .Fields("Descrizione") = strSem & strTipoContabilita & "3° TRIMESTRE " & Year(Date)
                                                        
                                                     
                                                        
                                                    End Select
           
                                                    
                                                End Select
                              
                                                    .Fields("Importo") = rstdit("Fatture")
                                                    .Fields("IdAliquotaIva") = 8
                                        
                                           End If
                                            
    
                                            
                                            .Fields("Importo") = rstdit("Fatture")
                                            .Fields("IdAliquotaIva") = 8
                                            .Update
                                            
                                  '   End If
                                            
                                                If rstdit("Paghe") > 0 Then
                                                
                                                    .AddNew
                                                    .Fields("IdDitta") = rstdit("IdDitta")
                                                    .Fields("EmessaIl") = Date
                                                    .Fields("IdUnitàMisura") = 2
                                                    
                                                If Format(Date, "mmmm") = "gennaio" Then
                                                    .Fields("Descrizione") = str13 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                    .Fields("Quantità") = rstdit("Paghe") * 2
                                                Else
                                                    .Fields("Descrizione") = strPag & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                    .Fields("Quantità") = rstdit("Paghe")
                                                End If
                                                .Fields("Importo") = rstdit("QuotaPaghe") '* rstdit("Paghe")
                                                .Fields("IdAliquotaIva") = 8
                                       
                                        
                                            End If
                                            
                                                If rstdit("F24") > 0 Then
                                        
                                                    .AddNew
                                                    .Fields("IdDitta") = rstdit("IdDitta")
                                                    .Fields("EmessaIl") = Date
                                                    .Fields("IdUnitàMisura") = 3
                                                
                                                    If Format(Date, "mmmm") = "gennaio" Then
                                            
                                                        .Fields("Descrizione") = strF24 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                              
                                                    Else
                                                        .Fields("Descrizione") = strF24 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                
                                                 End If
                                            
                                                .Fields("Quantità") = rstdit("F24")
                                                .Fields("Importo") = costof24
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("F24") = 0
       
                                    
                                                 End If
                                            
                                            If rstdit("Cococo") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 2
                                                
                                                                                            
                                            If Format(Date, "mmmm") = "gennaio" Then
                                            
                                                .Fields("Descrizione") = strCol & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                
                                            Else
                                                .Fields("Descrizione") = strCol & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                
                                            End If
                                            
                                                .Fields("Quantità") = rstdit("Cococo")
                                                .Fields("Importo") = rstdit("QuotaCococo")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Cococo") = 0
                                        
                                        End If
                                            
                                            If rstdit("770") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                                 
                                               .Fields("Descrizione") = str770 & Year(Date)
                                  
                                                .Fields("Quantità") = rstdit("770")
                                                .Fields("Importo") = rstdit("QuotaCococo")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("770") = 0
                                            
                                            End If
                                    
                                        If rstdit("Inail") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                                      
                                                .Fields("Descrizione") = strIna & Year(Date)
                         
                                                .Fields("Quantità") = rstdit("Inail")
                                                .Fields("Importo") = rstdit("QuotaInail")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Inail") = 0
                                       
                                        
                                        End If
                                            
                                         If rstdit("Spesometro") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                      
                                                .Fields("Descrizione") = strSpe
                   
                                                .Fields("Quantità") = rstdit("Spesometro")
                                                .Fields("Importo") = 50
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Spesometro") = 0
                                      
                                        
                                        End If
                                            
                                        If rstdit("Cu") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                                                
                               
                                                .Fields("Descrizione") = strCeu
                                                
                                           
                                                .Fields("Quantità") = rstdit("Cu")
                                                .Fields("Importo") = rstdit("QuotaCu")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Cu") = 0
                              
                                        End If
                                            
                                              If rstdit("TipoContabilità") = "S" Then
                                              
                                              
                                              
                                                        .AddNew
                                                        .Fields("IdDitta") = rstdit("IdDitta")
                                                        .Fields("EmessaIl") = Date
                                                        .Fields("IdUnitàMisura") = 1
                                                        .Fields("Quantità") = 1
                                                        .Fields("IdAliquotaIva") = 8
                                                
                                                If rstdit("CassaVirtuale") = -1 Then
                                            
                                                                                     
                                                        .Fields("Descrizione") = strCav
                                                        .Fields("Importo") = 30
         
                                                        
                                                Else
    
                                                        .Fields("Descrizione") = strPrn
                                                        .Fields("Importo") = 50
                                                        
                                          
                                                
                                                End If
                                       
                                       rstdit.Fields("CassaVirtuale") = 0
                                            
                                        End If
          
                                        .Update
                                 End With
                            Else
                            
                              With rstdetfateme
                        
                                If rstdit("Paghe") > 0 Then
                                   
                                        .AddNew
                                        .Fields("IdDitta") = rstdit("IdDitta")
                                        .Fields("EmessaIl") = Date
                                        .Fields("IdUnitàMisura") = 1
                                       
                                        If Format(Date, "mmmm") = "gennaio" Then
                                                .Fields("Descrizione") = str13 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                .Fields("Quantità") = rstdit("Paghe") * 2
                                        Else
                                                .Fields("Descrizione") = strPag & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                .Fields("Quantità") = rstdit("Paghe")
                                        End If
                                                 .Fields("Importo") = rstdit("QuotaPaghe") '* rstdit("Paghe")
                                                 .Fields("IdAliquotaIva") = 8
                                                 
                                                                                                    
                            
                                End If
                                
                                If rstdit("F24") > 0 Then
                                        
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                                                
                                            If Format(Date, "mmmm") = "gennaio" Then
                                            
                                                .Fields("Descrizione") = strF24 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                              
                                             Else
                                                .Fields("Descrizione") = strF24 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                
                                            End If
                                            
                                                .Fields("Quantità") = rstdit("F24")
                                                .Fields("Importo") = costof24
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("F24") = 0
       
                                    
                                        
                                            End If
                                
                                        If rstdit("Cococo") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 2
                                                
                                                                                            
                                            If Format(Date, "mmmm") = "gennaio" Then
                                            
                                                .Fields("Descrizione") = strCol & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                
                                            Else
                                                .Fields("Descrizione") = strCol & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                
                                            End If
                                            
                                                .Fields("Quantità") = rstdit("Cococo")
                                                .Fields("Importo") = rstdit("QuotaCococo")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Cococo") = 0
                                   
                                        
                                        End If
                                        
                                        If rstdit("770") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                               
                                                .Fields("Descrizione") = str770 & Year(Date)
                                                
                                           
                                                .Fields("Quantità") = rstdit("770")
                                                .Fields("Importo") = rstdit("Quota770")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("770") = 0
                                          
                                        
                                            End If
                                    
                                        If rstdit("Inail") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                                        
                                                .Fields("Descrizione") = strIna & Year(Date)
                                                
                                           
                                                .Fields("Quantità") = rstdit("Inail")
                                                .Fields("Importo") = rstdit("QuotaInail")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Inail") = 0
                                        
                                        
                                        End If
                                        
                                         If rstdit("Spesometro") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                                            
                                                .Fields("Descrizione") = strSpe
      
                                                .Fields("Quantità") = rstdit("Spesometro")
                                                .Fields("Importo") = 50
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Spesometro") = 0
                                    
                                        
                                        End If
                               
                                        If rstdit("Cu") > 0 Then
                                            
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 3
                                                
                    
                                                .Fields("Descrizione") = strCeu
                                                
                                           
                                                .Fields("Quantità") = rstdit("Cu")
                                                .Fields("Importo") = rstdit("QuotaCu")
                                                .Fields("IdAliquotaIva") = 8
                                                rstdit.Fields("Cu") = 0
                                      
                                        
                                        End If
                                        
                                        
                                If rstdit("TipoContabilità") = "S" Then
                                                
                                                        .AddNew
                                                        .Fields("IdDitta") = rstdit("IdDitta")
                                                        .Fields("EmessaIl") = Date
                                                        .Fields("IdUnitàMisura") = 1
                                                        .Fields("Quantità") = 1
                                                        .Fields("IdAliquotaIva") = 8
                                                        
                                                If rstdit("CassaVirtuale") = -1 Then
                                               
                                                    
                                                        .Fields("Descrizione") = strCav
                                                        
        
                                                        .Fields("Importo") = 30
                                                    
                                                        
                                                Else
                 
                                                        .Fields("Descrizione") = strPrn
                                                        
                                                        .Fields("Importo") = 5
    
                                                End If
                             
                                            
                                                rstdit.Fields("CassaVirtuale") = 0
                                            
                                            
                                            
                                 End If
                       
                                        
                            .Update
                            End With
                        
                            End If
                            
                         Case "P"
                                          
                            If rstdit("Paghe") > 0 Then
                            
                            
                                           With rstdetfateme
                                
                                                .AddNew
                                                .Fields("IdDitta") = rstdit("IdDitta")
                                                .Fields("EmessaIl") = Date
                                                .Fields("IdUnitàMisura") = 2
                                                                                            
                                            If Format(Date, "mmmm") = "gennaio" Then
                                                .Fields("Descrizione") = str13 & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(DateAdd("yyyy", -1, Date))
                                                .Fields("Quantità") = rstdit("Paghe") * 2
                                             Else
                                                .Fields("Descrizione") = strPag & UCase(Format(DateAdd("m", -1, (Date)), "mmmm")) & " " & Year(Date)
                                                .Fields("Quantità") = rstdit("Paghe")
                                            End If
                                            
                                        .Fields("Importo") = rstdit("QuotaPaghe") '* rstdit("Paghe")
                                        .Fields("IdAliquotaIva") = 8
                                
                                End With
                                                    
                             End If
                         
                      
                     
                        End Select
                    
                    
                End If
            
                .MoveNext
                
            End If
                Loop
              
             
              End If
        
            .Close
        End With
     
        genfat.CommitTrans
        
    rstFatture.Open strQry, genfat, adOpenStatic, adLockOptimistic, adCmdTableDirect
        Do Until rstFatture.EOF
            
            intNumFattura = rstFatture.Fields("IdFattura")
            strCriteria = "IdFattura = " & intNumFattura & " AND Anno = " & intAnno
            GeneraFatturaElettronica (strCriteria)
            rstFatture.Fields("FatturaElettronica") = True
        rstFatture.MoveNext
        Loop
        
         Set rstdit = Nothing
         Set rstfat = Nothing
         Set rstdetfat = Nothing
         Set rstdetfateme = Nothing
    
    
         genfat.Close
         Set genfat = Nothing
         
         DoCmd.Hourglass False
         
         strRisposta = MsgBox("Fatture Generate", vbInformation, "Risultato")
    
        
    End If
    
    Exit_GeneraFatture:
       Exit Function
        
    Err_GeneraFatture:
        
        MsgBox Err.Description
        genfat.RollbackTrans
        genfat.Close
        Set genfat = Nothing
        MsgBox Err.Description
        Resume Exit_GeneraFatture
    
    End Function
    
    
    
  • Re: Dimensione Routine troppo grande

    Ho verificato ma non mi pare ci siano riferimenti a librerie mancanti o altro è proprio la routine che è troppo grossa

    Stefano
  • Re: Dimensione Routine troppo grande

    Non riesco a carica il file txt della routine c'è modo?

    Stefano
  • Re: Dimensione Routine troppo grande

    Utilizza un sito di sharing gratuito o dropbox
  • Re: Dimensione Routine troppo grande

    stevesally ha scritto:


    Ecco la fine della routine
    Sì, si tratta di una routine un po' fuori dall'ordinario. Confermo che dà pure a me l'errore di routine troppo lunga (Access/Office365)
    La leggenda narra che siano questi i limiti
    Max 1,024 characters per line.
    Max 6,601 lines per procedure.
    Max 65,545 lines per module.
    Max 1,000 modules per database.
    Fonti https://bytes.com/topic/access/answers/810804-code-module-size-limits e https://www.accessforums.net/showthread.php?t=49456&p=259484#post259484 ma non si citano mai fonti Microsoft. L'autore dell'intervento del primo link specifica che è per i file di Access / jet 4.0, non si parla del formato accdb (che si appoggia ad ACE) ma dire che si sono ridotti i limiti massimi è un po' un azzardo. O forse hanno ritenuto proprio che quei limiti fossero esorbitanti per codice fatto bene? Per quanto ne so è un azzardo pure questo. Fine dei commenti personali.
    Nel tuo caso non credo si rientri in nessuna di quelle situazioni, ammesso che questa routine sia l'unica presente in un modulo. Dico questo perché vedo che usi variabili non dichiarate (ho fatto il debug con Option Explict all'inizio del modulo ed erano una dietro l'altra). Sono forse dichiarate a livello di modulo e quindi c'è dell'altro?
    In generale dichiara sempre tutte le variabili e in questo Option Explicit ad inizio modulo è una garanzia.
    Il motivo per cui in passato non ci siano state storie è quasi impossibile da identificare.
    Fai di necessità virtù e riscrivi tutto ben bene.
  • Re: Dimensione Routine troppo grande

    Hai ragione bisogna fare di necessità virtù

    Sicuramente è strano che una versione più nuova abbia limiti più piccoli di solito è il contrario

    Comunque mi chiedevo se provassi (anche se sicuramente è una soluzione poco elegante) a fare delle sub richiamate con gosub contenute nella stessa routine dove mettere le parti ripetitive?

    non sparatemi
    Stefano
  • Re: Dimensione Routine troppo grande

    Ah naturalmente option explicit è all'inizio del modulo che contiene altre routine
  • Re: Dimensione Routine troppo grande

    Per avere informazioni aggiuntive sull'errore di compilazione "Routine troppo grande" si possono leggere i link forniti da una ricerca con la dizione dell'errore in inglese ("Compile Error: Procedure too large") ove oltre alle motivazioni (che sono alla base) si cerca di fornire indicazioni per superare l'impedimento:

    https://docs.microsoft.com/en-us/office/troubleshoot/office/compile-error-procedure-too-large
    https://answers.microsoft.com/en-us/msoffice/forum/all/vba-error-msg-procedure-too-large/cab53fbf-bb60-4e94-bbf1-a78059c3ed10
    https://www.access-programmers.co.uk/forums/showthread.php?t=242639
    http://www.vbforums.com/showthread.php?670311-RESOLVED-Procedure-too-large
    https://www.youtube.com/watch?reload=9&v=EeSiHSpwm0
Devi accedere o registrarti per scrivere nel forum
20 risposte