¿Cómo es el código para un botón que le suma un año a ciertos alumnos?

Yo tengo creado un filtro que al darle al botón buscar me tira los resultados según las condiciones que le marque. Ahora bien, uno de los datos de los registros que me aparecen es el año en el que está el alumno.

Lo que yo quiero es que al apretar otro botón se le sume un año a todos los datos que se buscaron, no a todos los registros.

PD: El año en el que está cada alumno está relacionado con una tabla de una sola columna donde dice los años posibles. Los años posibles son 1º, 2º, 3º, 4º, -.

1 respuesta

Respuesta
2

El problema para hacerlo "directamente" es que 1º es texto, por tanto tienes que "transformar" en número su valor.

Una vez filtrado

Suponiendo que la tabla y el formulario se llamen Alumnos, y que tengan el campo Curso. En el evento Al hacer clic del botón pon

Docmd.setwarnings false

docmd.gotorecord,,acfirst

dim a as integer

for a=1 to form.recordset.recordcount

domcd.runsql"update alumnos set Curso= (Val([Curso]) + 1) & "" & "º"

docmd.gotorecord,,acnext

next

Me explico:

Lo de Setwarnings es para que no aparezca la ventana de "Va a actualizar...

Que se vaya al primer registro del formulario

Defino la variable a como número(tamaño número entero)

Actualiza el campo Curso de la tabla Alumnos al valor de curso+1

Vete al siguiente registro y así hasta el final del formulario

¿No hay una forma más fácil? Porque utilicé ese código y no me anduvo... ¿No hay una forma de que al apretar un botón se seleccione el registro/opción siguiente de una lista prediseñada?

Por error puse Domcd y tiene que ser docmd.

Por otro lado mira la tabla y los cursos

Si creo una consulta de actualización, que es lo que hace el código.

Y pulso Ejecutar la tabla queda como

Es decir, le ha sumado 1 a los cursos.

Por tanto el código del botón o del evento que quieras lo puedes dejar como

DoCmd.SetWarnings False

DoCmd.GoToRecord , , acFirst

Dim a As Integer

For a = 1 To Form.Recordset.RecordCount

Curso = ((Val([Curso])) + 1) & "º"

DoCmd.GoToRecord , , acNext

Next

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas