View Full Version : [VB6] Tipo di un campo di recordset
Ciao, ho uno strano problema con un campo di un recordset (ADODB) che punta ad una tabella Access 2003....mi spiego.
Il campo sulla tabella è numerico lungo con 2 decimali, e fin qui, tutto ok...il problema è che da VB mi viene letto (con una semplice SELECT) come "Type = adInteger" e quindi viene 'troncato' con approssimazione.... come diavolo faccio a dire a VB che è un LONG ????
E' la prima volta che mi capita una cosa del genere....
nardellu
12-02-2009, 19:45
Ciao, ho uno strano problema con un campo di un recordset (ADODB) che punta ad una tabella Access 2003....mi spiego.
Il campo sulla tabella è numerico lungo con 2 decimali, e fin qui, tutto ok...il problema è che da VB mi viene letto (con una semplice SELECT) come "Type = adInteger" e quindi viene 'troncato' con approssimazione.... come diavolo faccio a dire a VB che è un LONG ????
E' la prima volta che mi capita una cosa del genere....
fai la connessione guidata? oppure tramite codice?
ormai non uso più vb6... cmq vedi qui: http://www.java2s.com/Code/VB/Language-Basics/IntLongconversion.htm se ti può essere utile la soluzione di convertire il valore dopo averlo estrapolato dalla tabella...
Dunque, io uso degli oggetti ADODB (Connection, Recordset) per ottenere appunto un recordset così:
rs_prova.open "Select campo from tabella", Conn
Se poi faccio:
Dim Pippo as long
Pippo = rs_prova.fields("campo")
Noto che in rs_prova.fields("campo") c'è un valore numerico approssimato e che il suo "Type" è adInteger, quando invece sul DB è un "Numerico lungo"....
Il campo sulla tabella è numerico lungo con 2 decimali, e fin qui, tutto ok...il problema è che da VB mi viene letto (con una semplice SELECT) come "Type = adInteger" e quindi viene 'troncato' con approssimazione.... come diavolo faccio a dire a VB che è un LONG ????
E' la prima volta che mi capita una cosa del genere....
Se in Access hai un numerico che deve avere 2 cifre dopo la virgola, il tipo Long di VB6 ( che è un intero "lungo" ) ovviamente lo troncherà.
Prova ad usare invece un Double, e con la funzione Format, se è il caso, puoi sempre limitarne a piacere il numero di cifre decimali... ;)
Se in Access hai un numerico che deve avere 2 cifre dopo la virgola, il tipo Long di VB6 ( che è un intero "lungo" ) ovviamente lo troncherà.
Prova ad usare invece un Double, e con la funzione Format, se è il caso, puoi sempre limitarne a piacere il numero di cifre decimali... ;)
Grazie, infatti è la prova che stavo facendo...ora vedo di capire se quello che mi passa il db può fare sta modifica al type in modo "indolore" per i suoi dati...sennò lo strozzo e la modifica la faccio lo stesso :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.