Imprimir página | Cerrar ventana

Recorrer registros

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=87029
Fecha de impresión: 26/Marzo/2026 a las 17:28


Tema: Recorrer registros
Publicado por: PereGaya
Asunto: Recorrer registros
Fecha de publicación: 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


-------------
Pere Gaya



Respuestas:
Publicado por: xavi
Fecha de publicación: 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


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: PereGaya
Fecha de publicación: 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


Publicado por: PereGaya
Fecha de publicación: 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



Imprimir página | Cerrar ventana