Cómo asignar número a un campo en Access del 1 al 1000 de forma automática, dependiendo de si ya está asignado o no.

El asunto es que tengo una aplicación Access y quiero asignar un número de expediente

Pensé asignar un número del 1 al 1000 pues por el momento no deben ser más que 900 que esos la cantidad de expedientes que pueda tener ... Tengo un expediente físico y deseo ponerle un número en el registro de la base de datos cuando le doy alta al trabajador. Cuando este trabajador le doy de baja que es solamente seleccionar en un combobox BAJA y aunque el registro de la persona queda el número quedaría disponible y ser asignado al próximo que le de alta... La explicación de esto es para no tener solo 950 expedientes físicos y tener que estar asignando por un autonumerico el número 2500 al cabo de 2 años.

Estaba pensando en un combobox que muestre los números que no están asignados en la columna NumeroExpediente en un rando del 1 al 1000. O del 1 al X... Así que solo se mostraran al rededor de 100 posibles número elegibles a ser usados..

O que compare al asignar un nuevo registro el campo Número de expediente con los números almacenados en otra tabla.. Y asigne el menor..

Si alguien tiene alguna otro idea..

1 respuesta

Respuesta
1

¿Pregunto esto lo llevas directamente en access o con una interfaces en VB o algún documento de excel con VBA?

Hola todo esta hecho en access. Gracias!

Una opción podría ser que vallas consultando dentro de la totalidad de los registro el que falte y lo puedas re usar en tu expediente nuevo algo así.

SELECT CANT(NROEXPEDIENTE) FROM MITABLA

Creas primero una consulta para saber que cantidad de expedientes tienes y hacer la búsqueda un poco mas precisa. Luego solo vasta ir consultado uno a uno los numero a ver si existe dentro de ella. Ahora si me dices que no pueden a ver mas de 900 expedientes pues limitarlo a esa cantidad y genera de una ves la búsqueda del expediente .

For i = 1 to 900

Select NroExpediente From TABLA WHERE NroExPediente = ' " & i & "'"

Next

Si esta consulta te da verdadera entonces ese numero podrás usarlo ya que no fue encontrado dentro de la tabla en tu columna de Expedientes o Números de Expedientes.

Ojo Esto es algo sencillo aunque allí falta código solo te estoy dando la idea de como podrías hacerlo

Me parece teóricamente bien, pero de código solo sé donde ponerlo ja ja he usado bastantes líneas pero todo gracias a la ayuda de este sitio.. ¿si pudiera hacer algún ejemplo práctico? ja ja ojalá no sea demasiado pedir!

Gracias mientras tanto doy taller a su respuesta para ver que saco de ahí!

Puedes crear la consulta a penas le des al botón nuevo expediente y puedes usar ese mismo código que te pase sin el de la consulta sin el SELECT, ese colocarías el apropiado de acuerdo a access ya que ese es el que uso en VB. Y luego la consulta cuando te de verdadera le asignas a una Variable el Valor de "i" y cierras el siclo For.

Esta sería la consulta de todos los números de expediente que tengo ahora mismo....no se como agregarle lo otro que me das.. :(

SELECT Colaboradores.NumExpediente
FROM Colaboradores
GROUP BY Colaboradores.NumExpediente;

Saludos..

Como te dije amigo si es de solo tener 900 expediente y ya has la consulta directa a buscar el que falta.

Dim i as Long

For i = 1 to 900

SELECT  NumExpediente 

FROM Colaboradores

WHERE NumeroExpediente = '" & i & "'

'aca verificas que la consulta sea verdadera si lo es detienes el For con Exit For y Asignas a una variable el valor de i antes de detener el For

Next i

Creo que he resuelto el problema... Agregué otra tabla con un listado de números del 1 al 1000 que puede incrementarse con el tiempo de hacer falta... hice una consulta de búsqueda de no coincidentes entre las dos tablas.. donde obvio, obtendo los números que están en el listado y no ya asignados... entonces puse un combobox en el formulario donde muestra el resultado de la consulta.. creo que va bien.. mil gracias.. de todas formas.. si puede me pasa lo del código.. saludos..

Dim i as Long

For i = 1 to 900

SELECT  NumExpediente 

FROM Colaboradores

WHERE NumeroExpediente = '" & i & "'

If rst.EOF = Verdadero Then 'Aca rst es tu recordset para la consulta

VariableExpediente = i

Exit For

End if

Next i

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas