Access

Hola... Estoy haciendo una aplicación y en un formulario tengo que programar un campo consecutivo con formato 0001-2006, por ejemplo... Que cambie el número dependiendo de otro campo tipo, por ejemplo, libros, cuadernos, agendas, entonces, 0001-2006, un libro, 0002-2006 otro libro, así... Para cuadernos 0001-2006, etc... Obviamente hay un consecutivo general para todos los ítmes... ¿me ayudas? Gracias...

2 respuestas

Respuesta
1
Sugiero que tu tabla tenga los dos campos separados, en el formulario es donde le ajustas el valor del formato que quieres.
Respuesta
1
Desde Bucaramanga...
Bueno, entremos en materia:
La idea es la siguiente debes capturar el valor del campo al cual le harás el consecutivo y ademas el año, como depende del tipo entonces buscaremos el máximo cuyo tipo sea ese, es decir veamos un ejemplo:
Imaginemos que el tipo lo manejas como numérico (tipo 1 cuadernos, tipo 2 libros), ahora el campo consecutivo lo llamaremos Conse que estará en una tabla llamada biblioteca, entonces vamos a generar el consecutivo teniendo en cuanta el tipo (1,2) que se encuentra en una caja de texto llamada txttipo y el año: entonces, el código seria el siguiente:
*******************
dim Consecutivo as Long
dim NuevaLlave as string
Consecutivo = Nz(DMax("Conse","biblioteca","Tipo=" & txttipo & ""),0) + 1
NuevaLlave = Format(Consecutivo,"0000") & "-" & Year(Date)
*********************
Listo, veamos que paso:
La variable consecutivo generara lógicamente y valga la redundancia el consecutivo... pero como... con la función de agregado de dominio DMax, esta función me busca el valor máximo de un campo de acuerdo a una tabla y/o un criterio por eso
DMax("Conse","biblioteca","Tipo=" & txttipo & "")
La primer parte (conse) es el nombre del campo, la segunda (biblioteca) es el nombre de la tabla, la tercera parte (que no es obligatoria) va el filtro, entonces sacare valor máximo pero del tipo que escriba en la caja... OJO si ve el criterio como se asigna, por que de penderá si es texto, numero o fecha, pero me imagino que sabes esto...
Bueno sigamos, ¿la función Nz que hace?, pues si no hay registros e intento buscar un valor máximo me devolverá vacío, esta función colocara un valor si encusntra vacío por eso la, 0 al final, porque si esta vacío colocara cero
Nz(DMax("Conse","biblioteca","Tipo=" & txttipo & ""),0)
Ahora a esto le sumo uno para el nuevo consecutivo...
Veasmos como armamos nuestra llave:
Este consecutivo lo formateamos:
Format(Consecutivo,"0000")
Los cuatros ceros entre comillas, significa que lo tomara con cuatro dígitos y si no el numero tiene menos de cuatro dígitos, colocara ceros... esta parte la concateno con una rayita.
...& "-"
No hace falta aclaración, ahora lo concateno con el año de la fecha del sistema:
....& Year(Date)
Y listo tienes tu consecutivo...
Att:telemaco

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas