Campo vacío

Buenos días.
Tengo un formulario con 5 campos (num_expediente, apellido_1, apellido_2, nombre y empresa); tengo introducidos registros entre el num_expediente 1 y el 5100, pero hay varios números que me quedan vacíos.
El campo num_expediente es obligatorio y no se puede dejar en blanco.
Me gustaría tener un campo donde me dijese el primer num_expediente que puedo introducir.
Muchas gracias de antemano.
Un saludo

1 respuesta

Respuesta
1
Supongo que cuando dices que tienes varios registros con números vacíos estas queriendo decir que hay algunos 'saltos' en la numeración, ya sea por que se hayan borrado registros o por lo que sea, ya que si ese campo es clave principal no pueden existir registros con ese campo vacío.
Para presentar en ese formulario por ejemplo el valor máximo empleado en el campo num_expediente, de modo que puedas introducir el siguiente valor debes de hacer lo siguiente.
Crea un campo independiente en el formulario (que no esté basado en ningún campo). Quítalo del orden de tabulación (y si no es necesario por accesibilidad incluso ponle las propiedades Loocked a True y Enabled a False para que no puedas usarlo, solo necesitas ver la información que te mostrará del valor más alto usado hasta el momento).
En el evento 'Al activar registro' del formulario añade código para que este campo te muestre el valor más alto (usando el generador de ese evento, osea el botón de los tres puntitos...). Si lo añades en ese evento, cada vez que cambies de registro, por ejemplo al ir a uno nuevo, este campo se recalcula y te mostrará el valor más alto...
Te copio un ejemplo de código en el que busco para presentar en el campo Texto0 el valor más alto usado en el campo CodigoPersonal de la tabla Personal (basta con sustituir nombre de campos y tabla por los tuyos).
=============
Private Sub Form_Current()
On Error GoTo Err_Form_Current
Dim miBD As Database, misRegistros As Recordset, miSQL As String, miValorMaximo
Set miBD = CurrentDb
miSQL = "SELECT Max(Personal.CódigoPersonal) AS MáxDeCódigoPersonal FROM Personal;"
Set misRegistros = miBD.OpenRecordset(miSQL, dbOpenSnapshot)
miValorMaximo = misRegistros!MáxDeCódigoPersonal
Me.Texto0 = miValorMaximo
misRegistros.Close
Set miBD = Nothing
Exit_Form_Current:
Exit Sub
Err_Form_Current:
MsgBox Err.Description
Resume Exit_Form_Current
End Sub
===============
Por medio de un bucle o consultas más complicadas se puede buscar el primer valor no usado en la tabla. Te aconsejo que no uses esos valores por dos razones: aparentemente usas un numeral ascendente, lo que hace que números más altos den de por si idea de que son registros más recientes. Por otra parte, si no están bien diseñadas las relaciones entre las tablas (eliminaciones en cascada...) puedes acabar mezclando datos de diferentes registros (vamos, un caos).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas