Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di Rickycast
    Registrato dal
    Apr 2007
    residenza
    CHIERI (TO)
    Messaggi
    263

    [VB .NET] Errore -2147467259 non specificato

    Apro questa discussione che per la verità ho aggiunto in fondo ad una mia precedente e che, forse proprio per questo è stata ignorata.
    Succede che in maniera del tutto casuale e quindi senza che sia possibile identificare con chiarezza la causa dell'errore, compare appunto l'errore

    Errore nella Sub ....:-2147467259 - Errore non specificato.

    E la cosa più strana è che non sempre la Sub incriminata è la stessa. Devo però aggiungere che tutte le Sub per le quali l'errore si verifica sono o la Sub chiamante o Sub chiamate da questa, Almeno l'origine è chiara.
    Quando dico che l'errore è casuale, intendo che posso eseguire 20 volte la Sub senza problemi e magari alla 21esima volta, ecco l'errore. Le Sub richiamate contengono banalissime stringhe di esecuzione Query (Access 2007) e il primo pensiero che mi viene è che l'esecuzione di qualche Query porti via più tempo di quanto serva prima che la successiva Query sia avviata. Così ho aggiunto alcuni Thread.Sleep() da 100ms, ma non è cambiato molto. Tempi più lunghi sarebbero un vero rallentamento di tutta la procedura.

    Qualcuno ha qualche consiglio?

  2. #2
    Hai messo tutto il codice delle Sub tra blocchi Try... Catch?

    nel blocco "Catch ex as Exception" scrivi: Debug.Print(ex.ToString)

    e nella finestra di Output vedrai tutte le linee che generano errore, dalla ultima alle chiamanti
    Ultima modifica di eziogsv; 24-03-2018 a 14:59

  3. #3
    Utente di HTML.it L'avatar di Rickycast
    Registrato dal
    Apr 2007
    residenza
    CHIERI (TO)
    Messaggi
    263
    Grazie eziogsv, come solito hai la risposta che serve.
    Ciao.

  4. #4
    Utente di HTML.it L'avatar di Rickycast
    Registrato dal
    Apr 2007
    residenza
    CHIERI (TO)
    Messaggi
    263
    Quote Originariamente inviata da eziogsv Visualizza il messaggio
    ...

    e nella finestra di Output vedrai tutte le linee che generano errore, dalla ultima alle chiamanti
    per aprire la finestra di Output io devo fare CTRL + ALT + O e l'ho aperta prima di eseguire il codice.
    Quando si apre il messaggio di errore leggo: Errore nella Sub "quella eseguita": 0- (ossia l'errore è 0 e non ho nessuna descrizione)
    N.B.: di messaggi di errore se ne aprono ben 14, tutti uguali!!
    Poi ho guardato nella finestra di Output alla voce Debug, ma è vuota, non c'è nulla. Devo guardare da qualche altra parte?

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Così è impossibile darti una risposta sulle cause degli errori.

    Devi mostrare il codice della Sub.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Prima domanda: sei in mode "Debug" o "Release"? In Release non si vedono gli errori di Debug nella finestra di Output.

    La finestra di Output è IMPORTANTE per il debug e dovrebbe essere SEMPRE in fondo alla IDE (Menu Debug / Finestre / Output)

    Seconda domanda: hai messo TUTTO il codice delle Sub nel blocco Try?

    codice:
    Private Sub CiccioFormaggio()
    
       Try
    
       ''' Tutto il codice
    
       Catch ex as Exception
          Debug.Print(ex.ToString)
       End Try
    
    End Sub

    Se il codice è gestito non dovrebbero apparire messaggi di errore: è gestito...

  7. #7
    Utente di HTML.it L'avatar di Rickycast
    Registrato dal
    Apr 2007
    residenza
    CHIERI (TO)
    Messaggi
    263
    Anticipo che, dopo aver messo tutti i codici di tutte le Sub all'interno del blocco Try, non sono più riuscito a ripetere l'errore. Comunque, per Oregon, ecco di seguito il codice della Sub incriminata e di quella da questa richiamata:


    codice:
        Private Sub ModifListaReg()
            Try
    
                Dim rcrdst As New ADODB.Recordset, sSQL As String
    
                ListaRegioni.Items.Clear()
    
                sSQL = "DELETE RegioniSelezionate.* FROM RegioniSelezionate;"
                rcrdst.Open(sSQL, CnDBLocale, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)
    
                If SeleReg = 0 Then
                    sSQL = "INSERT INTO RegioniSelezionate ( Reg, Regione ) SELECT Regioni.Reg, Regioni.Regione FROM Regioni;"
                    rcrdst.Open(sSQL, CnDBLocale, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)
                Else
                    sSQL = "INSERT INTO RegioniSelezionate ( Reg, Regione ) SELECT DISTINCT DatiTerritoriali.Reg, DatiTerritoriali.Regione FROM DatiTerritoriali INNER JOIN AgentiPerVendite ON DatiTerritoriali.CodAg = AgentiPerVendite.CodAg WHERE (((AgentiPerVendite.Selezionato)=-1));"
                    rcrdst.Open(sSQL, CnDBLocale, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)
                End If
    
                sSQL = "UPDATE Regioni SET Regioni.Selezionato = 0;"
                rcrdst.Open(sSQL, CnDBLocale, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)
    
                sSQL = "UPDATE Regioni INNER JOIN RegioniSelezionate ON Regioni.Reg = RegioniSelezionate.Reg SET Regioni.Selezionato = -1;"
                rcrdst.Open(sSQL, CnDBLocale, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)
    
                sSQL = "SELECT Regioni.Reg, Regioni.Regione, Regioni.Selezionato FROM Regioni;"
                rcrdst.Open(sSQL, CnDBLocale, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)
    
                If rcrdst.State <> ConnectionState.Closed Then
                    rcrdst.Close()
                    rcrdst.ActiveConnection = Nothing
                    Application.DoEvents()
                End If
    
                Thread.Sleep(150)
                CaricaRegioni()
                Thread.Sleep(150)
    
                SeleReg = 0
    
            Catch ex As Exception
                Debug.Print(ex.ToString)
                MessageBox.Show(ex.Message)
                MessageBox.Show("Stack Trace: " & vbCrLf & ex.StackTrace)
                MessageBox.Show("Errore nella Sub ''ModifListaReg'' della Form ''SeleVendite'': " & Err.Number & " - " & Err.Description)
            End Try
        End Sub
    
        Private Sub CaricaRegioni()                      ' ATTENZIONE: TUTTO QUESTO MODULO LAVORA SUL DB LOCALE!!
            Try
    
                Dim rcrdst As New ADODB.Recordset, sSQL As String
                Dim i As Integer
    
                ' Seleziona la Query in funzione di Riservato e poi la esegue - Crea la tabella RegioniSel
                ' ************************************************************
                If Riservato = -1 Then
                    sSQL = "SELECT Regione, Selezionato FROM Regioni WHERE (((Selezionato)=-1));"
                    rcrdst.Open(sSQL, CnDBLocale, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)
                ElseIf Riservato = 0 Then
                    sSQL = "SELECT Regione, Selezionato FROM Regioni WHERE ((Regione)<>'ESTERO') AND ((Selezionato)=-1)"
                    rcrdst.Open(sSQL, CnDBLocale, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)
                End If
    
                ' Popola ListaRegioni
                ' *******************
                For i = 0 To rcrdst.RecordCount - 1
                    ListaRegioni.Items.Add(rcrdst("Regione").Value)   ' Carica la Lista Categorie
                    ListaRegioni.SetSelected(i, 0)
                    rcrdst("Selezionato").Value = 0
                    rcrdst.Update()
                    rcrdst.MoveNext()
                Next i
    
                If rcrdst.State <> ConnectionState.Closed Then
                    rcrdst.Close()
                    rcrdst.ActiveConnection = Nothing
                    Application.DoEvents()
                End If
    
            Catch ex As Exception
                Debug.Print(ex.ToString)
                MessageBox.Show(ex.Message)
                MessageBox.Show("Stack Trace: " & vbCrLf & ex.StackTrace)
                MessageBox.Show("Errore nella Sub ''CaricaRegioni'' della Form ''SeleVendite'': " & Err.Number & " - " & Err.Description)
            End Try
        End Sub
    Se serve altro sono a disposizione.

  8. #8
    Utente di HTML.it L'avatar di Rickycast
    Registrato dal
    Apr 2007
    residenza
    CHIERI (TO)
    Messaggi
    263
    Quote Originariamente inviata da eziogsv Visualizza il messaggio
    Prima domanda: sei in mode "Debug" o "Release"? In Release non si vedono gli errori di Debug nella finestra di Output.
    Sono in modalità Debug ed ho bloccato la finestra di Output in fondo all'IDE e, come ho appena detto, ho messo tutto il codice all'interno dei blocchi Try; da quel momento non più potuto ripetere l'errore.
    Quello di cui non sono sicuro è se l'errore è ancora presente o non c'è più.

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Quote Originariamente inviata da Rickycast Visualizza il messaggio
    ...
    Non devi usare tutte quelle Open ! Se apri ripetutamente un recordset senza chiuderlo, avrai degli errori.

    Usalo solo per la SELECT. Per il resto utilizza l'oggetto Connection e il metodo Execute

    CnDbLocale.Execute ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.