+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 7 su 7

Run-time error '5'

  1. #1
    meccallous non è in linea Scolaretto
    Post
    158
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao,
    cercherò di essere chiaro, perché è da ieri che questo errore mi fa impazzire...

    Ho un piccolo form che permette all'utente, al termine di attività complesse, di indicare se vuole o meno la stampa di una concessione/fattura/bollettino. Il form viene richiamato e mostra 3 checkbox, e l'utente può selezionare ciò di cui ha bisogno e premere OK (o Annulla, che però non mi dà problemi).

    Il codice interno al mio form è questo:

    Option Explicit
    Option Compare Text
    
    Private myTastoPremuto As String
    
    Private Sub cmdAnnulla_Click()
        
        TastoPremuto = "Annulla"
        Me.Hide
    
    End Sub
    
    Private Sub cmdOK_Click()
        
        TastoPremuto = "OK"
        Me.Hide
        
    End Sub
    
    Public Property Get TastoPremuto() As String
    
        TastoPremuto = myTastoPremuto
        
    End Property
    
    Private Property Let TastoPremuto(ByVal vNewValue As String)
    
        myTastoPremuto = vNewValue
        
    End Property
    
    La proprietà TastoPremuto permette al form chiamante di capire se l'utente ha premuto OK o Annulla.

    Questo è il codice con il quale chiamo questo form:

    Private Sub Command1_Click()
    
        frmChiediGenerazioneDocumenti.chkGeneraDocRiepilogativo.Visible = True
        frmChiediGenerazioneDocumenti.chkGeneraConcessioneContratto.Visible = True
        frmChiediGenerazioneDocumenti.chkGeneraBollettino.Visible = True
    
        frmChiediGenerazioneDocumenti.Show vbModal, Me
    
        If Not frmChiediGenerazioneDocumenti.TastoPremuto = "OK" Then
            Unload frmChiediGenerazioneDocumenti
            Exit Sub
        End If
    
        MsgBox "generaDocRiepilogativo = " & frmChiediGenerazioneDocumenti.chkGeneraDocRiepilogativo
    
        Unload frmChiediGenerazioneDocumenti
    
    End Sub
    
    Per semplicità l'ho racchiuso in un commandbutton, il contesto reale è troppo complesso e comunque l'errore si verifica pure qui. Prego notare l'istruzione MsgBox perché è cruciale.

    Questo commandbutton l'ho inserito in due form dai quali normalmente richiamo il form di selezione documenti da stampare. Questi due form contengono entrambi una TabStrip con diversi TAB,alcuni dei quali identici nei due form. Anche questo è importante.

    Quando premo il tasto Command1 nel form chiamante, viene mostrato il form con le checkbox. Se su questo premo OK, e
    • al ritorno nel form chiamante c'è un'istruzione MsgBox (anche non immediatamente dopo, diciamo nella routine A nella quale ho effettuato la chiamata a frmChiediGenerazioneDocumenti o in una routine B chiamata da A), e
    • nel form chiamante ero posizionato su un particolare TAB (lo stesso nei due form)
    allora mi viene restituito l'errore "Run-time error '5': Invalid procedure call or argument".

    Vorrei precisare anche che questo errore mi viene restituito solo se lancio l'eseguibile (file .exe), mentre se eseguo il programma dall'IDE va tutto bene. Inoltre non c'è errore se premo Annulla, oppure se nel form chiamante sono posizionato su un qualsiasi altro TAB. Per la cronaca, il TAB incriminato contiene (racchiusi in un frame) una MSFlexGrid, una ComboBox, una MaskEdBox, qualche label e qualche TextBox.

    Perdonate il post piuttosto complesso, ma è già stata dura giungere a definire così il problema. Spero che riusciate a capire quanto ho scritto e a darmi una mano.

    Grazie, ciao.

  2. #2
    L'avatar di gibra
    gibra ora è in linea Very Important Person
    Post
    6,240
    Like Inviati  
    21
    Like Ricevuti  
    11
    E' difficile capire da cosa dipenda, data la complessità che hai descritto.
    Soprattutto non avendo modo di fare dei test.
    Gli errori che si verificano EXE-sì / IDE-No sono subdoli perchè l'errore c'è ma viene 'sopperito' dall'IDE di VB6.

    Non so proprio cosa dirti se non:

    vedi se riesci a creare un progetto di test che riesca a replicare il problema.

    Altrimenti la vedo dura, per noi, cercare una soluzione.
    Almeno questa è la mia opinione, magari qualche altro membro si è già scornato con questo problema ed in un batter d'occhio ti fornisce la soluzione.

    Ciao
    ℹ️ Leggi di più su gibra ...

  3. #3
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    3,149
    Like Inviati  
    6
    Like Ricevuti  
    6
    L'errore che citi può avere molteplici cause. Una di queste, abbastanza frequente, è il tentativo di impostare il focus su un controllo non (ancora) visibile.
    Concordo con il consiglio di cercare di isolare il problema in un mini progetto più semplice.
    Ciao.
    ℹ️ Leggi di più su Brontolo ...

  4. #4
    meccallous non è in linea Scolaretto
    Post
    158
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da Brontolo Visualizza il messaggio
    [...] Una di queste, abbastanza frequente, è il tentativo di impostare il focus su un controllo non (ancora) visibile [...]
    Che dire... MANDRAKE!!!

    Avevo già iniziato, con un po' di sano olio di gomito, ad eliminare uno ad uno i controlli dal TAB incriminato per vedere quale creava il problema (più che altro sperando che il problema fosse dato da uno dei controlli). Poi, con questa pulce nell'orecchio, ho cercato meglio ed... era proprio un'istruzione di SetFocus! Eliminata la quale il problema sembra non ripresentarsi.

    Ora, la SetFocus si trovava in una routine richiamata dalla Form_Activate del chiamante. Già che ci sei, mi sapresti dire perché la Form_Activate viene richiamata al ritorno dal form di scelta delle stampe solo quando uso l'eseguibile, ma non quando eseguo dall'IDE?

    Comunque, grazie ancora.

  5. #5
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    3,149
    Like Inviati  
    6
    Like Ricevuti  
    6
    Ora, la SetFocus si trovava in una routine richiamata dalla Form_Activate del chiamante. Già che ci sei, mi sapresti dire perché la Form_Activate viene richiamata al ritorno dal form di scelta delle stampe solo quando uso l'eseguibile, ma non quando eseguo dall'IDE?
    Questa mi sembra poco verosimile. Vedrai che se indaghi meglio scoprirai che non è così. E' più probabile invece che l'esecuzione dall'IDE sia più lenta e quindi permetta al controllo che deve ricevere il focus di diventare visibile.
    Ma non voglio esagerare con le predizioni, ho già avuto c..o una volta
    ℹ️ Leggi di più su Brontolo ...

  6. #6
    L'avatar di yronium
    yronium non è in linea Scribacchino
    Post
    1,336
    Like Inviati  
    0
    Like Ricevuti  
    0
    ... comunque è sufficiente mettere una istruzione Me.Show prima dell'istruzione SetFocus.

    Spero sia utile. Ciao.

  7. #7
    meccallous non è in linea Scolaretto
    Post
    158
    Like Inviati  
    0
    Like Ricevuti  
    0
    Non so quale sia la causa della differenza di comportamento, però ho provato a mettere una MsgBox all'inizio della Form_Activate, ed ho visto che ci passa quando eseguo da .exe e non ci passa quando eseguo dall'IDE. Ho anche provato a scrivere un file di log per minimizzare l'impatto sul normale flusso del programma rispetto alle MsgBox, ma è la stessa cosa: al ritorno dal form di scelta delle stampe il .exe passa dalla Form_Activate e l'IDE no.

    Beh, l'importante è saperlo...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Run-time error '713':
    Da fux_vr nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 09-03-2006, 15:03
  2. Run time error 429
    Da Zigo nel forum Visual Basic 6
    Risposte: 20
    Ultimo Post: 02-05-2005, 08:52
  3. Run time error 429
    Da Kiara nel forum Visual Basic 6
    Risposte: 46
    Ultimo Post: 18-02-2005, 13:50
  4. Run Time Error 713
    Da Minchio nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 02-11-2004, 18:51
  5. Run time error 430
    Da lucarr67 nel forum Visual Basic 6
    Risposte: 4
    Ultimo Post: 11-03-2003, 14:13