VBA Access: Asignar ordinal al añadir un nuevo registro 'Al no estar en la lista'

Tengo un pequeño gran problema:

Cuando un valor ingresado en un campo de lista no está disponible, lo añado automáticamente mediante el código:

CurrentDb.Execute "INSERT INTO AUTOR(Autor) VALUES('" & NewData & "')"
Me.lstAutor = DLast("AUTOR", "AUTOR")

Pero sucede que siempre adopta el valor 0 en el ordinal. Necesito que se le asigne a este nuevo valor un valor más respecto del mayor valor de la tabla asociada. Si el último tuvo valor 5, debería adoptar el valor 6. Y así sucesivamente. ¿Cómo puedo hacerlo? El campo en cuestión recibe el nombre de ID.

2 respuestas

Respuesta
2

Si ID es autonumérico, no tienes que hacer nada, ya access te lo incrementa al ejecutar esa SQL.

Si no lo es, puedes usar DMax() en vez de DLast(), o usar DCount() para saber los registros que tienes en tu tabla (si lo haces antes de ejecutar la SQL tendrás que sumarle 1, si lo haces después, no)

¡Gracias!
De todas formas (aunque mucho más embrollo lo que hice) hice algo que me ayudaría a corregir otros errores en caso que el ID sea valor 0 y es que si tiene ese valor al ingresar al registro, automáticamente adopte el valor siguiente al último. De esa forma, añado el registro mediante el código que me habías ayudado también, y al editar ese registro ya añadido, se corrige solo con ese código que también me habías ayudado a hacer. Simplemente adapté un poco la operación a esta necesidad.

Respuesta
-1

Revisa que tu campo Autor no esta definido como entero. Revisa que el valor de tu función AUTOR() sea cadena y no entero

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas