Acceso a Datos 09: Altas y Bajas: (1) Sentido Común

Algo que debemos considerar siempre es la posibilidad de que se vaya la luz a media operación, asi que un sistema bien diseñado debe tener el menor numero posible de tablas y bases abiertas, o les pasa lo que sucede con los tristemente célebres programas de ASPEL, COI, NOI, y SAE. A los que conocen mi trabajo recordarán que cuando se va la luz los sistemas se recuperan de manera transparente.

Para poder conseguir esto, lo mejor es abrir y cerrar las bases y/o tablas cada operación excepto en procesos intensos, y rara vez abrir a la vez dos tablas. Claro que ayuda tener no breaks fiables en la medida de lo posible.

Sin embargo, eso está fuera del alcance de este tema, aunque mas adelante lo veremos PARCIALMENTE cuando veamos ADO.

Antes de codificar, vamos a ver a grandes rasgos que pasa cuando alguien da un alta de datos en una tabla, DE LO QUE SEA:

[color=#FFFFCC]PASOS PARA DAR UN ALTA

[color=#000000]….1. Deshabilitar las opciones de altas, bajas y cambios en los menús para evitar problemas por doble click. Habilitar opciones de cancelar y guardar cambios.
[color=#000000]….2. Revisar si ya existe el dato que queremos dar en esta tabla.
[color=#000000]….3. Si existe

  1. Avisar y restablecer botones
  2. Cancelar el proceso

[color=#000000]….4. Verificamos que existan los datos obligatorios, TODOS.
[color=#000000]….5. Si faltan

  1. Avisar
  2. Llevar a donde falta el dato
  3. Cancelar el proceso

[color=#000000]….6. Revisar si hay datos duplicados que no deban serlo ( que en la columna unico de nuestra tabla tengan si )

  1. Si hay avisar, llevar, restablecer botones y cancelar proceso

[color=#000000]….7. Si todo es correcto, guardar. ( Si algo falla preferentemente interceptar )
[color=#000000]….8. Restablecer botones y refrescar pantalla

[color=#FFFFCC]PASOS PARA DAR UNA BAJA

[color=#000000]….1. Deshabilitar las opciones de altas, bajas y cambios en los menús para evitar problemas por doble click rapido.
[color=#000000]….2. Revisar si el dato que queremos ya esta seleccionado
[color=#000000]….3. Si no

  1. Pedir que se seleccione
  2. Restablecer botones
  3. Cancelar el proceso

[color=#000000]….4. Verificamos si esta ligado a otra tabla, si es así, avisamos que no se puede borrar (no podemos borrar un banco si tiene cuentas, por ejemplo)
[color=#000000]….5. Continuamos SOLO si ya no hay datos ligados
[color=#000000]….6. Si procede lo demas, preguntamos si queremos borrar, dando por default no.
[color=#000000]….7. Si deciden borrar, borrar
[color=#000000]….8. Restablecer botones y refrescar pantalla

Para hacer esto es necesario tratar de convertir todo a código. Es importante mencionar que no todos los pasos se hacen con el mismo botón en altas, solo el primer boton corresponde a altas, y todo lo demas al boton de guardar cambios.

Si se fijan todos los pasos anteriores son elementales. Vamos a referirnos ahora a el código de tiposmovimentos, específicamente de sus botones, lo que nos lleva al evento click de cmdtiposmov.

Nota: Cuando Comenté que se usaran las propiedades index, la finalidad es simplificar la programación. Esto se debe a que si no manejamos un arreglo de botones , tendriamos seis eventos de controles DIFERENTES, y además de tener que repetir código, sería dificil de mantener. De esta manera usaremos un solo procedimiento, para altas, bajas y cambios por cada tabla.

Veremos un ejemplo, que en lo personal es mi base para la mayoría de las veces, porque con hacer unas cuantas modificaciones, terminamos un módulo ABC completo en cuestión de minutos. A varios que me conocen, les consta que en una hora puedo sacar 6 o 7 módulos completos con reportes, aunque no se suele necesitar esa velocidad.

Después de ver el ejemplo veremos varios de esos procesos obvios, son los que tienen un link dentro del documento.

Vean este ejemplo código de un programa de productos, noten que hay procesos obvios por el nombre (con un link a donde está el código) pero que no son ordenes validas, por ejemplo, resaltacontrol. El ejemplo incluye también el manejo de cambios pero eso lo veremos en tres correos o mas junto con las ordenes que faltan, por ejemplo, la explicación de que es DataClass. Si Usan ahora es bajo su propio riesgo.

NOTA: Las líneas que empiezan con // deben ir al final de la línea anterior. Mas adelante subiré el c&oacutedigo en el proyecto, pero necesito que lo vean ahora por referencia.

[code]Private Sub cmdProd_Click(Index As Integer)
Dim strprov As String
Dim strsubc As String
cmdProd(Index).Enabled = False
Select Case Index

[color=”#FFFFCC”]Case 0: ‘ altas

‘ tomamos proveedor
strprov = lstProv.List(lstProv.ListIndex)
If strprov = “” Then

Comments are Closed