¿Cómo pasar el dato obtenido de una consulta SELECT a una variable?

Intentaré ponerles en contexto:
Tengo un código vba en access que me permite realizar una inserción en la tabla participantes cuyos campos son Matricula y claveCurso, también inserta el campo llave idParticipante que es autonumerado, por otra parte tengo otro código que toma el valor del participante seleccionado ya existente en la tabla participantes y genera registros para asistencias tomando en cuenta fecha inicial y fechafinal del curso en cuestión utilizando el campo claveCurso para establecer esa relación.

Mi deseo es unir esos dos códigos, es decir agregar un participante e inmediatamente generar los registros de asistencia, pero para esto ultimo requiero conocer el idParticipante que se acaba de generar por el autonumerador, me sigo familiarizando y aprendiendo sintaxis vba pero se me ocurre hacer algo así:

'Primero obtengo los valores para matricula de empleado y clave de curso

VariableClaveCurso = Forms![listaCurso3]![ClaveCurso].Value

VariableMatricula=Me.BuscaPersonal.Column(0).Value   
'la columna cero del listbox contiene la matricula

'ahora genero registro de participante 

DoCmd.RunSQL "INSERT into participantes (Matricula,participante,Area,claveCurso) values('" & Me.BuscaPersonal.Column(0) & "' , '" & Me.BuscaPersonal.Column(1) & "' , '" & Me.BuscaPersonal.Column(2) & "','" & ClaveCurso & "')"

'ya que se generó el registro del  nuevo participante obtengo su idParticipante

VariableIDParticipante="Select idParticipante from participantes where Matricula=VariableMatricula and claveCurso=VariableClaveCurso"

'ya que se obtuvo la ID del participnte generaría los espacios para asistencias

For i = Me.fechaInicio To Me.FechaFin

CurrentDb.Execute "INSERT INTO asistencias(idParticipante,fecha,horas) VALUES (" & VariableIDParticipante & ",#" & Format(i, "mm/dd/yyyy") & "#,0)"
Next i

Obviamente hay que declarar variables y todo, pero lo omití para no hacerlo aun más largo

Mi duda principal es cuál seria el código formal para:

VariableIDParticipante="Select idParticipante from participantes where Matricula=VariableMatricula and claveCurso=VariableClaveCurso"

1 Respuesta

Respuesta
1

Es mucho más sencillo que eso:

Si tu idParticipante es autonumérico, el que acabas de agregar siempre será el Último o el Mayor, y para eso tienes las funciones DLast() o DMax(), y no te hace falta recurrir a una SQL (que por otro lado, tampoco la puedes usar para obtener un valor directamente...):

VariableIDParticipante=DMax("idParticipante ","participantes")

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas