Access. Sumar valores de una columna de un cuadro de Lista

Tengo un Formulario en donde se muestra un cuadro de lista. El origen del control es una consulta que la realizo con varias tablas. Quisiera saber como puedo obtener la suma de una columna en particular y que el valor se muestre en un cuadro independiente que este presente en el formulario. Solamente lo se hacer con subformularios. En este caso quiero sumar la columna 9 que corresponde a "Comision"

3 respuestas

Respuesta
1

Martín le dejo este ejemplo:

Voy a suma la columna "precio", hago clic en el botón Sumar Precio y obtengo:

Efectivamente obtengo la suma de la columna "precio". El cuadro de lista lo llamo lstprecios y el cuadro de texto ctlPrecio y le he dado el formato Monetario.

CÓDIGO DEL BOTÓN

Private Sub btnsumar_Click()
    Dim sum As Double
    Dim i As Integer
    For i = 0 To Me.lstprecios.ListCount - 1
        If IsNumeric(Me.lstprecios.Column(4, i)) Then
            sum = sum + CDbl(Me.lstprecios.Column(4, i))
        End If
    Next i
    Me.ctlPrecio.Value = sum
End Sub

Así de fácil.

Reemplace el 4 por el número de su columna.

Si bien es cierto que puede utilizar el dominio como una tabla o consulta no se lo recomiendo por los siguiente:

1. No siempre se quiere sumar toda la columna, sino algunos registros

2. La función de dominio Dsum() solo sirve cuando las tablas son JET (Access) o las tablas están vinculadas a un servidor de datos, por ejemplo, PostgreSQL. Pero si no están vinculadas no tiene sentido la función Dsum().

Le preparé este otro ejemplo para sumar únicamente los registros seleccionados.

Observe que solo suma los registro con valores 5500 y 5555.

Código del botón seleccionados

Private Sub btnSeleccionados_Click()
    Dim sum As Double
    Dim i As Integer
    For i = 0 To Me.lstprecios.ListCount - 1
        If Me.lstprecios.Selected(i) Then ' Verificar si el elemento está seleccionado
            If IsNumeric(Me.lstprecios.Column(4, i)) Then
                sum = sum + CDbl(Me.lstprecios.Column(4, i))
            End If
        End If
    Next i
    Me.ctlPrecio.Value = sum
End Sub

Hola Eduardo... muchas gracias por tu pronta respuesta... Tengo otra consulta ya que me genera duda que evento utilizar. La idea es tener un cuadro independiente en el cual escribo el nombre del cliente y el cuadro de lista se filtra por el nombre del cliente, de forma tal de que pueda seleccionar la información a partir de los datos filtrados y ahí poder hacer la suma si es que se seleccionan más de un dato. Que evento debería utilizar para que luego de hacer el filtro (búsqueda), seleccione manualmente los registros que quiero sumar y que automáticamente se calcule la suma en el cuadro de texto ctlPrecio

Si es posible envíeme su base datos con información ficticia y le hago el proceso, olvídese de utilizar DSUM(), no es lo idóneo en su caso de acuerdo con la última pregunta. Mi correo es [email protected] Favor enviar la base datos comprimida en RAR o ZIP.

Respuesta
1

El origen de datos del cuadro de lista es una consulta y una consulta es un origen de datos (un dominio) y como tal dominio se puede obtener la suma de cualquiera de sus columnas en una simple línea con la función DSUM.

Así de sencillo:

=DSUM("Comision"; "aquí el nombre de la consulta") 

Devolverá la suma de ese campo y en principio no se necesitan condiciones.

Hola Enrique. y como se puede hacer cuando el origen es una consulta pero esta realizada desde la hoja de propiedades del elemento, en este caso del cuadro de lista

Sin conocer los datos reales, una solución puede ir en la línea de tomar ese origen de datos (la SQL utilizada como origen de datos del cuadro de lista) y crear una consulta temporal que tras utilizarla se elimina, pero también puede ser tan sencillo como aplicar condiciones en la función de dominio (su tercer parámetro, que en el ejemplo no se utiliza).

Respuesta
1

Hazme caso, es mucho más sencillo lo que te dice Enrique. Mira si tengo un cuadro de lista con pedidos, si en el diseño del formulario lo pongo como

En este caso no aplico ningún criterio ni al cuadro de lista ni al cuadro de texto

Vamos a suponer que quiero que el cuadro de lista me muestre sólo los pedidos a Alemania ( eso sería un criterio)

Cuando lo veo

Dudo que hayas puesto el cuadro de lista como multiselección.

Veo que en el cuadro independiente se puede utilizar la funcion dcum.... la consulta sobre eso es la siguiente... En este caso el origen del cuadro de lista es una consulta que hago desde la hoja de propiedades y no tiene nombre o por lo menos no se con que nombre se guarda esa consulta

La consulta que "creas" en el origen de la fila del cuadro de lista, la puedes guardar perfectamente. Cuando estás en su diseño, pulsas el botón de Guardar como

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas