Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

VB 6.0 - Perdida de datos en una variable sin causa aparente.

Estas en el tema de VB 6.0 - Perdida de datos en una variable sin causa aparente. en el foro de Visual Basic clásico en Foros del Web. Hola a todos, espero que alguien me pueda ayudar porque me estoy volviendo loco. Os explico el problema: voy a recoger datos de un campo ...
  #1 (permalink)  
Antiguo 05/05/2005, 03:42
 
Fecha de Ingreso: junio-2004
Ubicación: Castellón, España
Mensajes: 98
Antigüedad: 19 años, 10 meses
Puntos: 0
VB 6.0 - Perdida de datos en una variable sin causa aparente.

Hola a todos,

espero que alguien me pueda ayudar porque me estoy volviendo loco.

Os explico el problema:

voy a recoger datos de un campo de base de datos
...
1 - sql="SELECT Notas FROM Tabla"
2 - Set obrs = oConn.Execute(sql)

3 - if not obrs.EOF then
4 - obrs.Movefirst
5 - While not obrs.EOF
6 - Observaciones = Observaciones & obrs("Notas")
7 - obrs.MoveNext
8 - Wend
9 - end if
...

Hasta aquí todo parece normal, pero resulta que, teniendo datos en el campo 'Notas', la variable 'Observaciones' me devolvía 'Nulo'. Al darme cuenta de ésto he agregado una línea de inspección y he ejecutado el código paso a paso. Cual ha sido mi sorpresa al encontrar que el valor de obrs("Notas") iba cambiando a medida que ejecutaba líneas:

Línea 3 - Valor de obrs("Notas"): 'Esto es una Prueba de funcionamiento'
Línea 4 - Valor de obrs("Notas"): Null
Línea 5 - Valor de obrs("Notas"): 'Esto es una Prueba de funcionamiento'
Línea 6 - Valor de obrs("Notas"): Null
Línea 7 - Valor de obrs("Notas"): Null
...

¿Alguien puede explicarme que esta ocurriendo? No entiendo Nada.

Última edición por Atzeneta; 05/05/2005 a las 03:51
  #2 (permalink)  
Antiguo 05/05/2005, 08:18
 
Fecha de Ingreso: abril-2005
Mensajes: 137
Antigüedad: 19 años
Puntos: 0
te fijaste en la tabla de la que sacas esta consulta???
posiblemente haya datos Null ahi no crees??
  #3 (permalink)  
Antiguo 06/05/2005, 00:50
 
Fecha de Ingreso: junio-2004
Ubicación: Castellón, España
Mensajes: 98
Antigüedad: 19 años, 10 meses
Puntos: 0
Perdonad mi torpeza pero ya lo he solucionado.

Estaba trabajando con un campo de notas de una tabla heredada. Yo suponía, y suponía mal, que el tipo de datos del campo sería nvarchar o varchar pero me encontré con que el tipo de datos era ntext. El gran tamaño de la variable que llegaba de la base de datos "volvía loca" la ejecución del código y hacía cosas extrañas que no lograba comprender. He cambiado el tipo de datos del campo y se ha solucionado el problema.

De todas formas no entiendo el por qué no da un error o avisa del problema en lugar de volverse loca la ejecución.

Aun así, gracias por haber perdido el tiempo conmigo.
  #4 (permalink)  
Antiguo 06/05/2005, 06:03
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Pues porque seguramente se trate de un error de desbordamiento o parecido. Pero no lo entiendes porque en VB no se ve cuestiones sobre memoria punteros y demás. Es un error muy común en lenguajes más "potentes", aunque VB ya tiene un fallo: no descubrir que se ha desbordado XDDD.
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 05:48.