Ayuda urgente: Campos Number

ACRV
16 de Noviembre del 2005
Muy buenas,

Tengo un problema al traerme n煤meros de Oracle y realizar operaciones con ellos. Si tengo en una tabla 2 campos NUMBER y los consulto con un rercorset, al intentar sumarlos despu茅s me da un error de tipo:

Dim a, b, res

'HAGO LA CONSULTA DE LA BASE DE DATOS
cadConexion = "Provider=OraOLEDB.Oracle.1;Password=ademanda_owner;" _
& "Persist Security Info=False;User ID=ademanda_owner;Data Source=ademanda"
set conn = Server.CreateObject("ADODB.Connection")
conn.Open cadConexion
Set rs = Server.CreateObject("ADODB.Recordset")

'SQL = "SELECT A, B from TABLA"
rs.Open SQL, conn,3,3
a = Rs.Fields(0)
b = Rs.Fields(1)
res = a + b

Tipo de error:
Error de Microsoft VBScript en tiempo de ejecuci贸n (0x800A000D)
No coinciden los tipos

He probado tambi茅n conectarme con el proveedor de Microsoft en vez de el de Oracle y tampoco funciona. Tambi茅n he probado poner los campos INTEGER en vez de NUMBER y tampoco. De la 煤nica forma que me ha funcionada ha sido forzando los tipos con la funci贸n CLng():

res = CLng(a) + CLng(b)

Pero esto no me vale, ya que estoy migrando una aplicaci贸n con much铆simas p谩ginas.

Espero vuestra ayuda, muchas gracias de antemano. Saludos,

a
16 de Noviembre del 2005
Prueba a indicar el tipo en las variables que defines:
Dim a as long
Dim b as long
dim res as long

acrv
16 de Noviembre del 2005
Hola,

El c贸digo que he mostrado se encuentra dentro de una p谩gina ASP, por lo que todas las variables son de tipo Variant.

Gracias de todas formas

Leonardo
16 de Noviembre del 2005
Es posible que algun valor a o b contengan un valor nulo

Rodolfo Reyes
16 de Noviembre del 2005
Pues hasta donde conozco de ASP tienes que utilizar algo como CLng o Cint, etc. para poder hacer operaciones aritmeticas con los datos de un query.

Como bien lo dijiste el tipo de datos que se utiliza el Variant, lo cual significa que en tiempo de ejecuci贸n define el tipo de dato real, y por defaul utiliza tipo caracter, para poder definir cualquier otro tipo lo tienes que especificar por medio de la funcion que tu mismo indicaste.