+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Problema su transazione VB.

  1. #1
    L'avatar di maximum
    maximum non è in linea Scolaretto
    Ho una funzionalità con due cicli.
    Nel primo leggo tutti i record di una tabella, la cui chiave primaria è presente su un'altra tabella (<> 0), ed eseguo tutte le mie operazioni di cancellazione.

    Nel secondo leggo tutti i record che non vengono presi dal primo ciclo in cui la colonna della tabella secondaria, per intenderci è uguale a 0 (zero), ed eseguo tutte le mie operazioni di cancellazione.

    Il problema nasce in questo secondo ciclo e precisamente sull'istruzione RS.MoveNext.
    Dopo le prima tre iterazioni, quando mi sposto avanti sul recordset, la mia funzionalità va in errore e mi ritorna il messaggio:

    -2147467259  record eliminato
    
    Il fatto è che pur avendo debuggato il codice ed avere estrapolato le query, non risulta nulla che porti a questo tipo di errore, nè tantomeno il codice di errore che mi ritorna il client, mi dice granchè.

    Ho provato anche a commentare l'intero primo ciclo, pensando che l'errore potesse derivare da questo, ma niente, continua a permanere.

    Qualcuno mi sa dare una dritta? Sono due giorni che ci sbatto senza venirne a capo.

    Grazie anticipatamente.
    Ultima modifica di maximum; 20-05-2009 09:12 

  2. #2
    L'avatar di spikexx84
    spikexx84 non è in linea Scribacchino
    Ciao

    Probabilmente è perchè stai cancellando l'ultimo record del recordset e questo "finisce" quindi ottieni quell errore, mi spiego meglio con un esempio

    Do While Not(rs.eof)
     
      'Ammettiamo di essere all ultimo record del recordset
      if rs(0) = 0 then 
        'Ammettiamo che l'ultimo record debba essere eliminato quindi qui entra 
        rs.delete
        'Eliminazione avvenuta quindi rs.eof = True
      end if 
     
      'Ovviamente non si può fare rs.movenext su un recordset finito.....
      rs.movenext 
     
    Loop
    

    Comunque questa è ovviamente solo un ipotesi perchè manca il CODICEEEEEEEEEEEEE della tua funzione, come facciamo noi a dirti dov'è il problema se non possiamo vedere il codice?

    Un pò mi sorprendi maximum è tanto che frequenti il forum su, passi un niubbo che fa queste cose ma non uno che frequenta da cosi tanto....

    Un altra domanda, se è capito giusto quello che vuoi fare, ripeto senza codice è difficile capire (Muhahahahah ti perseguiterò in eterno per questo), perchè usi due cicli e non due query di eliminazione diretta?

    cn.Execute "Delete * From Tabella1 Where " & s_condizioni
    cn.Execute "Delete * From Tabella2 Where IdTabella1 = 0"
    
    Facci sapere....
    ℹ️ Leggi di più su spikexx84 ...

  3. #3
    L'avatar di maximum
    maximum non è in linea Scolaretto
    Non ho postato il codice da subito, in quanto troppo lungo comunque lo posto adesso.

    Premessa: non sono all'ultimo record...la mia query estrae 22 record e il problema mi si presenta quando tento di avanzare sul quarto record.

    Ecco il codice:

        strSql = "SELECT Id_Documento, Num_Documento, Data_Documento, Stato_Fattura, " & _
                 "       Id_Cliente, Id_Congresso " & _
                 "  FROM Documento " & _
                 " WHERE Tipo_Documento = 'F' " & _
                 "   AND Mid(Data_Documento, 7, 4) = '" & vAnno & "' " & _
                 "   AND Id_Consuntivo = 0 "
        Set RS = Db.Execute(strSql)
    
        If Not RS.EOF Then
            Do While Not RS.EOF
                 'Qui eseguo le mie operazioni di cancellazione
                 RS.MoveNext
            Loop
        End If
        RS.Close
        Set RS = Nothing
    
    Non vedo cose strane...

  4. #4
    L'avatar di spikexx84
    spikexx84 non è in linea Scribacchino
    Quote Originariamente inviato da maximum Visualizza il messaggio
    Non vedo cose strane...
    Neanchio, quindi molto probabilmente l errore (o l'eccezzione) è nella parte di codice che non hai mostrato sostituendola con un commento.

    Posta tutto il codice se no non possiamo aiutarti maximum, sarà mica un segreto di stato no?
    ℹ️ Leggi di più su spikexx84 ...

  5. #5
    L'avatar di maximum
    maximum non è in linea Scolaretto
    Auguri!!!

    Eccolo qua:

        strSql = "SELECT Id_Documento, Num_Documento, Data_Documento, Stato_Fattura, " & _
                 "       Id_Cliente, Id_Congresso " & _
                 "  FROM Documento " & _
                 " WHERE Tipo_Documento = 'F' " & _
                 "   AND Mid(Data_Documento, 7, 4) = '" & vAnno & "' " & _
                 "   AND Id_Consuntivo = 0 "
        Set RS = Db.Execute(strSql)
    
        If Not RS.EOF Then
            Do While Not RS.EOF
                'Mi conservo i dati in lettura della Fattura
                vIdDocumentoSvecc = RS(0)
                vNumDocumentoSvecc = RS(1)
                vDataDocumentoSvecc = RS(2)
                vClienteDocumentoSvecc = RS(4)
                vCongressoDocumentoSvecc = RS(5)
    
                'La Fattura è  PAGATA
                If RS(3) = "P" Then
                    ' - Recupero il Nome del Congresso
                    strSql = "SELECT c.Titolo_Congresso " & _
                             "  FROM Congresso c, Documento d " & _
                             " WHERE c.Id_Congresso = d.Id_Congresso " & _
                             "   AND d.Id_Documento = " & vIdDocumentoSvecc
                    Set RS2 = Db.Execute(strSql)
                    If Not RS2.EOF Then
                        strCongresso = Replace(replicaChrInvalidi(RS2(0)), " ", "_")
                    End If
                    RS2.Close
                    Set RS2 = Nothing
    
                    'Cancellazione di:
                    ' - Fattura definitiva (eventuale/i Excel di questa)
                    If Not cancellaFatturaCliente(strCongresso, vAnno, _
                                                  vIdDocumentoSvecc, vNumDocumentoSvecc, _
                                                  vDataDocumentoSvecc) Then
                        GoTo Error
                    End If
                    ' - Materiali a Noleggio della Fattura definitiva (eventuale/i Excel di questi)
                    If Not cancellaNoleggiFatturaCliente(strCongresso, vAnno, _
                                                         vIdDocumentoSvecc, vNumDocumentoSvecc, _
                                                         vDataDocumentoSvecc) Then
                        GoTo Error
                    End If
    
                    ' - Note di Credito (eventuale/i Excel di questa)
                    ' - Lettura del Raccordo Fattura <--> Note di Credito
                    strSql = "SELECT Id_NotaCredito " & _
                             "  FROM Fattura_NotaCredito " & _
                             " WHERE Id_Fattura = " & vIdDocumentoSvecc
                    Set RS2 = Db.Execute(strSql)
    
                    If Not RS2.EOF Then
                        Do While Not RS2.EOF
                            ' - Leggo Numero e Data della Nota di Credito
                            strSql = "SELECT Id_Documento, Num_Documento, Data_Documento " & _
                                     "  FROM Documento " & _
                                     " WHERE Tipo_Documento = 'NC' " & _
                                     "   AND Id_Documento = " & RS2(0)
                            Set RS3 = Db.Execute(strSql)
    
                            If Not RS3.EOF Then
                                'Mi conservo i dati in lettura della Nota di Credito
                                vIdNCSvecc = RS3(0)
                                vNumNCSvecc = RS3(1)
                                vDataNCSvecc = RS3(2)
    
                                ' - Cancello la Nota di Credito
                                If Not cancellaNoteCreditoDaFattCliente(strCongresso, vAnno, _
                                                                        vIdNCSvecc, vNumNCSvecc, _
                                                                        vDataNCSvecc, vNumDocumentoSvecc, _
                                                                        vDataDocumentoSvecc) Then
                                    GoTo Error
                                End If
                                ' - Cancello i Materiali a Noleggio delle Note di Credito (eventuale/i Excel di questa)
                                If Not cancellaNoleggiNoteCreditoDaFattCliente(strCongresso, vAnno, _
                                                                               vIdNCSvecc, vNumNCSvecc, _
                                                                               vDataNCSvecc, vNumDocumentoSvecc, _
                                                                               vDataDocumentoSvecc) Then
                                    GoTo Error
                                End If
                            End If
                            RS3.Close
                            Set RS3 = Nothing
                            RS2.MoveNext
                        Loop
                    End If
                    RS2.Close
                    Set RS2 = Nothing
    
                    ' - Leggo Numero e Data del Preventivo legato alla Fattura
                    strSql = "SELECT Id_Documento, Num_Documento, Data_Documento " & _
                             "  FROM Documento " & _
                             " WHERE Tipo_Documento = 'P' " & _
                             "   AND Id_Cliente = " & vClienteDocumentoSvecc & _
                             "   AND Id_Congresso = " & vCongressoDocumentoSvecc
                    Set RS2 = Db.Execute(strSql)
    
                    If Not RS2.EOF Then
                        'Mi conservo i dati in lettura del Preventivo
                        vIdPrevSvecc = RS2(0)
                        vNumPrevSvecc = RS2(1)
                        vDataPrevSvecc = RS2(2)
    
                        ' - Preventivo legato alla Fattura (eventuale/i Excel di questa)
                        If Not cancellaPreventivoDaFattCliente(strCongresso, vAnno, _
                                                               vIdPrevSvecc, vNumPrevSvecc, _
                                                               vDataPrevSvecc, vNumDocumentoSvecc, _
                                                               vDataDocumentoSvecc) Then
                            GoTo Error
                        End If
                        ' - Materiali a Noleggio del Preventivo (eventuale/i Excel di questa)
                        If Not cancellaNoleggiPreventivoDaFattCliente(strCongresso, vAnno, _
                                                                      vIdPrevSvecc, vNumPrevSvecc, _
                                                                      vDataPrevSvecc, vNumDocumentoSvecc, _
                                                                      vDataDocumentoSvecc) Then
                            GoTo Error
                        End If
                    End If
                    RS2.Close
                    Set RS2 = Nothing
                    Print #1, "" 'Stampa Log 1° Step
                End If
                contaStepLog = contaStepLog + 1 'Incremento il contatore
                RS.MoveNext
            Loop
        Else
            strMsgLog = contaStepLog & ") Nessun Fattura definitiva presente per l'Anno " & vAnno & vbCrLf
            Print #1, strMsgLog 'Stampa Log 1° Step
            contaStepLog = contaStepLog + 1 'Incremento il contatore
        End If
        RS.Close
        Set RS = Nothing
    
    Le varie sub:

    Private Function cancellaFatturaCliente(pStrCongresso As String, pAnnoSvecc As String, _
                                            pIdDocumento As Integer, pNumDocumento As Integer, _
                                            pDataDocumento As String) As Boolean
    
        Dim vCongresso As String
        
        On Error GoTo errore
    
        cancellaFatturaCliente = True
    
        'Cancello le righe di dettaglio della Fattura definitiva
        strSql = "DELETE FROM Riga_Documento " & _
                 " WHERE Id_Documento = " & pIdDocumento
        Db.Execute (strSql)
        
        'Cancello la Fattura definitiva
        strSql = "DELETE FROM Documento " & _
                 " WHERE Id_Documento = " & pIdDocumento
        Db.Execute (strSql)
        
        'Cancello la Fattura dalla tabella "Fattura_Pagata"
        strSql = "DELETE FROM Fattura_Pagata " & _
                 " WHERE Id_Documento = " & pIdDocumento
        Db.Execute (strSql)
    
        'Cancello le righe di Storico Acconti
        strSql = "DELETE FROM Storico_Acconto " & _
                 " WHERE Id_Doc_CliFor = " & pIdDocumento & _
                 "   AND Tipo_CliFor = 'C'"
        Db.Execute (strSql)
            
        strMsgLog = strSpazioLog & "Cancellata la Fattura definitiva N°" & _
                    pNumDocumento & " emessa in data " & pDataDocumento
        Print #1, strMsgLog 'Stampa Log 1° Step
        
        'Se il nome del Congresso è maggiore di 80 caratteri,
        'recupero solamente i primi 80 caratteri
        If Len(Trim(pStrCongresso)) > 80 Then
            vCongresso = Trim(Mid(pStrCongresso, 1, 80))
        Else
            vCongresso = Trim(pStrCongresso)
        End If
        
        'Costruisco il nome del File Excel eventuale della Fattura definitiva
        strFileExcel = "Fattura_Cliente_N" & pNumDocumento & "_" & vCongresso & "_" & pAnnoSvecc & ".xls"
        
        'Se il file è presente lo elimino dalla cartella
        If Dir(App.Path & "\report\" & strFileExcel) <> "" Then
            Kill App.Path & "\report\" & strFileExcel
            strMsgLog = strSpazioLog & "Cancellato l'Excel " & strFileExcel
            Print #1, strMsgLog 'Stampa Log 1° Step
        End If
            
        Exit Function
        
    errore:
        strMsgLog = strSpazioLog & "Si è verificato un errore nella routine -> cancellaFatturaCliente <-"
        Print #1, strMsgLog 'Stampa Log 1° Step
        cancellaFatturaCliente = False
        Exit Function
        
    End Function
    
    Private Function cancellaNoleggiFatturaCliente(pStrCongresso As String, pAnnoSvecc As String, _
                                                   pIdDocumento As Integer, pNumDocumento As Integer, _
                                                   pDataDocumento As String) As Boolean
    
        Dim vCongresso As String
        
        On Error GoTo errore
    
        cancellaNoleggiFatturaCliente = True
        
        'Verifico se vi sono Noleggi per la Fattura definitiva
        strSql = "SELECT COUNT(*) " & _
                 "  FROM Riga_Reso " & _
                 " WHERE Id_Documento = " & pIdDocumento
        Set RS3 = Db.Execute(strSql)
        
        If RS3(0) > 0 Then
            'Cancello le righe dei Materiali a Noleggio
            strSql = "DELETE FROM Riga_Reso " & _
                     " WHERE Id_Documento = " & pIdDocumento
            Db.Execute (strSql)
            
            strMsgLog = strSpazioLog & "Cancellati i Materiali a Noleggio della Fattura definitiva N°" & _
                        pNumDocumento & " emessa in data " & pDataDocumento
            Print #1, strMsgLog 'Stampa Log 1° Step
            
            'Se il nome del Congresso è maggiore di 80 caratteri,
            'recupero solamente i primi 80 caratteri
            If Len(Trim(pStrCongresso)) > 80 Then
                vCongresso = Trim(Mid(pStrCongresso, 1, 80))
            Else
                vCongresso = Trim(pStrCongresso)
            End If
        
            'Costruisco il nome del File Excel eventuale del Noleggi
            strFileExcel = "Materiale_Reso_Cliente_" & vCongresso & "_" & pAnnoSvecc & ".xls"
            
            'Se il file è presente lo elimino dalla cartella
            If Dir(App.Path & "\report\" & strFileExcel) <> "" Then
                Kill App.Path & "\report\" & strFileExcel
                strMsgLog = strSpazioLog & "Cancellato l'Excel " & strFileExcel
                Print #1, strMsgLog 'Stampa Log 1° Step
            End If
        End If
        RS3.Close
        Set RS3 = Nothing
        
        Exit Function
        
    errore:
        strMsgLog = strSpazioLog & "Si è verificato un errore nella routine -> cancellaNoleggiFatturaCliente <-"
        Print #1, strMsgLog 'Stampa Log 1° Step
        cancellaNoleggiFatturaCliente = False
        Exit Function
        
    End Function
    
    Private Function cancellaNoteCreditoDaFattCliente(pStrCongresso As String, pAnnoSvecc As String, _
                                                      pIdDocumentoNC As Integer, pNumDocumentoNC As Integer, _
                                                      pDataDocumentoNC As String, pNumDocumentoFatt As Integer, _
                                                      pDataDocumentoFatt As String) As Boolean
    
        Dim vCongresso As String
        
        On Error GoTo errore
    
        cancellaNoteCreditoDaFattCliente = True
                                    
        'Cancello le righe di dettaglio della Nota di Credito
        strSql = "DELETE FROM Riga_Documento " & _
                 " WHERE Id_Documento = " & pIdDocumentoNC
        Db.Execute (strSql)
        
        'Cancello la Nota di Credito
        strSql = "DELETE FROM Documento " & _
                 " WHERE Id_Documento = " & pIdDocumentoNC
        Db.Execute (strSql)
                                    
        strMsgLog = strSpazioLog & "Cancellata la Nota di Credito N°" & _
                    pNumDocumentoNC & " emessa in data " & pDataDocumentoNC & _
                    " e legata alla Fattura definitiva N°" & pNumDocumentoFatt & _
                    " emessa in data " & pDataDocumentoFatt
        Print #1, strMsgLog 'Stampa Log 1° Step
        
        'Se il nome del Congresso è maggiore di 80 caratteri,
        'recupero solamente i primi 80 caratteri
        If Len(Trim(pStrCongresso)) > 80 Then
            vCongresso = Trim(Mid(pStrCongresso, 1, 80))
        Else
            vCongresso = Trim(pStrCongresso)
        End If
        
        'Costruisco il nome del File Excel eventuale della Nota di Credito
        strFileExcel = "NotaCredito_Cliente_N" & pNumDocumentoNC & "_" & vCongresso & "_" & pAnnoSvecc & ".xls"
        
        'Se il file è presente lo elimino dalla cartella
        If Dir(App.Path & "\report\" & strFileExcel) <> "" Then
            Kill App.Path & "\report\" & strFileExcel
            strMsgLog = strSpazioLog & "Cancellato l'Excel " & strFileExcel
            Print #1, strMsgLog 'Stampa Log 1° Step
        End If
                                    
        Exit Function
        
    errore:
        strMsgLog = strSpazioLog & "Si è verificato un errore nella routine -> cancellaNoteCreditoDaFatt <-"
        Print #1, strMsgLog 'Stampa Log 1° Step
        cancellaNoteCreditoDaFattCliente = False
        Exit Function
        
    End Function
    
    Private Function cancellaNoleggiNoteCreditoDaFattCliente(pStrCongresso As String, pAnnoSvecc As String, _
                                                             pIdDocumentoNC As Integer, pNumDocumentoNC As Integer, _
                                                             pDataDocumentoNC As String, pNumDocumentoFatt As Integer, _
                                                             pDataDocumentoFatt As String) As Boolean
    
        Dim vCongresso As String
        
        On Error GoTo errore
    
        cancellaNoleggiNoteCreditoDaFattCliente = True
        
        strSql = "SELECT COUNT(*) " & _
                 "  FROM Riga_Reso " & _
                 " WHERE Id_Documento = " & pIdDocumentoNC
        Set RS5 = Db.Execute(strSql)
        
        If RS5(0) > 0 Then
            'Cancello i Materiali a Noleggio
            strSql = "DELETE FROM Riga_Reso " & _
                     " WHERE Id_Documento = " & pIdDocumentoNC
            Db.Execute (strSql)
            
            strMsgLog = strSpazioLog & "Cancellati i Materiali a Noleggio della Nota di Credito N°" & _
                                       pNumDocumentoNC & " emessa in Data " & pDataDocumentoNC & _
                                       " e legata alla Fattura definitiva N°" & pNumDocumentoFatt & _
                                       " emessa in Data " & pDataDocumentoFatt
            Print #1, strMsgLog 'Stampa Log 1° Step
        
            'Se il nome del Congresso è maggiore di 80 caratteri,
            'recupero solamente i primi 80 caratteri
            If Len(Trim(pStrCongresso)) > 80 Then
                vCongresso = Trim(Mid(pStrCongresso, 1, 80))
            Else
                vCongresso = Trim(pStrCongresso)
            End If
            
            'Costruisco il nome del File Excel eventuale dei Noleggi della Nota di Credito
            strFileExcel = "Materiale_Reso_Cliente_" & vCongresso & "_" & pAnnoSvecc & ".xls"
            
            'Se il file è presente lo elimino dalla cartella
            If Dir(App.Path & "\report\" & strFileExcel) <> "" Then
                Kill App.Path & "\report\" & strFileExcel
                strMsgLog = strSpazioLog & "Cancellato l'Excel " & strFileExcel
                Print #1, strMsgLog 'Stampa Log 1° Step
            End If
        End If
        
        RS5.Close
        Set RS5 = Nothing
        
        Exit Function
        
    errore:
        strMsgLog = strSpazioLog & "Si è verificato un errore nella routine -> cancellaNoleggiNoteCreditoDaFatt <-"
        Print #1, strMsgLog 'Stampa Log 1° Step
        cancellaNoleggiNoteCreditoDaFattCliente = False
        Exit Function
    
    End Function
    
    Private Function cancellaPreventivoDaFattCliente(pStrCongresso As String, pAnnoSvecc As String, _
                                                     pIdDocumentoPrev As Integer, pNumDocumentoPrev As Integer, _
                                                     pDataDocumentoPrev As String, pNumDocumentoFatt As Integer, _
                                                     pDataDocumentoFatt As String) As Boolean
    
        Dim vCongresso As String
        
        On Error GoTo errore
    
        cancellaPreventivoDaFattCliente = True
                                    
        'Cancello le righe di dettaglio del Preventivo
        strSql = "DELETE FROM Riga_Documento " & _
                 " WHERE Id_Documento = " & pIdDocumentoPrev
        Db.Execute (strSql)
        
        'Cancello il Preventivo
        strSql = "DELETE FROM Documento " & _
                 " WHERE Id_Documento = " & pIdDocumentoPrev
        Db.Execute (strSql)
                                    
        strMsgLog = strSpazioLog & "Cancellato il Preventivo N°" & _
                    pNumDocumentoPrev & " emesso in data " & pDataDocumentoPrev & _
                    " e legato alla Fattura definitiva N°" & pNumDocumentoFatt & _
                    " emessa in data " & pDataDocumentoFatt
        Print #1, strMsgLog 'Stampa Log 1° Step
        
        'Se il nome del Congresso è maggiore di 80 caratteri,
        'recupero solamente i primi 80 caratteri
        If Len(Trim(pStrCongresso)) > 80 Then
            vCongresso = Trim(Mid(pStrCongresso, 1, 80))
        Else
            vCongresso = Trim(pStrCongresso)
        End If
        
        'Costruisco il nome del File Excel eventuale della Nota di Credito
        strFileExcel = "Preventivo_Cliente_N" & pNumDocumentoPrev & "_" & vCongresso & "_" & pAnnoSvecc & ".xls"
        
        'Se il file è presente lo elimino dalla cartella
        If Dir(App.Path & "\report\" & strFileExcel) <> "" Then
            Kill App.Path & "\report\" & strFileExcel
            strMsgLog = strSpazioLog & "Cancellato l'Excel " & strFileExcel
            Print #1, strMsgLog 'Stampa Log 1° Step
        End If
                                    
        Exit Function
        
    errore:
        strMsgLog = strSpazioLog & "Si è verificato un errore nella routine -> cancellaPreventivoDaFatt <-"
        Print #1, strMsgLog 'Stampa Log 1° Step
        cancellaPreventivoDaFattCliente = False
        Exit Function
        
    End Function
    
    Private Function cancellaNoleggiPreventivoDaFattCliente(pStrCongresso As String, pAnnoSvecc As String, _
                                                            pIdDocumentoPrev As Integer, pNumDocumentoPrev As Integer, _
                                                            pDataDocumentoPrev As String, pNumDocumentoFatt As Integer, _
                                                            pDataDocumentoFatt As String) As Boolean
    
        Dim vCongresso As String
        
        On Error GoTo errore
    
        cancellaNoleggiPreventivoDaFattCliente = True
        
        strSql = "SELECT COUNT(*) " & _
                 "  FROM Riga_Reso " & _
                 " WHERE Id_Documento = " & pIdDocumentoPrev
        Set RS5 = Db.Execute(strSql)
        
        If RS5(0) > 0 Then
            'Cancello i Materiali a Noleggio
            strSql = "DELETE FROM Riga_Reso " & _
                     " WHERE Id_Documento = " & pIdDocumentoPrev
            Db.Execute (strSql)
            
            strMsgLog = strSpazioLog & "Cancellati i Materiali a Noleggio del Preventivo N°" & _
                                       pNumDocumentoPrev & " emessa in Data " & pDataDocumentoPrev & _
                                       " e legato alla Fattura definitiva N°" & pNumDocumentoFatt & _
                                       " emessa in Data " & pDataDocumentoFatt
            Print #1, strMsgLog 'Stampa Log 1° Step
        
            'Se il nome del Congresso è maggiore di 80 caratteri,
            'recupero solamente i primi 80 caratteri
            If Len(Trim(pStrCongresso)) > 80 Then
                vCongresso = Trim(Mid(pStrCongresso, 1, 80))
            Else
                vCongresso = Trim(pStrCongresso)
            End If
        
            'Costruisco il nome del File Excel eventuale dei Noleggi della Nota di Credito
            strFileExcel = "Materiale_Reso_Cliente_" & vCongresso & "_" & pAnnoSvecc & ".xls"
            
            'Se il file è presente lo elimino dalla cartella
            If Dir(App.Path & "\report\" & strFileExcel) <> "" Then
                Kill App.Path & "\report\" & strFileExcel
                strMsgLog = strSpazioLog & "Cancellato l'Excel " & strFileExcel
                Print #1, strMsgLog 'Stampa Log 1° Step
            End If
        End If
        
        RS5.Close
        Set RS5 = Nothing
        
        Exit Function
        
    errore:
        strMsgLog = strSpazioLog & "Si è verificato un errore nella routine -> cancellaNoleggiPreventivoDaFatt <-"
        Print #1, strMsgLog 'Stampa Log 1° Step
        cancellaNoleggiPreventivoDaFattCliente = False
        Exit Function
    
    End Function
    
    Ultima modifica di maximum; 20-05-2009 10:01 

  6. #6
    L'avatar di spikexx84
    spikexx84 non è in linea Scribacchino
    Cosi a occhio il codice sembra giusto e non dovrebbe sollevare eccezzioni, ma visto che ti da errori evidentemente così non è, dunque ora le strade percorribili sono 2

    1) Puoi postarmi il db di modo che io possa almeno tentare di fare debug e vedere dove si verifica l'errore?
    2) Posso cercare di farti fare delle prove ma vista la mole di codice la vedo dura

    Comunque vista così l errore è probabilmente questo:

    Leggi nel recordset i tuoi 22 record, mettiamo che i primi quattro record siano:

    Id_Documento = 1
    Id_Documento = 2
    Id_Documento = 3
    Id_Documento = 4

    Da qualche parte poi (probabilmente nelle funzioni di appoggio che hai giustamente creato) qualcosa cancella il record con Id_Documento = 4 e di conseguenza quando tenti di spostarti su quel record vb giustamente ti risponde che non ci riesce.

    Fammi sapere se puoi postare il db altrimenti iniziamo con le prove (ma ripeto non conoscendo la struttura dati mi sarà difficile aiutarti), se ritieni che il db contiene dati sensibili e non vuoi postarlo sul forum, ma ti fidi di me, poi inviarmelo tramite mail spikexx84@alice.it

    Facci sapere....
    ℹ️ Leggi di più su spikexx84 ...

  7. #7
    L'avatar di maximum
    maximum non è in linea Scolaretto
    Quote Originariamente inviato da spikexx84 Visualizza il messaggio
    se ritieni che il db contiene dati sensibili e non vuoi postarlo sul forum, ma ti fidi di me, poi inviarmelo tramite mail spikexx84@alice.it
    Te l'ho inviato tramite posta.
    Mi pare davvero strano che comunque venga cancellato il quarto record, visto che le varie routine eseguono le delete mediante accesso per ID univoco (campo contatore di access).

    Comunque attendo i tuoi rpeziosi consigli.
    Grazie anticipatamente.

  8. #8
    L'avatar di spikexx84
    spikexx84 non è in linea Scribacchino
    Ciao mi manca questa funzione

    replicaChrInvalidi

    Anche se immagino che serva solo a raddoppiare gli apici, comunque ho dichiarato tutte le variabili e impostato la connessione al db, appena mi dai questa function parto

    Ps immagino che l'anno in questione sia il 2009 giusto?
    ℹ️ Leggi di più su spikexx84 ...

  9. #9
    L'avatar di maximum
    maximum non è in linea Scolaretto
    2008.

    Ecco la funzione:

    Public Function replicaChrInvalidi(vNome As String) As String
        
        'Replico eventuale invio sul nome
        If InStr(1, Trim(vNome), vbCrLf) <> 0 Then
            vNome = Replace(vNome, vbCrLf, " ")
        End If
        
        'Replico eventuale carattere /
        If InStr(1, Trim(vNome), "/") <> 0 Then
            vNome = Replace(vNome, "/", " ")
        End If
        
        'Replico eventuale carattere *
        If InStr(1, Trim(vNome), "*") <> 0 Then
            vNome = Replace(vNome, "*", " ")
        End If
        
        'Replico eventuale carattere <
        If InStr(1, Trim(vNome), "<") <> 0 Then
            vNome = Replace(vNome, "<", " ")
        End If
        
        'Replico eventuale carattere >
        If InStr(1, Trim(vNome), ">") <> 0 Then
            vNome = Replace(vNome, ">", " ")
        End If
        
        'Replico eventuale carattere |
        If InStr(1, Trim(vNome), "|") <> 0 Then
            vNome = Replace(vNome, "|", " ")
        End If
            
        'Replico eventuale carattere "
        If InStr(1, Trim(vNome), """") <> 0 Then
            vNome = Replace(vNome, """", "'")
        End If
        
        'Replico eventuale carattere ?
        If InStr(1, Trim(vNome), "?") <> 0 Then
            vNome = Replace(vNome, "?", " ")
        End If
        
        'Replico eventuale carattere [
        If InStr(1, Trim(vNome), "[") <> 0 Then
            vNome = Replace(vNome, "[", " ")
        End If
        
        'Replico eventuale carattere ]
        If InStr(1, Trim(vNome), "]") <> 0 Then
            vNome = Replace(vNome, "]", " ")
        End If
        
        'Replico eventuale carattere :
        If InStr(1, Trim(vNome), ":") <> 0 Then
            vNome = Replace(vNome, ":", " ")
        End If
    
        replicaChrInvalidi = vNome
        
    End Function
    

  10. #10
    L'avatar di spikexx84
    spikexx84 non è in linea Scribacchino
    DB.CursorLocation = adUseClient
    


    Non ho trovato qual'è la proprietà o il metodo che rompe le scatole, ma ricordati che bisogna sempre scegliere il cursore lato client per aver accesso a tutti i metodi del recordset (tanto per fare un esempio la recordcount non funziona se si imposta adUseServer), se c'è un motivo (ma non credo proprio visto che parliamo di database di tipo mdb che lato server non funzionano esattamente come lato client quindi non c'è nessun vantaggio ad impostare quel tipo di cursore) per cui tu debba usare il cursore lato server dimmelo che andiamo a caccia del metodo che non funziona, ma se così non è imposta il cursore lato client prima dell apertura della connessione e problema risolto.

    Fammi sapere....
    ℹ️ Leggi di più su spikexx84 ...

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Verifica completamento campi maschera prima di transazione
    Da RaoulDuke nel forum Microsoft Access
    Risposte: 4
    Ultimo Post: 28-12-2020, 13:46
  2. Errore transazione 3034
    Da RaoulDuke nel forum Microsoft Access
    Risposte: 11
    Ultimo Post: 26-12-2020, 17:23
  3. Errore transazione 3034
    Da RaoulDuke nel forum Microsoft Word
    Risposte: 0
    Ultimo Post: 25-12-2020, 10:34
  4. Access SQL Server Transazione con blocco tabella
    Da ByD nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 11-07-2013, 14:56
  5. Transazione che non funziona ?..
    Da makikaz nel forum Microsoft Word
    Risposte: 2
    Ultimo Post: 05-02-2010, 14:23