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

Errore di Runtime

  1. #1
    L'avatar di cippalippa
    cippalippa non è in linea Topo di biblioteca
    Ciao a tutti,
    mi è uscito l'errore di runtime n. -2147352571 (80020005) "Incompatibilità tra i tipi".
    Siccome stò controllando il codice di un'altra persona, non sono in grado di darvi ulteriori informazioni.
    Forse ha a che fare con un filtro su un campo data.

    Sapete dirmi quando esce quest'errore?
    ℹ️ Leggi di più su cippalippa ...

  2. #2
    L'avatar di gibra
    gibra non è in linea Very Important Person

  3. #3
    L'avatar di cippalippa
    cippalippa non è in linea Topo di biblioteca
    Il problema è che non so nemmeno che codice ha dato l'errore... mi è stata passata l'intera applicazione e così, per caso, mi è venuto questo errore.
    Oltre a tutto, non essendo mio (il codice), non so nemmeno se posso farlo vedere...

    Per questo mi basterebbe capire in quale contesto esce questo errore.
    ℹ️ Leggi di più su cippalippa ...

  4. #4
    L'avatar di yronium
    yronium non è in linea Scribacchino
    Quote Originariamente inviato da cippalippa Visualizza il messaggio
    mi è uscito l'errore di runtime n. -2147352571 (80020005) "Incompatibilità tra i tipi".
    Siccome stò controllando il codice di un'altra persona, non sono in grado di darvi ulteriori informazioni.
    Forse ha a che fare con un filtro su un campo data.
    Ciao, cippa. Quando gli errori sono numeri grandi e negativi - e spesso hanno tra parentesi una conversione nel formato 800nnnn... - sono quasi sicuramente errori non sollevati da VB ma da ADO.

    Nel caso del tuo errore mi sento abbastanza sicuro di poter affermare che si è verificato durante un accesso al database da parte di ADO. E visto che si tratta di incompatibilità tra tipi (di dati), l'incompatibilità sul database si verifica quando si tenta di scrivere un dato. Infatti quando i dati vengono letti dal db l'incompatibilità può verificarsi solo se si assegna il contenuto di un campo del recordset ad una variabile di tipo diverso, ma in tal caso il contenuto del campo è già in nostro possesso senza che il database abbia generato errori: in tale caso un eventuale errore verrebbe sollevato da VB, non da ADO.
    Quindi si tratta di un errore che si verifica quando si tenta di scrivere nel db, ed è un errore che è restituito dal db stesso, cioè è il db che non accetta un certo valore per un campo. Può darsi che ci sia una data in formato esteso e che si stia cercando di scriverla in un campo smalldatetime, oppure un valore stringa in un campo numerico, o un numero grande in un campo byte.

    Inoltre tu non ci dici quando l'errore ti è uscito, ma se non stavi scrivendo esplicitamente nel db (salvando delle modifiche ad un record esistente o ad un nuovo record), significa che il programma sta tentando tale scrittura in background. Di solito queste operazioni sono correlate a certi aggiornamenti e si tende a dimenticarsene. Ad esempio, se io creo una fattura nella tabella Documenti creo contemporaneamente delle scadenze nella tabella Effetti, e ciò in modo trasparente per l'utente che non si accorge di questa ulteriore scrittura. Se io ottenessi questo errore salvando la fattura andrei naturalmente a ricontrollare tutti i tipi di campo nella tabella Documenti, ma dovrei anche ricordarmi di controllare la tabella Effetti e questo non è intuitivo. Controlla quando può avvenire qualche modifica dei dati nel db nascosta alla normale attività dell'utente.

    Poi, gli ultimi due commenti:
    - DBMS? O dobbiamo indovinarlo da soli? Dovresti avere imparato che non ci piace giocare a Venti Domande prima di aver compreso il problema, e che ci devi dire tutto ciò che sai. Se c'è un segreto industriale, rimanda pure indietro il programma al mittente e digli di contattare l'autore (in toscano, digli di togliersi il "d" dal "c" da solo).
    - utilizzare il debug? Hai il codice in mano, noh? Cerca di riprodurre l'errore nella IDE di VB, e quando ottieni l'errore entra in modalità Debug e cerca di identificare la riga dove si manifesta e che cosa lo causa.

    Spero sia utile. Non ti posso dire molto altro, e se non ti basta ci devi dare più informazioni. Ciao.

  5. #5
    L'avatar di cippalippa
    cippalippa non è in linea Topo di biblioteca
    Grazie.
    Il debug dava come errore un rs.filter...
    Mi è venuto da pensare che potesse essere stato chiesto di filtrare dati in un campo con un nome sbagliato.
    Il db è Access, ma non so che versione!
    ℹ️ Leggi di più su cippalippa ...

  6. #6
    L'avatar di Dainesi
    Dainesi non è in linea Scolaretto
    Quote Originariamente inviato da cippalippa Visualizza il messaggio
    Grazie.
    Il debug dava come errore un rs.filter...
    Mi è venuto da pensare che potesse essere stato chiesto di filtrare dati in un campo con un nome sbagliato.
    Il db è Access, ma non so che versione!
    Potrebbe essere un errore di casting in quanto il riferimento del filtro potrebbe essere testuale su un campo numerico.
    Per la versione di Access utilizza DAO e testa le Properties dell'elemento Database

  7. #7
    L'avatar di cippalippa
    cippalippa non è in linea Topo di biblioteca
    Grazie .
    ℹ️ Leggi di più su cippalippa ...

  8. #8
    L'avatar di yronium
    yronium non è in linea Scribacchino
    Quote Originariamente inviato da cippalippa Visualizza il messaggio
    Il debug dava come errore un rs.filter...
    Giusto. Ecco, in questo caso l'errore è restituito da ADO anche se non si sta scrivendo nel database, ed è una specie di eccezione a quanto ti avevo detto prima.

    Il meccanismo del rs.Filter sta nel confrontare un valore di filtro con il contenuto di un campo. Ma se il valore di filtro è di tipo diverso dal contenuto del campo si può ottenere un errore del genere. (Il fatto che VB non sollevi alcun errore mi fa ipotizzare anche che la variabile che contiene il valore di filtro sia dichiarata come Variant, ma non è sicuro: in effetti, una variabile di un certo tipo può essere perfettamente lecita per VB ma non essere compatibile con i dati del campo). Il valore di filtro potrebbe essere stato passato tra virgolette quando magari va confrontato con un campo numerico.

    Quando il debug ti ferma l'esecuzione e la riga che assegna rs.Filter è evidenziata in giallo, se tu scrivi "?rs.Filter" nella finestra Immediata e premi Invio ottieni il valore corrente di questa proprietà, che deve corrispondere ad una clausola WHERE del linguaggio SQL senza però la parola Where, ad esempio "Cognome = 'Rossi' AND Età = 35". Se i valori dei campi numerici (nel mio esempio, il 35) sono racchiusi tra virgolette si potrebbe ottenere questo errore. Ma ripeto: hai il codice? Esegui il debug. Intendo dire, quando sei in modalità debug verifica il valore delle variabili (basta passarci sopra con il mouse, o scrivere "?nomevariabile" nella finestra Immediata), e verifica come sono state costruite, ed eventualmente torna indietro con l'esecuzione per costruirle di nuovo. Tu puoi farlo, noi no.

    La versione di Access non è influente.

  9. #9
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Quote Originariamente inviato da cippalippa Visualizza il messaggio
    Il problema è che non so nemmeno che codice ha dato l'errore... mi è stata passata l'intera applicazione e così, per caso, mi è venuto questo errore.
    Oltre a tutto, non essendo mio (il codice), non so nemmeno se posso farlo vedere...

    Per questo mi basterebbe capire in quale contesto esce questo errore.
    Quando ti mostra il messaggio di errore, invece di fare clic su OK premi CTRL+BREAK e dovrebbe mostrarti la riga che ha generato l'errore, di solito.
    Ma comunque dipende anche se il tipo che a scritto il codice ha inserito qualche gestore dell'errore.

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

  10. #10
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Quote Originariamente inviato da cippalippa Visualizza il messaggio
    Grazie.
    Il debug dava come errore un rs.filter...
    Mi è venuto da pensare che potesse essere stato chiesto di filtrare dati in un campo con un nome sbagliato.
    Il db è Access, ma non so che versione!
    Ah, ma allora avevi qualche indicazione...

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

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. errore di runtime '94'
    Da maxpoz nel forum Microsoft Access
    Risposte: 20
    Ultimo Post: 17-02-2019, 22:19
  2. Errore RunTime 424
    Da mattew89 nel forum Microsoft Access
    Risposte: 3
    Ultimo Post: 02-04-2017, 18:51
  3. Errore runtime
    Da emilor66 nel forum Microsoft Word
    Risposte: 2
    Ultimo Post: 11-07-2011, 13:50
  4. Errore runtime 3043 - errore di rete o disco
    Da h0m3r nel forum Microsoft Word
    Risposte: 5
    Ultimo Post: 04-02-2011, 21:15
  5. Errore di Runtime 28
    Da Sonnyland nel forum Visual Basic 6
    Risposte: 4
    Ultimo Post: 21-06-2005, 17:36