Newsgroup: it.comp.lang.visual-basic
Titolo: ADO (RecordSet) e campo data

Salve, ho un problema con un controllo ADO che ho in un software piuttosto
vecchio da modificare.
Purtroppo si tratta di software legacy, quindi sarebbe preferibile non
cambiare il controllo. Il problema e' il seguente:
Ho una chiamata a un campo del recordset:
rsUtenti.Fields("DTMDATANASCITA").Value
che da errore in tutti i casi in cui la data e' "strana". Anche facendo
Watch della variabile, non viene riportato il valore del campo ma
l'errore.
Ad esempio, ho molte date (si tratta di un db di un cliente) scritte come
"16/07/0030", con i due zeri davanti un anno a due cifre. Non c'e' 
possibilita' di intervenire sul database che, per altro, non da problemi
quando una data del genere viene inserita perche' la riconosce come "anno
30 del primo secolo".
Quello che mi chiedo e':
1) Per quale motivo la chiamata a Value da errore, dato che nel database
il dato e' memorizzato correttamente?
2) C'e' modo di prendere comunque il valore contenuto nel campo?
3) Esistono alternative ad ADO?
Grazie a chiunque sapra' darmi qualche dritta
--
 Giuseppe Sollazzo
 MSc in Computer Science
 Department of Computer Science, University of Bologna
--
 
http://www.cs.unibo.it/~gsollazz
 
 blog: 
http://gsollazz.web.cs.unibo.it/cgi-bin/blosxom.cgi
--
 mailto:
gsol...@cs.unibo.it
, 
punto...@gmail.com
 (also g'talk)
 icq:11004446, 
msn:pe...@orkus.it
, skype:giuseppe.sollazzo   
--
It's tough to make predictions, especially about the future
                                             ("Yogi" Berra)

 3) Esistono alternative ad ADO?
DAO, oppure accedi in binario al file dei dati, ma mi sa che ti 
complichi la vita.
Alberto
-- 
Fabio Fazio: Se siamo alleati come mai nei nostri bar si vende Coca 
Cola e nei bar americani non si vende l'amaretto di Saronno?

 
--


 detto ad ADO "aspettati una data").
Beh, se tu fai:
datanascita = rsUtenti.Fields("DTMDATANASCITA").Value
mi auguro tu sappia che quella cosa significa "metti nella variabile 
DataNascita il valore del campo ecc...".
Quindi, se DataNascita è di tipo Date, per inchiodarci dentro il valore 
del campo, vb deve convertire ciò che trova nel .Value (che immagino 
sia una stringa) in una Date. Ma non ci riesce.
Premendo F2 sopra a DataNascita ne vedi la dichiarazione. Presumo sia 
As Date.
Basta che tu crei una nuova variabile di tipo string, ci inchiodi il 
.Value, poi te la scandisci e valuti se l'anno ha bisogno o meno di 
essere 'lavorato' per farlo accettare (è stato il mio esame di 
Informatica I).
Ciao
Alberto
Alberto
-- 
Friedrich Nietzsche: Un po' di salute ogni tanto è il miglior rimedio 
per l'ammalato.

 As Date.
Ehm, devo essermi spiegato male...
Il problema e' proprio nella chiamata a value. Se aggiungo alle variabili
in watch rsUtenti.Fields("DTMDATANASCITA").Value (e non la variabile cui 
viene assegnata) mi viene segnalato "Error" dentro il valore. Cosa che non
capita invece quando la data e' nel formato giusto (17/08/2005).
Quindi il problema e' precedente all'assegnamento...
Beppe


 Quindi il problema e' precedente all'assegnamento...
A questo punto serve sapere che db è, che provider utilizzi, il tipo 
della colonna incriminata, che versione di Ado usi.
Aggiungo che anche lasciare che avvenga l'errore di runtime, e postare 
codice e descrizione dell'errore, aiuta.
Alberto
-- 
La forza di volontà è guardare negli occhi una ragazza in topless.