Errore di Run-Time 59 (Lunghezza di record non valida) all'apertura di un file random

Anonimo
2024-11-23T09:44:45+00:00

Buongiorno,

Non riesco a capire l'errore di Run-Time 59 (Lunghezza di record non valida) che avviene nell'apertura di un file random, il codice è il seguente:

L'errore si verifica nella riga di apertura del file "SCHEDE", ma è capitato anche nell'apertura di altri file random. 

Inoltre, ho notato, che se copio la struttura del file (Type schede), la cancello e poi la incollo, l'errore non si verifica in quel giorno, ma dopo qualche giorno si potrebbe ripresentare. Utilizzo Office 2019

Quale potrebbe essere il problema?

Grazie

Giorgio

Microsoft 365 e Office | Installare, riscattare, attivare | Altro | Altro

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

4 risposte

Ordina per: Più utili
  1. Anonimo
    2024-11-25T14:56:14+00:00

    mi sembra di capire che la dimensione del file si modifica in fase di memorizzazione dei record (Put), ma non dovrebbe mantenere le dimensioni impostate nella struttura del file?

    Purtroppo senza file non posso dirti altro, visto che va in errore sul GET,

    ciao.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2024-11-25T11:57:28+00:00

    Buongiorno Eleuterio,

    nel precedente post non sono riuscito a mandare il codice quindi ho allegato l'immagine, ora ho capito la procedura e lo rimando:

    Public Sub CaricaAcconti(codiclie As Integer, NSH As Integer)
    
    Dim VERSAMENTI As acconti
    
    Dim ONO As Double, ACCT As Double, CRED As Double, Percorso As String, filenumberS As Integer, NACC As Integer, StaSched As Boolean
    
    Dim filenumberV  As Integer, rigam As Integer
    
    Dim LISTA()
    
    Dim SCHEDA As schede
    
    Percorso = UserForm1.TextBox6.Value
    
    filenumberS = FreeFile
    
    Open Percorso & "SCHEDE" & "\SCHEDA" & codiclie & ".DAT" For Random As #filenumberS Len = Len(SCHEDA)
    
    Get #filenumberS, NSH, SCHEDA
    
    NACC = CInt(SCHEDA.NACCONTI)
    
    ONO = CDbl(SCHEDA.ONORARI)
    
    StaSched = CBool(SCHEDA.Stato)
    
    Close #filenumberS
    
    UserForm4.TextBox14.Value = Format(ONO, "€ #,##0.00")
    
    ACCT = 0
    
    If NACC > 0 Then
    
    UserForm4.ListBox1.ControlTipText = "Doppio click sulla riga per modificare i dati"
    
    UserForm4.CommandButton2.Enabled = True
    
    ReDim LISTA(NACC - 1, 7)
    
    Else
    
    UserForm4.ListBox1.ControlTipText = ""
    
    UserForm4.CommandButton2.Enabled = False
    
    GoTo VISUALIZZA
    
    End If
    
    filenumberV = FreeFile
    
    Open Percorso & "SCHEDE" & "\VERSAMENTI" & codiclie & "." & NSH For Random As #filenumberV Len = Len(VERSAMENTI)
    
    For rigam = 0 To NACC - 1
    
    Get #filenumberV, rigam + 1, VERSAMENTI
    
    LISTA(rigam, 0) = rigam + 1
    
    LISTA(rigam, 1) = VERSAMENTI.DataPag
    
    LISTA(rigam, 2) = Format(VERSAMENTI.ACCONTON, "€      #,##0.00")
    
    LISTA(rigam, 3) = Format(VERSAMENTI.ACCONTOF, "€      #,##0.00")
    
    LISTA(rigam, 4) = CInt(VERSAMENTI.CONTRIBUTO)
    
    LISTA(rigam, 5) = CInt(VERSAMENTI.IVA)
    
    LISTA(rigam, 6) = CInt(VERSAMENTI.RITACC)
    
    LISTA(rigam, 7) = Format(VERSAMENTI.Spese, "€      #,##0.00")
    
    ACCT = ACCT + CDbl(VERSAMENTI.ACCONTON) + CDbl(VERSAMENTI.ACCONTOF) + CDbl(VERSAMENTI.Spese)
    
    Next rigam
    
    Close #filenumberV
    
    UserForm4.ListBox1.List() = LISTA
    
    VISUALIZZA:
    
    CRED = ONO - ACCT
    
    UserForm4.CheckBox3.Value = StaSched
    
    If StaSched = True Then
    
    UserForm4.CheckBox3.Caption = "Chiusa"
    
    UserForm4.CommandButton1.Enabled = False
    
    Else
    
    UserForm4.CheckBox3.Caption = "Aperta"
    
    UserForm4.CommandButton1.Enabled = True
    
    End If
    
    UserForm4.TextBox15.Value = Format(ACCT, "€ #,##0.00")
    
    UserForm4.TextBox16.Value = Format(CRED, "€ #,##0.00")
    
    End Sub
    
    Public Type schede ' 3 Definisce il tipo dell'utente. 
    
        RECCLIENTE As Integer 
    
        NSCHEDA As Integer 
    
        nominativo As String * 40 
    
        DataInc As String * 10 
    
        ONORARI As Double 
    
        PRESTAZIONE As String * 500 
    
        NACCONTI As Integer 
    
        TipoA As Integer 
    
         AreaS As Integer 
    
         Notafatt As String * 35 
    
         Stato As Boolean 
    
    End Type 
    
    Public Type acconti ' 4 Definisce il tipo dell'utente. 
    
        RECLIEN As Integer 
    
        NSCHEDA As Integer 
    
        DataPag As String * 10 
    
        ACCONTOF As Double 
    
        ACCONTON As Double 
    
        CONTRIBUTO As Integer 
    
        IVA As Integer 
    
        Spese As Double 
    
        RITACC As Integer 
    
        Notafatt As String * 35 
    

    End Type

    L'errore si verifica nel rigo 10 del codice. Leggendo l'articolo ufficiale su questo errore, mi sembra di capire che la dimensione del file si modifica in fase di memorizzazione dei record (Put), ma non dovrebbe mantenere le dimensioni impostate nella struttura del file? Grazie Giorgio

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2024-11-25T11:07:55+00:00

    Senza file è difficile, inoltre al posto del codice alleghi un'immagine, senza nemmeno dire quale riga va in errore, complicando così la comprensione dello stesso e la possibile soluzione:

    in questa parte la definizione di Len porta a quell'errore, come evidenziato in quest'articolo ufficiale.

    Thomas.C (ciao) prima di indirizzare gli utenti verso Stack Overflow dacci il tempo per rispondere; codice VBA in questo forum ne abbiamo prodotto e revisionato parecchio.

    Ciao.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2024-11-25T10:55:23+00:00

    La risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o parole insolite.

     Ciao Giorgio_#,

    Grazie per il tuo post nella community Microsoft.

    In base alla tua descrizione, sembra che tu stia riscontrando un problema relativo a VBA.

    Bene, c'è un posto migliore per pubblicare che è Stack Overflow.

    Poni domande di programmazione VBA a Stack Overflow utilizzando il tag VBA insieme a qualsiasi altro tag pertinente.

    Tieni presente che Stack Overflow include linee guida, come la richiesta di un titolo descrittivo, una descrizione completa e concisa del problema e dettagli sufficienti per riprodurre il problema. Le richieste di funzionalità o le domande troppo generiche sono considerate fuori tema.

    Dichiarazione di non responsabilità: Microsoft non fornisce alcuna assicurazione e/o garanzia, implicita o di altro tipo, e non è responsabile delle informazioni ricevute dall'utente dai siti collegati di terze parti o di qualsiasi supporto correlato alla tecnologia.

    Non posso aiutarti, ma lascerò aperta questa domanda nel caso in cui uno dei nostri fantastici volontari abbia idee per te.

    Migliori saluti

    Thomas C - MSFT | Specialista del supporto della community Microsoft

    La risposta è stata utile?

    0 commenti Nessun commento