Visual Basic - desbordamiento

Life is soft - evento anual de software empresarial
 
Vista:

desbordamiento

Publicado por Karlillos (29 intervenciones) el 19/01/2007 16:32:45
Buenas tengo el siguiente codigo

Dim caja, frac, art, inter As String
Dim number, number1, number2 As Double
Dim cab1, cab2, cab3 As rdoResultset
Set cab1 = cn.OpenResultset("select qtranscaja as NumCaja, qtransfrac as NumFrac from tarticxalmacen where calmacen='104'", 0, 1, rdAsyncEnable)
caja = cab1!NumCaja
frac = cab1!NumFrac
Set cab2 = cn.OpenResultset("select carticulo as Articulo, ninterno as Interno from pdtx", 0, 1, rdAsyncEnable)
number1 = 100
For number = 0 To cab2.EOF
For j = 0 To Me.List1.ListCount - 1
art = cab2!Articulo
inter = cab2!Interno
Set cab3 = cn.OpenResultset("select count(ninterno) as NumInter from wpkardex where ninterno='" & inter & "'", 0, 1, rdAsyncEnable)
number2 = cab3!NumInter
If number2 = 0 Then
cn.Execute "insert into wpkardex(calmacen, ninternokardex, ctipotransaccion, ctipodocumento, ninterno, carticulo, scajafraccion, qunidades, qantcaja, qantfraccion, cusuario, fkardex, hkardex, icostoant, icosto, icostopro, cubicacion) values ('104','" & number1 & "','1','06','" & inter & "', '" & art & "', 'T', '" & qunidades & "', '" & caja & "', '" & frac & "', '" & cusuario & "', '" & Format(Date, "dd/mm/yy") & "', '" & Format(Time, "hh:MM") & "', '0', '0', '0', '" & calmacen & "')"
number1 = number1 + 1
cab2.MoveNext
Me.msfcontrol.TextMatrix(j + 1, 3) = "Grabo Satisfactoriamente"
Me.msfcontrol.ForeColor = vbBlue
Else
Me.msfcontrol.TextMatrix(j + 1, 3) = "Ya se encuentra en la BD"
Me.msfcontrol.ForeColor = vbRed
End If
Next j
Next number

al ejecutar me sale un error de desbordamiento, pero cuando analizo linea por linea por f8 me funciona pero al ejecutar con f5 me sale un error, he comprobado con double y long y no pasa nada, a que se debe eso

Le agradeceria su gentil respuesta
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:desbordamiento

Publicado por agata (5 intervenciones) el 19/01/2007 20:38:40
Dim number, number1, number2 As Double
solo estais declarando como Double number2, las otras dos como Variant y eso da muchos disgustos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:desbordamiento

Publicado por Karlillos (29 intervenciones) el 19/01/2007 21:41:09
Hola, he seguido de acuerdo tus sugerencias de la siguiente manera:

'Dim art, inter, unid, usu, ubi As String
Dim art As String
Dim inter As String
Dim unid As String
Dim usu As String
Dim ubi As String
'Dim caja, frac, number, number1, number2 As Double
Dim caja As Double
Dim frac As Double
Dim number As Double
Dim number1 As Double
Dim number2 As Double
'Dim cab1, cab2, cab3 As rdoResultset
Dim cab1 As rdoResultset
Dim cab2 As rdoResultset
Dim cab3 As rdoResultset
Set cab1 = cn.OpenResultset("select qtranscaja as NumCaja, qtransfrac as NumFrac from tarticxalmacen where calmacen='104'", 0, 1, rdAsyncEnable)
caja = cab1!NumCaja
frac = cab1!NumFrac
Set cab2 = cn.OpenResultset("select distinct(D.carticulo) as Articulo, D.ninterno as Interno, D.qunidades as Unidades, D.calmacen as Almacen, C.cusuario as Usuario from pdtx D, pctx C where C.calmacen=D.calmacen ", 0, 1, rdAsyncEnable)
number1 = 100
For number = 0 To cab2.EOF
For j = 0 To Me.List1.ListCount - 1
art = cab2!Articulo
inter = cab2!Interno
unid = cab2!Unidades
usu = cab2!Usuario
ubi = cab2!Almacen
Set cab3 = cn.OpenResultset("select count(ninterno) as NumInter from wpkardex where ninterno='" & inter & "'", 0, 1, rdAsyncEnable)
number2 = cab3!NumInter
If number2 = 0 Then
cn.Execute "insert into wpkardex(calmacen, ninternokardex, ctipotransaccion, ctipodocumento, ninterno, carticulo, scajafraccion, qunidades, qantcaja, qantfraccion, cusuario, fkardex, hkardex, icostoant, icosto, icostopro, cubicacion) values ('104','" & number1 & "','1','06','" & inter & "', '" & art & "', 'T', '" & unid & "', '" & caja & "', '" & frac & "', '" & usu & "', '" & Format(Date, "dd/mm/yy") & "', '" & Format(Time, "hh:MM") & "', '0.0000', '0.0000', '0.0000', '" & ubi & "')"
number1 = number1 + 1
cab2.MoveNext
Me.msfcontrol.TextMatrix(j + 1, 3) = "Grabo Satisfactoriamente"
Me.msfcontrol.ForeColor = vbBlue
Else
Me.msfcontrol.TextMatrix(j + 1, 3) = "Ya se encuentra en la BD"
Me.msfcontrol.ForeColor = vbRed
End If
Next j
Next number
End Sub

al ejecutar la aplicacion me sale el mismo error de desbordamiento

Le agradeceria su gentil respuesta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:desbordamiento

Publicado por Matías Freire (421 intervenciones) el 19/01/2007 22:24:56
Prueba con lo siguiente:

1) elimina la linea
"For number = 0 To cab2.EOF "
.......
.......
"Next number

y reeemplazala por
number=0
do while not cab2.eof
......
.......
loop

ya que es posible que excedas el límite para la cuenta del For


Si con eso no se soluciona, prueba lo siguiente:

al inicio del procedimiento coloca una captura de error ("on error goto veoError")

al final del procedimiento coloca esto:
exit sub
veoError:
err.clear
msgbox "caja =" & caja
msgbox "frac=" & frac
msgbox "art = " & art
msgbox "inter = " & inter
msgbox "number = " & number
msgbox "number1 = " & number1
msgbox "number2 =" & number2

end sub

al capturar el error va a querer mostrarte cada una de las variables. A cada msgbox dale "enter", cuando quiera mostrar la variable que produjo el desbordamiento, seguramente te va a aparecer un nuevo error.

espero que alguna de las dos cosas te sirva
saludos!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:desbordamiento

Publicado por Karlillos (29 intervenciones) el 20/01/2007 16:36:30
Habla matias he probado con la dos soluciones, el primero con el do while me sale el mismo error de desbordamiento, ahora hice con el segundo metodo de poner los msgbox al momento que salga el error y me muestra que las variables de memoria como es el caso de art, inter declarados como string me muestra vacio, a que se debe eso

Le agradeceria su gentil respuesta

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar