+ Rispondi al messaggio
Pagina 1 di 3 123 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27

Errore di Runtime 6 Overflow

  1. #1
    L'avatar di jqoobe
    jqoobe non  in linea Novello
    Salve a tutti, avendo la neccessita di recuperare dei dati da un file csv etrasferirli in un altro file.sql che contiene la procedura di importazione dei dati nelle tabelle con comandi in sql.. ho riscontrato che se il file csv ha circa 190 records da trattare non vi nessun problema tutto funziona alla perfezione, mentre se il file pi grande la procedura inizia ma poi mi viene restituito un errore di Runtime:6 Overflow questo il codice che ho creato:

    strfile_exp_count = (App.path & "\Archivio\") & "DATI-COMPLETI-19-12-2020" & (".csv")
    Open strfile_exp_count For Input As #1
    
    n = 0
    Do While Not EOF(1)
      Line Input #1, s
      n = n + 1
      Loop
    Close #1
    totale_righe.Caption = n
    Dim totalnum As Integer
    totalnum = n
    
    Dim I As Long
    I = 1
    
    ProgressBar1.Min = 0
    ProgressBar1.Max = n
    Do
    autoinc.Caption = I
    
    Dim pulito As String
    Dim strfile_exp As String
    strfile_exp = (App.path & "\Archivio\") & "DATI-COMPLETI-19-12-2020" & (".csv")
    Open strfile_exp For Input As #1
    mostra.Text = Input$(LOF(1), #1)
    Medio.Text = udf_ReadLine(mostra.Text, I) ' read line #1
    pulito = Replace(Medio.Text, "'", "''")
    
    Dim stmp As String
    stmp = pulito
    
    b = Split(pulito, ";")
    
    mod_data_modifica = Format(b(10), "mm/dd/yyyy")
    mod_data_nascita = Format(b(3), "mm/dd/yyyy")
    
    
    
    SQLView.Text = "update ADMIN.LTA_ANAGRAFICA set   LTA_DATAMODIFICA = TO_DATE('" & mod_data_modifica & " " & b(11) & "', 'MM/DD/YYYY HH24:MI:SS')," & "LTA_NOME  = '" & b(0) & "'||' '||'" & b(1) & "',  LTA_SESSO = '" & b(2) & "', LTA_NASCITA =  TO_DATE('" & mod_data_nascita & " " & "00:00:00', 'MM/DD/YYYY HH24:MI:SS'),   LTA_COMUNE_NASCITA='" & b(4) & "',LTA_INDIRIZZO = '" & b(8) & "', LTA_CITTA = '" & b(7) & "', LTA_CF = '" & b(6) & "' where  lta_anag_id = (select ltr_anag_id from admin.ltr_richiesta where ltr_num_rich='" & b(12) & "');"
    Close #1
    
    strFilereport = (App.path & "\export\") & "Esportazione-SQL" & "-" & (Day(Date) & "-" & Month(Date) & "-" & Year(Date) & ".sql")
     intFile3 = FreeFile
      Open strFilereport For Append As #intFile3
         
        Print #intFile3, SQLView.Text
          Close #intFile3
          
    If ProgressBar1.Value < I Then
    ProgressBar1.Value = ProgressBar1.Value + 1
    End If
     
      I = I + 1
    
      
    Loop Until I > totalnum
    
    Label3.Caption = I
    
    questa la funzione Readline:
    Private Function udf_ReadLine(ByVal sDataText As String, ByVal nLineNum As Long) As String
                    Dim sText As String, nI As Long, nJ As Long, sTemp As String
                 
                    On Error GoTo ErrHandler
                 
                    sText = ""
                    nI = 1
                    nJ = 1
                    sTemp = ""
                    While (nI <= Len(sDataText))
                        Select Case Mid(sDataText, nI, 1)
                            Case vbCr
                                If (nJ = nLineNum) Then
                                    sText = sTemp
                                End If
                            Case vbLf
                                nJ = nJ + 1
                                sTemp = ""
                            Case Else
                                sTemp = sTemp & Mid(sDataText, nI, 1)
                        End Select
                        nI = nI + 1
                    Wend
                    If (nJ = nLineNum) Then
                        sText = sTemp
                    End If
                    udf_ReadLine = sText
                 
                    Exit Function
                 
    ErrHandler:
                    udf_ReadLine = ""
                End Function
    
    Non riesco a capire perch va in overflow... , forse dovrei usare un altro oggetto per memorizzarsi temporaneamente tutta la stringa elaborata?

  2. #2
    Ma in quale riga hai l'errore?
    ℹ️ Leggi di pi su AntonioG ...

  3. #3
    L'avatar di jqoobe
    jqoobe non  in linea Novello
    Ciao Antonio, sulla conversione del formato data:
    mod_data_modifica = Format(b(10), "mm/dd/yyyy")
    

  4. #4
    E hai controllato cosa contiene b(10) in quel momento?

    P.S. Devi fare un po' di debugging e controlli ...

    P.P.S. Vedo che continui a scrivere le stringhe come prima

    strfile_exp = (App.path & "\Archivio\") & "DATI-COMPLETI-19-12-2020" & (".csv")

    anche se ti avevo consigliato diversamente ... Perch non scrivere

    strfile_exp = App.path & "\Archivio\DATI-COMPLETI-19-12-2020.csv"

    ??
    Ultima modifica di AntonioG; 16-01-2021 09:06 
    ℹ️ Leggi di pi su AntonioG ...

  5. #5
    L'avatar di jqoobe
    jqoobe non  in linea Novello
    Si Antonio ero incentrato sul risolvere il problema.. il b(10) contiene la data scritta in questo formato: 22/09/1978 prima di darla in pasto a Oracle la converto in 09/22/1978, sto popolando un db esistente che ha gia le date dei vecchi record in questo formato. Ma la cosa che non capisco che se il file csv ha 150 righe ... il tutto viene processato perfettamente, mentre se il file csv da processare ne ha di pi viene restituito l'errore di overflow. Stavo pensando di mettere una pausa ogni tot record magari per dargli il tempo di processarlo..

  6. #6
    L'avatar di Brontolo
    Brontolo non  in linea Very Important Person
    e la variabile mod_data_modifica dove e come definita?
    ℹ️ Leggi di pi su Brontolo ...

  7. #7
    L'avatar di jqoobe
    jqoobe non  in linea Novello
    Hai ragione mi son scordato di dichiararle, ora l'ho fatto:
    Dim mod_data_modifica As String
    Dim mod_data_nascita As String
    
    Il problema rimane comunque

  8. ciao,
    150 righe sono poche per giustificare un overflow;

    ... che sia qualche carattere 'strano' nella data ?
    se la imposti a mano durate ildebug funziona ?
    Ultima modifica di sspintux; 16-01-2021 10:37 
    ℹ️ Leggi di pi su sspintux ...

  9. #9
    Quote Originariamente inviato da jqoobe Visualizza il messaggio
    Si Antonio ero incentrato sul risolvere il problema.. il b(10) contiene la data scritta in questo formato: 22/09/1978
    No, se contenesse quel valore non avresti quell'errore.

    Devi controllare il suo valore proprio quando hai l'errore (lo hai fatto? come?) e non presupporre cosa ci sia.

    ne ha di pi viene restituito l'errore di overflow.
    Il tuo codice sarebbe da modificare abbastanza.

    Perch leggi tutto il file ogni volta in un ciclo Do ...? Che senso ha?

    Dovresti aprire il file e leggere linea per linea e operare sulla singola linea prima di passare alla prossima.
    ℹ️ Leggi di pi su AntonioG ...

  10. #10
    L'avatar di jqoobe
    jqoobe non  in linea Novello
    Allora anche dando il valore manuale alle variabile cosi:
    mod_data_modifica = "19/12/2009"
    mod_data_nascita = "19/10/2021"
    
    invece di fargli formattare la stringa passata da b(3) e b(10) con questo:
    mod_data_modifica = Format(b(10), "mm/dd/yyyy")
    mod_data_nascita = Format(b(3), "mm/dd/yyyy")
    
    crea lo stesso problea di overflow, quindi suppono che il problema non sia li.
    Ultima modifica di jqoobe; 17-01-2021 08:17 

+ Rispondi al messaggio
Pagina 1 di 3 123 ultimoultimo

Potrebbero interessarti anche ...

  1. Errore Overflow
    Da mailman_1969 nel forum Microsoft Access
    Risposte: 7
    Ultimo Post: 02-09-2019, 14:50
  2. TQRPDFFilter errore di Stack Overflow
    Da Monti nel forum Delphi
    Risposte: 1
    Ultimo Post: 12-03-2019, 10:30
  3. Errore di overflow
    Da Jocman nel forum Microsoft Word
    Risposte: 2
    Ultimo Post: 08-09-2017, 08:31
  4. Errore overflow 0/0
    Da cicchiniello nel forum Microsoft Excel
    Risposte: 4
    Ultimo Post: 18-03-2014, 09:24
  5. Errore overflow
    Da Saint nel forum Microsoft Word
    Risposte: 3
    Ultimo Post: 18-07-2009, 11:48