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

overflow con vb6 + mysql

Estas en el tema de overflow con vb6 + mysql en el foro de Visual Basic clásico en Foros del Web. Hola como estan? Bueno queria preguntarles por un problema que tengo. Estoy programando con vb6 + mysql y el problema que tengo es que al ...
  #1 (permalink)  
Antiguo 16/07/2009, 12:53
 
Fecha de Ingreso: noviembre-2007
Mensajes: 133
Antigüedad: 16 años, 5 meses
Puntos: 0
Busqueda overflow con vb6 + mysql

Hola como estan?
Bueno queria preguntarles por un problema que tengo. Estoy programando con vb6 + mysql y el problema que tengo es que al ejecutar un procedimiento almacenado que a la vez tiene un trigger asociado me tira un error "error 6" que es el de desbordamiento pero ayer no me daba este error, se ejecutaba todo menos la linea del trigger siguiente teniendo en cuenta que la variable new.movimiento = 'A'

Código:
 
update cuentahistoria set estado = 'BAJA' where monto = new.monto and codcuenta = old.codcuenta and fecha = new.fechaentregaanulada and movimiento = 'E';
tanto el trigger como el procedimiento estan bien porque los pude crear sin problemas y al ejecutar cada una de las consultas tanto del trigger como del procedimiento en forma manual (osea en la consola de mysql) no tengo problemas y hace todo como quiero. Incluso si actualizo la cuenta en forma manual el trigger se ejecuta sin problemas.

Aca les paso el procedimiento

Código:
// ESTOS SON LOS PARAMETROS

code int, codigoe int, montoe decimal(15,2), fechae datetime, sucursal varchar(1), movimiento varchar(1), tipoe varchar(1), fechaene datetime

begin
delete from mov_cuenta
where mov_cuenta.codcuenta = code and mov_cuenta.entrega = montoe and 
mov_cuenta.fecha = fechaene;
update cuenta set debe = debe - montoe, monto = montoe, fecha = fechae, tipo = tipoe, movimiento =
movimientoe, sucursal = sucursale, fechaentregaanulada = fechaene where codcliente = codigoe;
end
este procedimiento borra un registro en la tabla mov_cuenta (borra una entrega) y actualiza la cuenta restandole esa entrega

antes de hacer un update en la tabla cuenta se ejectua este trigger

Código:
begin
if new.movimiento = 'A' then
		update cuentahistoria set estado = 'BAJA' where monto = new.monto and codcuenta = old.codcuenta and fecha = new.fechaentregaanulada and movimiento = 'E';
		insert into cuentahistoria(codcuenta, fecha, usuario, debeant, debepost, tipo, monto, pto_venta, numfactura, movimiento, debeantant, debeantpost, sucursal, fechaentregaanulada) values(old.codcuenta, new.fecha, '', old.debe, new.debe, new.tipo, new.monto, new.pto_venta, new.numfactura, new.movimiento, old.deudaant, new.deudaant, new.sucursal, new.fechaentregaanulada);
else
		insert into cuentahistoria(codcuenta, fecha, usuario, debeant, debepost, tipo, monto, pto_venta, numfactura, movimiento, debeantant, debeantpost, sucursal) values(old.codcuenta, new.fecha, '', old.debe, new.debe, new.tipo, new.monto, new.pto_venta, new.numfactura, new.movimiento, old.deudaant, new.deudaant, new.sucursal);
end if;
end

el trigger lo que hace es que si hice una entrega o una venta en cuenta corriente registra los valores antes y despues de debe y cosas como si fue una resta en la cuenta o una suma, la fecha, si fue entrega o venta etc etc etc


como decia antes todas estas consultas en forma manual funcionan bien pero cuando lo hago llamandolas con este codigo de vb6 me da ese error de desbordamiento

Código:
db.BeginTrans
        dbestado = True
        
        Set cmd = New ADODB.Command
        cmd.ActiveConnection = db
        cmd.CommandText = "call anularentrega (" & Val(Text1) & ", " & Val(Text8) & ", " & MONTO & ", '" & Format(Date, "yyyymmdd") & "', '" & sucu & "', 'A', 'R', '" & Format(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 4), "yyyymmdd") & "')"
        MsgBox (cmd.CommandText)
        cmd.Execute
        db.CommitTrans
un ejemplo de cmd.commandtext es este

call anular entrega (3, 3, 150.66, '20090716', 'A', 'A', 'R', '20090716')

son los parametros del procedimiento

donde le paso lo siguiente codcuenta, codcliente, monto( a descontar), fecha(hoy), movimiento(si es venta, entrega o anulacion de entrega), sucursal, fechaentregaanulada (fecha de la entrega que voy a anular)



bueno espero haber dado todos los detalles
les recuerdo que si hago todo eso manualmente funciona bien y que el error que me da es overflow y cuando no me da overflow ejecuta todo menos la linea del trigger
Código:
update cuentahistoria set estado = 'BAJA' where monto = new.monto and codcuenta = old.codcuenta and fecha = new.fechaentregaanulada and movimiento = 'E';

Muchas gracias
  #2 (permalink)  
Antiguo 16/07/2009, 13:11
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: overflow con vb6 + mysql

El problema está mas enfocado a VB6.
Cuando llamas el procedimiento desde visual, lo haces dentro de un ciclo o algo parecido?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 16/07/2009, 13:11
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: overflow con vb6 + mysql

Tema transladado desde el foro de MySQL.
Véase: http://www.forosdelweb.com/f21/funci...-datos-413499/

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 16/07/2009, 14:31
 
Fecha de Ingreso: noviembre-2007
Mensajes: 133
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: overflow con vb6 + mysql

No llamo al procedimiento de ningún ciclo. Para mi también tiene mas que ver con VB6
Puse todo el código que uso para que todo este claro porque no se bien donde esta el error si en el lenguaje VB6 o en mysql
  #5 (permalink)  
Antiguo 16/07/2009, 14:52
 
Fecha de Ingreso: junio-2008
Ubicación: Punta Alta, Argentina
Mensajes: 82
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: overflow con vb6 + mysql

no le faltan comillas dobles ("") a la instruccion sql?


UPDATE cuentahistoria SET estado = 'BAJA' WHERE monto = " & new.monto & " AND codcuenta = " & old.codcuenta & " AND fecha = " & new.fechaentregaanulada & " AND movimiento = " & E & ";



a la fecha creo que se usa con almoadillas (#) y en el formato mm/dd/aaaa
si hablo pavadas que alguien me corrija
  #6 (permalink)  
Antiguo 16/07/2009, 15:09
 
Fecha de Ingreso: noviembre-2007
Mensajes: 133
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: overflow con vb6 + mysql

jajaja no, esta bien asi. Pasa que el codigo ese es de un trigger de mysql, no es que lo ejecuto desde VB6
las fechas en mysql son asi 'yyyymmdd'
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 00:33.