** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Recorrer registros
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Recorrer registros

 Responder Responder
Autor
Mensaje
PereGaya Ver desplegable
Nuevo
Nuevo


Unido: 29/Diciembre/2024
Localización: Mallorca
Estado: Sin conexión
Puntos: 6
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita PereGaya Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Recorrer registros
    Enviado: 29/Diciembre/2024 a las 19:17
Buenos dias, me presento: Soy Pere,y llevo unos cuantos años sin tocar el access. Ahora, estoy empezando una pequeña base pero estoy encallado en un problema parecido a este que nos expplica JuanRB y no tengo ni idea como resolverlo. Llevo dos semanas consultando los libros que tengo, las paginas de ayuda de Microsoft, y varios foros, pero como digo, estoy encallado. Esto ya es un escalon mas. 
Al grano.
Estoy esportando un excel por cada COMERCIAL que tengo. Ahora lo soluciono "a mano" escribiendo en la sentencia yo mismo el nombre del comercial que me debe filtrar de un informe, pero teniendo estos nombres en una tabla, me gustaria saber como recorrer esta tabla, y que en VBA me seleccione uno por uno cada nombre de este COMERCIAL y me lo asigne a una variable "X"

Adjunto codigo. Este lo voy repitiendo cambiando  "Pepito Grillo" por los nombres siguientes.
miComercial = "qryEmpleats.Empleat='Pepito Grillo'"

Private Sub CmdProves_Click()

Dim miComercial As String
Dim miFecha As String
Dim añoD As String
Dim mesD As String
Dim diaD As String
Dim miRuta As String

miFecha = Date
añoD = Format(miFecha, "yyyy")
mesD = Format(miFecha, "mm")
diaD = Format(miFecha, "dd")
miFecha = añoD & mesD & diaD

miRuta = "C:\Users\pgaya\Documents\Llistats diaris"
   
  If Dir(miRuta) = "" Then
    MsgBox "El directori no existeix, canviam directori"
    miRuta = "C:\Users\Casti\Desktop\Trabajo\" & miFecha & " Pepito.xls"
                
    Else
    MsgBox "El directori existeix"
    miRuta = "C:\Users\pgaya\Documents\Llistats diaris\" & miFecha & " Pepito.xls"

   End If

miComercial = "qryEmpleats.Empleat='Pepito Grillo'"
Me.Filter = miComercial

DoCmd.OpenReport "rptResumAs400", acViewPreview, , Me.Filter
DoCmd.OutputTo acOutputReport, "rptResumAs400", acFormatXLS, miRuta
DoCmd.Close acReport, "rptResumAs400"

End Sub

Necesito que me recorra esta consulta y me ponga en una variable los nombres

qryEmpleats
IdEmpleat EmpleatAs400 Empleat
1 314 Pepito Grilo
2 333 Oso Yogui
3 334 Gato con Botas
4 339 Superman
6 364 Caganer
11 0 Iron Man
16 999 Spiderman


Gracias


Editado por PereGaya - 29/Diciembre/2024 a las 19:18
Pere Gaya
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14926
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 01/Enero/2025 a las 11:59
Hola Pere y bienvenido al foro.

Primero decirte que te he movido el mensaje a un hilo nuevo para separar ambas dudas.

En cuanto a tu duda, deberás abrir un recordset sobre el qryEmpleats y recorrerlo. En cada registro lanzas el código que tienes sustituyendo las constantes del nombre por la referencia al campo del recordset que contiene el valor que deseas utilizar.

Algo así (los cambios en rojo)

Private Sub CmdProves_Click()

Dim miComercial As String
Dim miFecha As String
Dim añoD As String
Dim mesD As String
Dim diaD As String
Dim miRuta As String

Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("SELECT * FROM qryEmpleats")

miFecha = Format(Date, "yyyymmdd")
añoD = Format(miFecha, "yyyy")
mesD = Format(miFecha, "mm")
diaD = Format(miFecha, "dd")
miFecha = añoD & mesD & diaD

Do Until rst.EOF

miRuta = "C:\Users\pgaya\Documents\Llistats diaris"
   
If Dir(miRuta) = "" Then
MsgBox "El directori no existeix, canviam directori"
miRuta = "C:\Users\Casti\Desktop\Trabajo\" & miFecha & " " & rst!Empleat & ".xls"
    Else
    MsgBox "El directori existeix"
    miRuta = "C:\Users\pgaya\Documents\Llistats diaris\" & miFecha & " " & rst!Empleat & ".xls"
    End If

DoCmd.OpenReport "rptResumAs400", acViewPreview, , "qryEmpleats.Empleat = '" & rst!Empleat & "'"
DoCmd.OutputTo acOutputReport, "rptResumAs400", acFormatXLS, miRuta
DoCmd.Close acReport, "rptResumAs400"
rst.MoveNext
Loop
rst.Close
Set rst = Nothing

End Sub
 

(escrito al vuelo)

Un saludo


Editado por xavi - 01/Enero/2025 a las 12:00
Xavi, un minyó de Terrassa

Mi web
Arriba
PereGaya Ver desplegable
Nuevo
Nuevo


Unido: 29/Diciembre/2024
Localización: Mallorca
Estado: Sin conexión
Puntos: 6
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita PereGaya Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 05/Enero/2025 a las 20:12
Gracias por tu respuesta. Me he vuelto loco buscando el mensaje.

Veo que tambien me propones algo mas facil para usar la fecha como nombre del arxivo. Que facil era y yo me complique.
Me lo miro y respondo- Muchas gracias-

Pere Gaya
Arriba
PereGaya Ver desplegable
Nuevo
Nuevo


Unido: 29/Diciembre/2024
Localización: Mallorca
Estado: Sin conexión
Puntos: 6
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita PereGaya Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 06/Enero/2025 a las 18:57
muchas gracias Xavi por su ayuda. Es exactamente lo que queria hacer. No conseguia el modo de "cargar" el recorset. Me estaba complicando tanto la vida que por el camino habia creado unn funcion que me contaba el registro mas alto y luego cargaba una QueryDef por registro......pero no funcionaba tampoco.

Lo dicho. muchas gracias por todo.
Pere Gaya
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable