Foros del Web » Programando para Internet » ASP Clásico »

no puedo sumar campos de una consulta de BD

Estas en el tema de no puedo sumar campos de una consulta de BD en el foro de ASP Clásico en Foros del Web. Hola a todos , tengo un problema que creo que es muy pequeño, pero que me esta probocando un dolor de cabeza . Hago una ...
  #1 (permalink)  
Antiguo 26/08/2005, 09:40
Avatar de totoro  
Fecha de Ingreso: septiembre-2003
Mensajes: 34
Antigüedad: 20 años, 9 meses
Puntos: 0
no puedo sumar campos de una consulta de BD

Hola a todos , tengo un problema que creo que es muy pequeño, pero que me esta probocando un dolor de cabeza .

Hago una consulta a una Base de datos en la cual debe darme las compras y consumos de un insumo. Eso lo hace super bien, pero dentro del ASP quiero que calcule una columna en la cual me de el saldo de insumos por cada registro, osea

Cita:
Detalle U Entrada U Salidad U Saldo
Saldo I 10 ----- 10
Compra 100 ----- 110
Consumo ----- 20 90
Por lo tanto lo que hice fue crear una variable que almacenara una sumatoria de la siguiente forma dentro del

DO while not rs.Eof
USaldo = USaldo + rs("U Entrada") - rs("U Salidad")
........

Todo perfecto.... hasta que al ejecutar el script salio el siguiente error

Tipo de error:
Error de Microsoft VBScript en tiempo de ejecución (0x800A000D)
No coinciden los tipos
/puente/lista.asp, line 102

Es obvio que toma a rs("U Entrada") y rs("U Salidad") como variables del tipo Dato por lo cual no puede sumarlos, pero al tratar de de convertirlas con CInt da otro error de consistencia.

Realmente esto me mata ya que pense que sería muy sencillo mostrar una tabla de movimientos de insumos.

Bueno si me pueden ayudar se los agradecería muchísimo.
  #2 (permalink)  
Antiguo 26/08/2005, 09:53
 
Fecha de Ingreso: junio-2005
Mensajes: 114
Antigüedad: 19 años
Puntos: 0
Una opción sería cambiar tu select para que ya traiga la diferencia:

select ("U Entrada") -("U Salida") As total

O algo así.
  #3 (permalink)  
Antiguo 26/08/2005, 10:03
Avatar de totoro  
Fecha de Ingreso: septiembre-2003
Mensajes: 34
Antigüedad: 20 años, 9 meses
Puntos: 0
Gracias por responder tan rapido, pero lo que tu plantes solo da como resultado las diferencias de un solo registro. Lo que planteo es que si inicio el 01-01-2005 con 10 unidades de un producto, luego compro el 12-02-2005 100 unidades el saldo debe ser de 110, luego el 24-02-2005 realizo un consumo de 20 unidades por lo cual el saldo que queda para la fecha es de 90 unidades.

Se puede tratar de calcular en una consulta SQL pero es muy complicado , sobre todo si hay compras y consumos en un mismo dia, por eso trate de hacerlo en ASP y calcular los saldos con variables.

Gracias de todas formas, por tu ayuda.
  #4 (permalink)  
Antiguo 26/08/2005, 10:10
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Cita:
Es obvio que toma a rs("U Entrada") y rs("U Salidad") como variables del tipo Dato por lo cual no puede sumarlos, pero al tratar de de convertirlas con CInt da otro error de consistencia.
¿pues de qué tipos son "U Entrada" y "U Salidad"?

PD: ¿No deberían llamarse "U_Entrada" y "U_Salidad"?
  #5 (permalink)  
Antiguo 26/08/2005, 10:11
 
Fecha de Ingreso: junio-2005
Mensajes: 114
Antigüedad: 19 años
Puntos: 0
Te deben estar jodiendo los nulos, probá

if IsNumeric(valor) then
'numero
else
0
end if

Sdls. Edum.
  #6 (permalink)  
Antiguo 26/08/2005, 10:30
Avatar de totoro  
Fecha de Ingreso: septiembre-2003
Mensajes: 34
Antigüedad: 20 años, 9 meses
Puntos: 0
edumferreyra, gracias por el dato, pero te cuento "rs" es un recordSet por lo cual rs("U Entrada") es un campo de una tabla. Si por ejemplo hago la siguiente script

.....
DO while not rs.Eof
response.write (rs("U Entrada") & "<br>")
rs.MoveNext
LOOP
.....

me da como resultado

121723
0
0
12000

Como vez los datos son numericos, y lo mismo pasa con rs("U Salida")

pero si quiero crear el contador de saldo:

totalU = totalU + rs("U Entrada") - rs("U Salida"), da Error

Si lo hago de la forma que tu plantes

if (IsNumeric(rs("U Entrada"))) then totalU = totalU + rs("U Entrada") End If
if (IsNumeric(rs("U Salida"))) then totalU = totalU - rs("U Salida") End If

la pagina se carga , pero totalU siempre dara 0

¿Que puedo hacer?

Gracias de todos formas por tu aporte, con eso clarifico que es un problema de reconocimento de tipo de valor (string o numero).
  #7 (permalink)  
Antiguo 26/08/2005, 14:06
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 21 años, 6 meses
Puntos: 0
Los datos que muestras son numericos, pero la experiencia me demuestra que los toma como valores string.

Haz algo así
do while not mr.eof
intValorAhora = mr("VALOR")
intTotal = intTotal + intValorAhora
mr.movenext
loop
mr.close

Puede que con eso lo arregles.
__________________
Tu portal de manga y anime.
  #8 (permalink)  
Antiguo 29/08/2005, 13:51
Avatar de totoro  
Fecha de Ingreso: septiembre-2003
Mensajes: 34
Antigüedad: 20 años, 9 meses
Puntos: 0
Gracias meru-kun, ese fue un buen dato, aunque segui teniendo el mismo error, asi que estudiando los tipos de datos de ASP me encontre con la funcion CDbl, muy util para transformar a digitos grandes por lo cual coloque:

UTotal = UTotal + CDbl(rs("U Entrada")) - CDbl(rs("U Salida")) y Bingo , ya puedo calcular los saldos.

La experiencia me enceño que es mejor seguir con PHP, tengo mucha restriccion de comandos. De todos modos muchas gracias por la ayuda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:55.