Incrementar valor de un textbox con condición

Experto, resulta que tengo una aplicación en vb.net 2010 que se conecta a una
base de datos en sql 2008 express, la aplicación registra las faltas disciplinarias de
un estudiante.
Se debe actualizar el estatus del estudiante modificando
la cantidad de faltas cometidas, por ejemplo: Pedro hizo una falta, voy al
sistema a registrarla pero antes modifico su estatus, digamos que tenia una
falta registrada ahora esta es la segunda, cambio el valor del textbox
(Manualmente) de 1 a 2 (porque es la segunda) presiono el botón de
actualizar y queda guardado la modificacion y tengo otro textbox que guarda el
historial de faltas por estudiante. Este textbox de historial se incrementa automáticamente
cada vez q presiono el botón de actualizar faltas.
Una cosa es la falta y la otra el historial de falta, el
historial puede llegar hasta mil por decir un número, pero la falta cuando
llega a 3 se reinicia a 0.
El problema es que si se da el caso que tengo que
eliminar una falta (por error del que la registró o algo así) debo actualizar también
el estatus, digamos tenía 2 y volvió a 1 y presiono el botón de actualizar,
pero al presionarlo se me incrementa el historial de faltas de ese estudiante
porque así está programado, solo incrementa no decrementa, el historial debe
reducirse si se reduce la cantidad de faltas debe bajar el historial también.
¿Cómo puedo programar eso? Si el número de faltas se
reduce (por haber eliminado una) que el historial de faltas también se reduzca
(Automáticamente).

1 respuesta

Respuesta
1

Si re refieres a que tu id que es un autonumérico en la tabla de la base de datos, esto no e es posible pues es el comportamiento natural de este tipo de campos.

Una posible solución es desactives del Autonumérico, y lo vuelvas a programar peo esto es un poco complejo.

Se me ocurre que la opción que tienes si esto es muy repetitivo que el campo de la tabla no sea autonumérico, sino que al momento de hacer el insert llames a otra tabla en donde guardas el ultimo consecutivo, cuando sea una eliminación de la tabla modificas el valor de la tabla con -1 y cuando sea un insert con un +1.

El ID no es autonumérico, simplemente en la tabla estudiantes tengo un campo que se llama cantidad_amonestaciones, en vb.net modifico los valores de ese campo, no inserto valores.

Voy a ver si puedo detallar mejor:

Lo primero que hace el usuario cuando usa la aplicación es meterse a la pantalla que tiene toda la info del estudiante (nombre, grado,cantidad de faltas, bla bla). Digamos que voy a registrarle una falta a Juan, bueno verifico en esa pantalla cuantas faltas tiene Juan, digamos que tiene 0 bueno yo voy a ponerle la número 1, cambio el textbox de 0 a 1 y modifico el campo, no inserto un registro nuevo solo altero la cantidad de faltas que tiene.

Al hacer esa accion de modificar la cantidad de faltas yo le agregue al codigo de ese boton modificar que incremente otro campo de ese misma tabla que contiene el historial de faltas de ese estudiante y modifique la cantidad digamos que tambien era 0, el historial quedará en 1.

Osea, no estoy haciendo inserciones nuevas, solo modifico o actualizo los campos que contiene la info de ese estudiante.

El proceso de registrar y guardar una falta es en otra tabla, ahi si inserto, no tengo problemas ahi.

Pero si elimino una falta registrada, y luego me voy a la pantalla que tiene la info del estudiante y le actualizo el estatus de 1 a 0, presiono el boton de modificar y queda bien, pero el historial se aumenta obviamente porque en el codigo del botón esta que cada vez que se presione:

txt_historial.Text = Val(txt_historial.Text) + 1

A lo mejor deberia cambiar algo en el proceso que tiene que hacer el usuario o la estructura que tengo en la tabla para manejarlo de una forma diferente, que me sugieres?

saludos y gracia por tan pronta respuesta.

Ok ya entendí,

Entonces cuando cargues los datos del estudiante, guarda en una variable el numero de faltas.

Cuando vayas a grabar verificas si el valor que guardaste en la variable del numero de faltas es mayor al que intentas guardar, o sea el que esta en el textbox, si es mayor quiere decir que hiciste una eliminación, entonces quedari algo como

if Numfaltas < CInt(txt_Numfaltas.Text) then

txt_historial.Text = Val(txt_historial.Text) - 1

else

txt_historial.Text = Val(txt_historial.Text) + 1

end if

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas