Allora perché hai scritto
?Ciao Antonio, sulla conversione del formato data:
mod_data_modifica = Format(b(10), "mm/dd/yyyy")
La riga che provoca un errore non può essere incerta. Lo stai eseguendo in debug?
Allora perché hai scritto
?Ciao Antonio, sulla conversione del formato data:
mod_data_modifica = Format(b(10), "mm/dd/yyyy")
La riga che provoca un errore non può essere incerta. Lo stai eseguendo in debug?
Il debug non mi fa vedere nessun problema. Io sto prendendo un file csv da un percorso dentro la path del programma.
lo apro, mi conto le righe all'interno del file, recupero il totale delle righe e lo passo al ciclo all'interno del quale creao una stringa in questo caso sqlview che non è altro che una text boxm all'interno di questa stringa sostituisco i valori che mi interessano prelevati dal file csv infine tutto all'interno del ciclo creo un altro file che sarà il file Sql da importare su oracle. tutto funziona, il file contiene 985 righe ... se lo divido in due file e li elaboro uno alla volta tutto ok, se elaboro il file interno va in overflow.Command1.Enabled = False strfile_exp_count = (App.path & "\Archivio\") & "prova" & (".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\") & "prova" & (".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, "'", "''") Close #1 Dim stmp As String stmp = pulito b = Split(pulito, ";") Dim data_modifica_pulita As String Dim data_nascita_pulita As String Dim ora_acquisizione_pulita As String mod_data_modifica = "19/12/2009" mod_data_nascita = "19/10/2021" 'data_modifica_pulita = Replace(b(10), ".", "/") 'data_nascita_pulita = Replace(b(3), ".", "/") 'mod_data_modifica = Format(b(10), "mm/dd/yyyy") 'mod_data_nascita = Format(b(3), "mm/dd/yyyy") b8.Caption = mod_data_modifica b10.Caption = mod_data_nascita 'ora_acquisizione_pulita = Replace(b(11), ".", ":") 'mod_data_modifica = "12/01/2021" 'mod_data_nascita = "12/09/2021" 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 'Sleep 5000 Loop Until I > totalnum Label3.Caption = I Command1.Enabled = False Command2.Enabled = True messaggio.Visible = TrueSono due giorni che sbatto e non riesco a risolvere.. può essere che la text box abbia un limite e non regga tutto il contenuto ?
Utilizzo il debug integrato di VB6. Comunque a parte tutto ho spostato fuori dal ciclo le aperture e chiusure di file. ora non da più un errore di overflow, ma mi restituisce: Indice non compreso nell'intervallo Errore di Run-time 9 :
Private Sub Command1_Click() 'On Error GoTo ERRORE_EXP Command1.Enabled = False strfile_exp_count = (App.path & "\Archivio\") & "prova" & (".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 Dim pulito As String Dim strfile_exp As String strfile_exp = (App.path & "\Archivio\") & "prova" & (".csv") Open strfile_exp For Input As #1 mostra.Text = Input$(LOF(1), #1) strFilereport = (App.path & "\export\") & "Esportazione-SQL" & "-" & (Day(Date) & "-" & Month(Date) & "-" & Year(Date) & ".sql") intFile3 = FreeFile Open strFilereport For Append As #intFile3 Do autoinc.Caption = I Medio.Text = udf_ReadLine(mostra.Text, I) ' read line #1 pulito = Replace(Medio.Text, "'", "''") Dim stmp As String stmp = pulito b = Split(pulito, ";") Dim data_modifica_pulita As String Dim data_nascita_pulita As String Dim ora_acquisizione_pulita As String mod_data_modifica = "19/12/2009" mod_data_nascita = "19/10/2021" 'data_modifica_pulita = Replace(b(10), ".", "/") 'data_nascita_pulita = Replace(b(3), ".", "/") 'mod_data_modifica = Format(b(10), "mm/dd/yyyy") 'mod_data_nascita = Format(b(3), "mm/dd/yyyy") b8.Caption = mod_data_modifica b10.Caption = mod_data_nascita 'ora_acquisizione_pulita = Replace(b(11), ".", ":") 'mod_data_modifica = "12/01/2021" 'mod_data_nascita = "12/09/2021" 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 Print #intFile3, SQLView.Text If ProgressBar1.Value < I Then ProgressBar1.Value = ProgressBar1.Value + 1 End If I = I + 1 'Sleep 5000 Loop Until I > totalnum Close #1 Close #intFile3 Label3.Caption = I Command1.Enabled = False Command2.Enabled = True messaggio.Visible = True 'ERRORE_EXP: Label7.Caption = I Label6.Visible = True Label7.Visible = True End Sub
e quindi non ci dovrebbero essere dubbi né sulla riga che provoca l'errore né sul valore delle variabili.Utilizzo il debug integrato di VB6
Evidentemente non lo usi correttamente.
Stesso discorso.ma mi restituisce: Indice non compreso nell'intervallo Errore di Run-time 9 :
Io conosco la riga, il problema è che dal codice non vedo cosa è contenuto in quel momento nella riga, mi sono messo a video ogni assegnazione alla textbox in questione, mi sono creato un file che mi scrive i dati a ogni passaggio e non ne sto cavando piede, la riga in questione è una textbox che riempio a ogni ciclo con i valori presi dal csv. Ho usato lo split per recuperarmi i valori messi tra il separatore ";" della riga e rimpieto la stringa in seguito con i valori presi dallo split. La stringa in questione è questa:
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) & "');"
e perché no? Metti un break su quella riga (ammesso che sia quella!) ed esamina il contenuto delle variabili anche semplicemente passandoci il cursore sopra o usando la finestra immediate. Esegui il programma una riga alla volta (f8).
Mi sa che hai bisogno di conoscere meglio gli strumenti e le tecniche elementari di debug.
Ma scusa l'errore ferma l'esecuzione esattamente nella riga che lo provoca. Non vedi dove si ferma il programma?
Quanti è grande il file che leggi in byte?
non è questione di supporre ma di derteminare con certezza;
dovrebbe esserci un'ozione "Interrompe ad ogni errore" ... ma non ricordo dove