Access - listar registros en fila

 
Vista:

listar registros en fila

Publicado por bellow (2 intervenciones) el 27/01/2005 08:30:19
Tengo el siguiente problema: Tengo un formulario \"personal\" con campos id,nombre,apell, y un subform \"plantacion\" que contiene id,variedad,poligono,parcela...cada personal tiene varias poligonos,parcelas y variedades. Por ejemplo tengo los siquientes registros:
Form:
1000 Jose Buendia
Suform:
id variedad polig. parcela
1000 ciruela 2010 57
1000 pera 1515 78
1000 nectarian 2325 99
1000 manzana 1515 79
1000 naranja 1515 80
Quiero hacer una consulta que me muestre los poligonos y parcelas que tiene cada personal, pero en filas, es decir, así:
1000 Jose Buendia 2010-1515-2325 57-78-99-79-80
1001 fulanito xxxx-yyyy-cccc aa-vv-bb-gg

En realidad quiero mostrar los registros en un informe, pero creo que resultará más fácil si se hace primero en una consulta y luego el informe que tengo origen en dicha consulta.
etc...¿cómo se puede hacer?
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Consulta para mostrar polígonos y parcelas de cada personal en filas

Publicado por Alejandro (4142 intervenciones) el 23/05/2023 20:41:20
Para lograr mostrar los polígonos y parcelas de cada personal en filas en una consulta en Access, puedes utilizar la función `GROUP_CONCAT` en combinación con la cláusula `GROUP BY`. Sin embargo, Access no tiene una función incorporada para concatenar valores en una consulta, por lo que puedes utilizar una consulta con código VBA para lograrlo.

Sigue estos pasos:

1. Crea una consulta en Access con el siguiente SQL:

1
2
3
SELECT Form.id, Form.nombre,
       ConcatenarPlantacion([Form].[id]) AS PoligonosParcelas
FROM Form;

2. En el editor de VBA de Access, agrega un módulo nuevo y utiliza el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Function ConcatenarPlantacion(id As Long) As String
    Dim rs As DAO.Recordset
    Dim strPoligonos As String
    Dim strParcelas As String
 
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM Subform WHERE id = " & id)
 
    If Not rs.EOF Then
        rs.MoveFirst
 
        Do Until rs.EOF
            strPoligonos = strPoligonos & rs!poligono & "-"
            strParcelas = strParcelas & rs!parcela & "-"
 
            rs.MoveNext
        Loop
 
        strPoligonos = Left(strPoligonos, Len(strPoligonos) - 1)
        strParcelas = Left(strParcelas, Len(strParcelas) - 1)
    End If
 
    rs.Close
    Set rs = Nothing
 
    ConcatenarPlantacion = strPoligonos & "-" & strParcelas
End Function

3. Reemplaza "Form" por el nombre real del formulario principal y "Subform" por el nombre real del subformulario.

4. Guarda los cambios y ejecuta la consulta. Deberías obtener los resultados deseados, mostrando los polígonos y parcelas de cada personal en una sola fila.

Si deseas utilizar estos resultados en un informe, puedes utilizar esta consulta como origen de datos para el informe.

Espero que esta solución te ayude a lograr tu objetivo. ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar