Incrementar campo de texto que guarda números

Soy novato en Access y necesito que cuando quiero agregar un nuevo registro, me aparezca el numero siguiente del campo "obra", que por mala planificación definí como Texto, o sea, campo de texto, donde guardo el numero de obra de los trabajos recibidos aquí en la Oficina de reparación.
Yo se que podría convertir el valor de texto a numérico usando Val, incrementar y después volver a convertirlo a texto usando Str, pero como puedo volver a archivarlo en el campo "obra" con el texto representando el valor + 1 del ultimo registro.
Muchas gracias si puedes ayudarme, para un experto no debería ser difícil, pero para mi aun es.
BuinEugenio
Maputo, Mozambique, Africa

1 Respuesta

Respuesta
1
La fórmula que planteas es correcta. La opción que se me ocurre es:
Un evento cuando entras en el textbox obra.
Private Sub obra_Enter()
    nro = CurrentDb.TableDefs("tabla1").RecordCount
    obra = Format(Trim(Str(nro + 1)), "00000")
End Sub
En este caso creo un autonumérico que coincide con la cantidad de registros de la tabla "tabla1".
Nro es la cantidad de registros que tiene la tabla1 antes de que ingreses el actual.
Format es para que le de un formato determinado, en este caso 00001 para la primer obra, 00002 para la segunda, etc.
Trim elimina espacios en blanco que se generan al hacer la conversión de valores a texto.
Jorge
Tu respuesta es muy buena, yo había pensado algo semejante pero técnicamente no habría sabido formular correctamente. Solo hay algo que no aclare, resulta que el numero de obra es a partir de 3515 para el primer registro y solo llevo 71 registro. Esto porque pase de Excel a Access, en Access crie la Db continuando la numeración del campo Obra, solo que en Access inicio de 1 los registros, donde esta la Obra 3515.
Pareceme que en la primera linea:
nro = CurrentDb.TableDefs("tabla1").RecordCount
tendria que adcionar  una constante como 3515?
Quedara asi:
nro = CurrentDb.TableDefs("tabla1").RecordCount  + 3515
Respóndeme por favor si esta correcto o errado.
Muchas gracias por la amabilidad de responderme tan rapido
Si no hay problema, sumándole 3515, harás que la numeracion comience en 3515+71=3586.
Saludos. Jorge
PD. Otra forma es ejecutando un sql que busque el último (el mayor) número ingresado en el campo y sume 1. En vba quedaría algo como:
Dim rs1 As Object
Dim sql As String
sql= "select max(obra) as maxobra from tabla1"
Set rs1 = CurrentDb().OpenRecordset(sql)
If rs1.RecordCount = 1 Then 
 nro= rs1.Fields("maxobra")+1
 obra = Format(Trim(Str(nro + 1)), "00000")
end if

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas