Newsgroup: it.comp.lang.visual-basic
Titolo: [VB6] help con db vfp

Salve a tutti,
mi è capitato un db in formato visualfox pro con un numerico che mi viene 
visualizzato con 3 asterischi "***". Quando da vb6 faccio il movenext su 
quel record (con ado) mi restituisce errore: "Il provider di dati o un altro 
servizio ha restituito uno stato E_FAIL."... Con il client di vfp lo apro 
benissimo vedendo pero'sempre i 3 asterischi...
Googlando mi pare di aver capito che quando ci sono 3 asterischi significa 
che il numero è troppo grande, ma come faccio a non mandare vb in errore? A 
me andrebbe bene anche leggere quel campo con valore 0, ma non ho la 
possibilità di filtrarlo visto che appena mi posiziono nel record ottengo 
l'errore...
Grazie 1000
A. 


intercetta l'errore
dall'orribile on error resume next
al meno orribile
on error goto GestErr
e poi tratti l'errore nell'etichetta

 ha scritto nel messaggio 
news:54ba242e-57c5-4802...@x42g2000yqx.googlegroups.com...

Io fatto un test con l'orribile on error resume next prima del movenext... 
il risultato è che mi loopa sempre nel record precedente a quello 
difettoso... A questo punto potrei mostrare una finestra di errore ed uscire 
dalla procedura, ma perchè vfp riesce a visulizzarlo e io no?
A.

 l'errore...
Cioè, se tu fai un banale progettino vuoto senza alcun controllo, apri 
il recordset e fai movenext fino a quel record, vb6 va in errore?
Ma il recordset come lo apri?
Statico, dinamico, col cursore lato client o lato server?
Alberto


Ciao e grazie 1000
A. 

Il 24/08/2010, Andromeda ha detto :

Prova a spippolare sul LockType (nel senso di provarne di diversi e 
vedere se cambia), dopodichè resta da verificare quel provider 
vfpoledb, che non sapevo neanche esistesse, per FoxPro ho sempre usato 
provider diversi (non ricordo il nome, ma sicuramente non quello).
Ultima chance (ma è un canchero brutto come la peste), è creare un DSN 
e passare per ODBC.
Alberto


Grazie Alberto!
A. 

     Loop
Non conosco vfp, ma non puoi provare a fare una select ad hoc?
CASE WHEN CAMPO>limite THEN 0 ELSE CAMPO AS NOMECAMPO
IIF(CAMPO>Limite,0,CAMPO)
Oppure se non ti interessa la righa WHERE CAMPO<limite

 Oppure se non ti interessa la righa WHERE CAMPO<limite
Aggiungo questo:
http://www.vbforums.com/showthread.php?t=351890

 ha scritto nel messaggio 
news:i500g6$m5n$1...@tdi.cu.mi.it...

Ho provato a commentare la riga del .CursorLocation... funziona 
perfettamente! Facendo un msgbox del record col numerico che veniva indicato 
con "***" vedo un testo vuoto...

 con "***" vedo un testo vuoto...
Ciò che affermi non ha senso.
Cosa significa "fare un msgbox di un record"?
Forse intendevi un msgbox col valore del campo nel record incriminato, 
ma se hai detto che è un numerico, il vuoto non corrisponde ad alcuna 
funzione di conversione da numerico a stringa...
Come hai convertito il Value in stringa?
Ragazzi, almeno nel 2010, potremmo ragionare coi tipi?
Alberto

 con "***" vedo un testo vuoto...
Qualche volta con firebird mi era capitato qualche comportamento anomalo
con cursori lato client, non ricordo però cosa, ma problemi non troppo
dissimili dai tuoi (nel senso che scorrendo il recordset ottenevo errori
che non avevo con cursori lato server).

 non l'ho convertito: msgbox rs!qta
Quindi hai usato un CStr implicito.
CStr non può restituire stringa vuota.
Non è che sei sotto On Error e stai facendo un CStr di un Null?
Alberto

 ha scritto nel messaggio 
news:i52i1g$ung$1...@tdi.cu.mi.it...

No il codice è pari pari quello che ho postato sopra... Cmq direi che alla 
fine il problema sta nel cursore lato client che ha comportamenti anomali...
A. 

Nel suo scritto precedente, Andromeda ha sostenuto :

Puoi pensare come vuoi.
Però un CStr di un numerico che restituisce stringa vuota, è 
un'anomalia.
Se dici che adesso va e sei contento, sbagli approccio. Un'anomalia non 
compresa promette bug il giorno dopo.
Forse, quel campo non è numerico...
Anzichè usare quella cosa da brividi della sintassi col punto 
esclamativo, usa una cosa più decente, tipo:
RS.Fields.Item("nome colonna").Value, e prova a guardarne il .Type. Se 
per caso ti dice che è non numerico, dovrai gestirlo di conseguenza, 
perchè eventuali decimali potrebbero funzionare bene oggi sul tuo 
sistema con le tue impostazioni internazionali, ma non domattina con 
impostazioni internazionali diverse.
Poi, per carità, se stai sviluppando per diletto o per uso personale, 
tutto va bene.
Ma se per assurdo tu stessi sviluppando questo oggetto per poi darlo ad 
un cliente, certe cose DEVONO essere gestite accuratamente, altrimenti 
la figura di merda la facciamo genericamente tutti come categoria 
professionale...
Alberto