** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Como utilizar el bucle Do...Loop
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Como utilizar el bucle Do...Loop

 Responder Responder Página  <12
Autor
Mensaje
andressf Ver desplegable
Habitual
Habitual
Avatar

Unido: 12/Abril/2011
Localización: Argentina
Estado: Sin conexión
Puntos: 147
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita andressf Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 29/Septiembre/2021 a las 15:52
Se lo quité y anduvo una vez, ahora no me copia ninguno.

Dim rs As DAO.Recordset
Set rs = Forms!f_rev!F_Pedido_Revalida_Doc.Form.RecordsetClone
MsgBox rs.RecordCount

Do Until rs.EOF

sqlInsert = "INSERT INTO T_Reval_Pedido_Docen (id_Rev_Ped_PRD,localidad_doc_PRD) VALUES(" & rs!temp_ID_Nro_Rev_Doce & ",'" & rs!localidad_doc & "')"
DoCmd.RunSQL sqlInsert
rs.MoveNext
Loop

rs.Close
Set rs = Nothing

Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 30/Septiembre/2021 a las 11:36
Imagino que te encuentras en esta secuencia de hechos:

- abres el formulario 
- ejecutas el código para un registro: funciona
- te mueves a otro registro
- ejecutas el código: no funciona
- sales del formulario
- vuelves a entrar
- ejecutas el código: funciona
- te mueves a otro registro
- ejecutas el código: no funciona

Si ese es el escenario es porque el Recordset se queda al final de los registros y, al volver  lanzar el código, la evaluación del rs.EOF es verdadero y no se ejecuta.

Prueba poniendo un rs.MoveFirst antes de cerrar el recordset (línea rs.Close)


Xavi, un minyó de Terrassa

Mi web
Arriba
andressf Ver desplegable
Habitual
Habitual
Avatar

Unido: 12/Abril/2011
Localización: Argentina
Estado: Sin conexión
Puntos: 147
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita andressf Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 21/Octubre/2021 a las 14:36
Hola, estuve complicado por eso no respondí.

 lo puse rs.MoveFirst y a veces me funciona y muchas no
A veces tego 3 registros y me copia 2 otras simplemente no hace nada...
Me está superando...






Editado por andressf - 21/Octubre/2021 a las 15:06
Arriba
andressf Ver desplegable
Habitual
Habitual
Avatar

Unido: 12/Abril/2011
Localización: Argentina
Estado: Sin conexión
Puntos: 147
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita andressf Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 21/Octubre/2021 a las 15:22
Creo haber encontrado el problema.

Pasa lo siguiente, a ver si me explico

Mientras en la tabla no haya datos me copia todos los registros, si en la tabla hay datos algunos me los copia y otros no.
En esa tabla se ingresan datos de profesores que dictan los cursos, hay profesores que dictan dos mas cursos, ahi es cuando no me los copia ya que tienen el campo id_Rev_Ped_PRD pero los datos del profesor son los mismos.

Como puedo solucionarlo?.
Gracias.






Arriba
andressf Ver desplegable
Habitual
Habitual
Avatar

Unido: 12/Abril/2011
Localización: Argentina
Estado: Sin conexión
Puntos: 147
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita andressf Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 21/Octubre/2021 a las 17:57
Ufff ahora me tira...

Se ha producido el error 3021 en tiempo de ejecución
no hay ningun registro activo
Si cierro todo y abro de nuevo a veces desaparece

Si desaparece me tira este error!

Se ha producido el error 3134 en tiempo de ejecución
Error de sintaxis en la instrucción INSERT INTO

Dim rs As dao.Recordset
Set rs = Forms!f_rev!F_Pedido_Revalida_Doc.Form.RecordsetClone
MsgBox rs.RecordCount
                                   
Do Until rs.EOF

sqlInsert = "INSERT INTO T_Reval_Pedido_Docen(id_Rev_Ped_PRD, id_curso_rev_PRD, id_docent_PRD, id_insti_doc_PRD, nomyape_doc_PRD, tipo_dni_doc_PRD, dni_docent_PRD, fech_nac_doc_PRD, edad_doc_PRD, carac_tel_doc_PRD, tel_cel_doc_PRD, localidad_doc_PRD, cod_post_doce_PRD, calle_doc_PRD, num_calle_doc_PRD, email_1_doc_PRD) Values (" & rs!temp_ID_Nro_Rev_Doce & "," & rs!id_curso_rev & "," & rs!id_docent & "," & rs!temp_id_insti_doc & ",'" & rs!nomyape_doc & "','" & rs!tipo_dni_doc & "'," & rs!dni_docent & "," & rs!fech_nac_doc & "," & rs!edad_doc & "," & rs!carac_tel_doc & "," & rs!tel_cel_doc & ",'" _
& rs!localidad_doc & "','" & rs!cod_post_doce & "','" & rs!calle_doc & "'," & rs!num_calle_doc & ",'" & rs!email_1_doc & "')"

DoCmd.RunSQL sqlInsert
rs.MoveNext

Loop
rs.MoveFirst
rs.Close
Set rs = Nothing











Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 22/Octubre/2021 a las 21:39
Pon un punto de interrupción antes del DoCmd.RunSQL, examinas el valor que contiene sqlInsert en la ventana de inmediato. La copias y la pegas en una nueva consulta. Ahí tienes más posibilidades de detectar cual es el error.

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
 Responder Responder Página  <12
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable