Foros del Web » Programación para mayores de 30 ;) » .NET »

¿Es posible que se ejecute una linea antes que otra?

Estas en el tema de ¿Es posible que se ejecute una linea antes que otra? en el foro de .NET en Foros del Web. Veran hago el calculo de un total en la venta sumo el campo total de un datagrid tantas filas halla El caso es que al ...
  #1 (permalink)  
Antiguo 17/08/2016, 10:37
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 3 meses
Puntos: 52
¿Es posible que se ejecute una linea antes que otra?

Veran hago el calculo de un total en la venta
sumo el campo total de un datagrid tantas filas halla

El caso es que al final de recorrer las filas con el for luego limpio el datagrid
hago algo asi

for
sumo
fin for
resultado=sumo (esto es lo que guardo en la base de datos)
tambien guardo cada fila en la base de datos..
ya que se guardó limpio el datagrid
El problema aqui es que guardo bien la variable sumo pero faltó que guardara una de las filas(quizas la ultima no estoy seguro como les ocurrio a mi cliente)
Y pues logico el total no es el resultado de las filas que si se guardaron por que faltó una.

Eso creo que sucedio(ya que hice varias pruebas y todavia no me sale el error)

La pregunta es ¿es posible que se haya intentado limpiar el datagridview antes de sumarse?..
o bien se haya trabado un momento y se halla ejecutado ese proceso antes?

No puedo poner todo el codigo aqui por que son muchisimas validaciones, descuentos, impuestos, tablas referenciadas etc..
Cabe destacar que tiene 3 años el sistema corriendo, le he puesto modificaciones pero no he tocado la parte de la venta para nada.,, y es la primera vez que ocurre esto. Al menos que me hayan dicho oo

de antemano gracias..
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra

Última edición por minombreesmm; 17/08/2016 a las 11:06
  #2 (permalink)  
Antiguo 17/08/2016, 14:14
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 10 meses
Puntos: 606
Respuesta: ¿Es posible que se ejecute una linea antes que otra?

Seguramente el código tenga algún bug y dandose determinadas casuisticas entra por código inesperado dando ese resultado.

Como no somos adivinos no podemos saber que datos se usaron ni el código, con lo que la única ayuda que vas a poder recibir es: revisa tu código. Bueno, eso y que añadas trazas para que la próxima vez puedas ver que ha pasado exactamente.
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 17/08/2016, 14:47
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 3 meses
Puntos: 52
Respuesta: ¿Es posible que se ejecute una linea antes que otra?

Cita:
Iniciado por Malenko Ver Mensaje
Seguramente el código tenga algún bug y dandose determinadas casuisticas entra por código inesperado dando ese resultado.

Como no somos adivinos no podemos saber que datos se usaron ni el código, con lo que la única ayuda que vas a poder recibir es: revisa tu código. Bueno, eso y que añadas trazas para que la próxima vez puedas ver que ha pasado exactamente.
Es que ya lo debugie paso a paso, y tambien hice pruebas como el usuario y no pasa nada.. =S quizas sea algo muy muy inesperado como dices y muy dificil de detectar.
tampoco se que hizo exactamente el cliente.
mi codigo es un poco antiguo, pues tiene 3 años y el actual que uso ya esta mejorado pero cambiarlo es algo muy delicado, en especial si ya trae datos atras compatibles con esa version y banderas para que haga determinadas cosas y todo eso..
fue mi primer sistema uu

En el pasado .Net me ha dado problemas que no tienen logica pero no pense que con estos frameworks pudiera pasar. si es que fue problema del framework..
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #4 (permalink)  
Antiguo 17/08/2016, 14:55
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 10 meses
Puntos: 606
Respuesta: ¿Es posible que se ejecute una linea antes que otra?

Dudo muchísimo que sea un problema del framework.

Que un código sea antiguo no quiere decir que esté bien programado. Has programado tests para testear tu backend? Que porcentage de cobertura de código tienes?
__________________
Aviso: No se resuelven dudas por MP!
  #5 (permalink)  
Antiguo 17/08/2016, 15:52
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 3 meses
Puntos: 52
Respuesta: ¿Es posible que se ejecute una linea antes que otra?

Cita:
Iniciado por Malenko Ver Mensaje
Dudo muchísimo que sea un problema del framework.

Que un código sea antiguo no quiere decir que esté bien programado. Has programado tests para testear tu backend? Que porcentage de cobertura de código tienes?
cobertura de codigo a que te refieres?

tengo todo el codigo
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #6 (permalink)  
Antiguo 18/08/2016, 10:02
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 10 meses
Puntos: 606
Respuesta: ¿Es posible que se ejecute una linea antes que otra?

Con esa pregunta creo que queda respondida mi otra pregunta sobre si tenías unit tests.
__________________
Aviso: No se resuelven dudas por MP!
  #7 (permalink)  
Antiguo 18/08/2016, 15:18
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 3 meses
Puntos: 52
Respuesta: ¿Es posible que se ejecute una linea antes que otra?

Cita:
Iniciado por Malenko Ver Mensaje
Con esa pregunta creo que queda respondida mi otra pregunta sobre si tenías unit tests.
Es que todo lo de la venta es un modulo unico e indivisible en submodulos (que se supone que funciona perfecto)
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #8 (permalink)  
Antiguo 18/08/2016, 16:32
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 10 meses
Puntos: 606
Respuesta: ¿Es posible que se ejecute una linea antes que otra?

Cuando hablas de un módulo te refieres a una única función? De cuantas lineas de código estamos hablando?
__________________
Aviso: No se resuelven dudas por MP!
  #9 (permalink)  
Antiguo 18/08/2016, 19:28
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 3 meses
Puntos: 52
Respuesta: ¿Es posible que se ejecute una linea antes que otra?

Cita:
Iniciado por Malenko Ver Mensaje
Cuando hablas de un módulo te refieres a una única función? De cuantas lineas de código estamos hablando?
No, Hablo de varias funciones pero dedicadas a esa parte..
lineas pues mas de 300, hay eventos y todo eso.
El caso es que en determinado momento cuando ya esta capturada toda la comanda (es un restaurante)
El datagrid contiene todas las filas..

id platillo cantidad precio subtotal etc etc

el campo cantidad tiene un evento change que recalcula el subtotal (precio x cantidad) y a su vez se recalcula un label total que suma el subtotal de todas las filas.
No hay manera de que eso falle, siempre se ejecuta en el evento change..
lo demas ya es cuestion de guardar..
tiene una opcion de borrado de filas y esa accion vuelve a recalcular los totales..
la forma en que guardo consiste en recorrer el datagrid fila por fila , una insercion por fila, y una vez recorrida entonces guardo los labeles de la venta esa, tal es el total, subtotal, mesa, cliente etc y una vez guardado se le asigna un folio y se borra el contenido del datagrid.

Cabe destacar que puede haber muchas comandas en memoria, estas se guardan en Matrices lo cual no creo que sea problema por que a la hora de guardar lo unico que guardo es lo que está en pantalla (El datagrid y los labeles que corresponden a esa comanda).

Otra cosa es que puede haber mas de una comanda en la misma mesa, pero estas estan diferenciadas por ids, lo cual no tiene nada que ver con lo que ocurrió ya que eso paso a la hora de guardar..

Este sistema fue de los primeros que hice y por lo tanto estan hechos a lo muy cavernicola aunque he ido actualizándolos poco a poco.
Esta parte no le he movido mucho mas que lo nuevo que han pedido.

El detalle aqui es que hay muchos eventos y por eso mismo a veces se repiten unos con otros pero al final terminan..
un evento change hace una accion que a veces ejecuta el evento change de otro objeto modificado por la accion del primero y asi, son como unas 500 lineas de codigo entre funciones que se llaman y ejecutan una accion, no solo es la venta si no que hay tipos de platillos y cambios de precios segun ciertas condiciones etc. por eso es que seria muy tedioso poner todo eso aqui y generaria confunción mas que a mi.

Todo ese codigo debugeandolo paso por paso funciona correctamente, lo que no he logrado cazar es esa situacion especial donde ocurre ese fenomeno.(casualmente fue la primera comanda del dia)

La unica manera que se me ocurre ahorita es que alguien halla borrado fisicamente y manualmente ese registro faltante de la suma y ademas halla vuelto a la normalidad el id siguiente..
pero eso seria demasiado(alguien merodeando el sistema desde internet)
No me atrevo a pensar que alli mismo lo hayan hecho(algun curioso) ya que se supone que apenas y saben usar la pc.
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #10 (permalink)  
Antiguo 19/08/2016, 05:17
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 10 meses
Puntos: 606
Respuesta: ¿Es posible que se ejecute una linea antes que otra?

Repito lo de antes, si no existen tests y tienes una cobertura de código alta, el debugar no te asegura que el código funcione siempre.
__________________
Aviso: No se resuelven dudas por MP!

Etiquetas: dato, posible, tabla
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 20:56.