PDA

View Full Version : [VB6] Tipo di un campo di recordset


Spike79
12-02-2009, 18:02
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...

Spike79
13-02-2009, 08:34
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"....

MarcoGG
13-02-2009, 09:15
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... ;)

Spike79
13-02-2009, 09:20
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