Newsgroup: it.comp.lang.visual-basic
Titolo: Errore -2147217887

Salve, ho questo bel errore restituito da
Microsoft Cursor Engine
Ho una form con dei campi collegati ad un record set. Alcuni campi sono
formattati come percentuale ed uno come Valuta (DataFormat)
La from mi serve per aggiungere o modificare Articoli di un magazzino.
Quando richiamo la form per aggiungere un record, tutto funziona, ovvero
metto tutti i valori e premo fine.
Da codice faccio Update ed il record viene salvato.
Quando richiamo la form per modificare un record esistente, naturalmente
tutti i campi sono gią riempiti.
Posso modificare qualsiasi campo non formattato e non ci sono problemi con
l'update. Ma se cambio il valore di uno di questi campi, viene fuori questo
errore.
Ho guardato ovunque, e non ho trovato soluzione. Vi prego, mi potete
"salvare la vita"???
Sono ormai 5 giorni che sono fermo con questo problema.

 "salvare la vita"???
Questo è quanto dice microsoft sul tuo errore...
  Note   Many ADO error conditions raise the all-purpose "Errors occurred"
error. Good luck figuring out what this means. We haven't found any way to
determine the actual error when we get this error value.
Auguri anche da parte mia.
Sergio.
p.s. Prova a postare un po' del codice incriminato, vediamo se salta fuori
qualcosa di interessante


Private Sub cmdFine_Click()
    If ControllaImmissione(Me, msResult) Then
        Magazzino.rsArticoli("AvvisoRiordino").Value =
cboAvvisoRiordino.ItemData(cboAvvisoRiordino.ListIndex)
        'MsgBox Magazzino.rsArticoli("IVA").Value
        On Error Resume Next
        Magazzino.rsArticoli.Update
        If Err.Number <> 0 Then
            MsgBox "Articolo non aggiunto." & vbNewLine & vbNewLine &
"Controllare l'errore:" & vbNewLine & Err.Description, vbQuestion,
Err.Source
            cboAvvisoRiordino.ListIndex =
Magazzino.rsArticoli("AvvisoRiordino").Value - 1
            txtCodice.SetFocus
        Else
            Unload Me
        End If
        On Error GoTo 0
    Else
        MsgBox CreaMessaggio(msResult), vbInformation
        cboAvvisoRiordino.ListIndex =
Magazzino.rsArticoli("AvvisoRiordino").Value - 1
        txtCodice.SetFocus
    End If
End Sub
Sono disperato e non so più neanche cosa ti potrebbe servire per capirci
qualcosa da quant sono fuso.
Ti posso solo dire che fino a pochi giorni fa ero su un WIN98 senza
problemi, ora mi sono spostato su un WINXP e risiamo da capo ma stavolta la
soluzione non viene fuori

 occurred" error. Good luck figuring out what this means. We haven't
Ma ci prendono in giro? (è una domanda retorica ndr) :(

*Glauco Cucchiar* ha scritto:
Dici che il problema si presenta aggiornando qualche campo formattato e non
con campi non formattati. Innanzi tutto, la formattazione la fai tu o il
controllo che "ti collega i dati al form"?
Personalmente, per non saper nè leggere, nè scrivere, non salvo MAI campi
_formattati_ direttamente, ma, semmai, tolgo ogni formattazione e salvo
tutti i campi numerici trasformando il separatore interi/decimali in "."
(sempre, anche se le impostazioni indicano la ,) e, come detto, tolgo
eventuali separatori fra le migliaia.
Per fare una prova al volo, simula la situazione che ti dà errore, forza
(nel codice) il campo a "12.45" (comunque compatibile col campo di
destinazione) ed esegui l'Update. Deve (!) andare.

 Ma ci prendono in giro? (è una domanda retorica ndr) :(
Giuro.
Copincollato dal testo che viene proposto da msdn se si effettua una ricerca
con il numero d'errore segnalato da Glauco.
A volte, gli stessi autori che scrivono per microsoft hanno dei sussulti di
pudore....
Salutoni
Sergio

 stavolta la soluzione non viene fuori
Strano... rileggendo meglio la descrizione delle condizioni in cui si
verifica l'errore, avrei consigliato di verificare se la tabella ha una
chiave univoca, e se questa viene raccolta nel tuo recordset... ma se su W98
il problema non dovrebbe essere quello....
Approfondiamo l'analisi: come fai ad aprire il recordset?
Salutoni
Sergio


Dunque, come accesso ai dati uso Dataenvironment.
Avendo nella form associato i txtbox e altro controlli direttamente al
recordset (DataSource e Datamember), quando apro la form , si apre anche il
recordset, ovvere basta che faccio frmAddArticolo.show.
A questo punto, nell'activate faccio Magazzino.rsArticoli.Filter =
"IDArticolo =" & CodiceArt
Dove codice art è il codice opportunamente memorizzato.


Ora faccio questa prova

 Dunque, come accesso ai dati uso Dataenvironment.
Bon.. Passo. Lavoro sempre configurando e gestendo i recordset da codice, i
dataenvironment non so neanche dove stanno di casa.
Salutoni
Sergio

 sia quando inserisco un nuovo articolo, sia quando lo modifico
Ci mancherebbe pure che si comporti in modo diverso...!


Allora, ho provato a mettere questa stringa prima di .Update
        Magazzino.rsArticoli("IVA").Value = Val(txtIVA.Text) / 100
Bene, in rsArticoli("IVA").value c'è 0,2 se nel text avevo scritto 20
giusto, ma update mi da errore, allora ho scritto
        Magazzino.rsArticoli("IVA").Value = Replace(Val(txtIVA.Text) / 100,
",", ".")
che giustamente mi trasforma 0,2 in 0.2, ma quando vado a vedere il valore
di rsArticoli("IVA").Value ci trovo nuovamente 0,2 e l'update continua a non
funzionare
No, siamo fuori strada, non dipende da questo secondo me, ora provo a
cambiare riferimenti ado, provo 2.7, poi magari torno a 2.3 e faccio qualche
prova

 prova
Butta via quell'oscenità del DataEnv...


be.... visto che ormai sono fermo da 5 giorni...... visto che di bachi ce ne
sono a fraccate.....
Ormai provo a metterci tutto in questa pentolaccia


be, non è nulla di particolare, solo che non devi farti tutte le
dichiarazioni da codice come il dim, set, Sql, open ecc, ma ti trovi il
recordset bello e pronto solo da usare.

 Ormai provo a metterci tutto in questa pentolaccia
Richiedo: E' qualche Data_eccetera?


ormai non posso, poi visto che mi ha funzionato per tutto...
Poi quando ho cambiato computer.... bo chissà

 il recordset bello e pronto solo da usare.
Con il risultato di ottenere degli errori incomprensibili.... ;-)
Salutoni, e auguri rinnovati.
Sergio


Ma a questo punto non penso che sia il dataenvironment, perchè ho usato
direttamente il recordset.
Anche se è messo a disposizione dal dataenv, non ho usato nessuna proprietà
o tool specifico, ma ho assegnato il valore direttamente.
Dici che rompe ugualmente??

 Ok, ma come può lui interpretare come depositarli?
Depositarli in che senso?
Il format è solo la visualizzazione, ma il valore che ho messo è giusto.
Ad esempio nel text box io scrivo 0,1 e quindi vedo 10,00%


 Dici che rompe ugualmente??
Tutto ciò che inizia per Data rompe, prima ti dà la sensazione che sia tutto
facile, poi non accetta la password, segnala errori strani e non
documentati, oppure non li segnala e non funziona lo stesso, poi non va con
97, ma con 2000, ovviamente con diverse sintassi va al contrario, SQL Server
poi?, poi non si aggiorna, poi non refresha, poi ...
Data_eccetera? Se lo conosci, lo eviti! C'ho aperto un topic.
Aspetto che Bill mi dica che non è vero.
Gli sputo in un occhio. Lo stesso della torta.

 Gli sputo in un occhio. Lo stesso della torta.
Fatica sprecata, porta gli occhiali.
Salutoni
Sergio

 Fatica sprecata, porta gli occhiali.
Farei come se dovessi menare uno con gli occhiali (se, proprio io...)
Per non finire in galera, glieli tolgo prima.

 Ma ci prendono in giro? (è una domanda retorica ndr) :(
Oppure Lupo ha ragione... bevono.
Bye, G.

Soluzione
        rsDummy.Open "SELECT * FROM Articoli WHERE IDArticolo=" &
Magazzino.rsArticoli("IDArticolo").Value, Magazzino.Connection1,
adOpenKeyset, adLockOptimistic
        For iCiclo = 1 To rsDummy.Fields.Count - 1
            rsDummy(iCiclo).Value = Magazzino.rsArticoli(iCiclo).Value
        Next
        Magazzino.rsArticoli.CancelUpdate
        rsDummy.Update
        rsDummy.Close
Quindi si presume che sia proprio DataEnvironment.
Be ragazzi che dire......
Un grazie immenso a tutti per i vostri consigli e per la vostra
disponibilità.
Ormai mi tocca tenere il dataenvironment, quando ho un po di tempo farò il
refactoring dell'intero progetto