Access - Sumar con criterio en formulario

 
Vista:
sin imagen de perfil

Sumar con criterio en formulario

Publicado por Hector (25 intervenciones) el 03/09/2021 05:11:59
Quería pedirles de su ayuda. Tengo un formulario ORDENES DE TRABAJO con un subformulario LINEAS ORDENES DE TRABAJO, y en el formulario ORDENES DE TRABAJO en la parte inferior izquierda tengo dos cuadros de textos independientes "MANO DE OBRA" y "MATERIAL" en los cuales me gustaría sumar el total del campo "PRECIO" dependiendo del "TIPO DE ARTICULO "Mano de Obra" o "Material" .El campo clave del subformulario y formulario es "Numero".
Con mucha amabilidad me dijeron que este código me serviría y la hoja de propiedades lo he puesto " al activar el registro" de mi formulario

Private Sub Form_Current()
If Me.NewRecord Then
Exit Sub
Else
MANO_DE_OBRA = DSum("[PRECIO]", "[Lineas Órdenes de Trabajo]", "Numero=" & Me.Numero & " and TipoDeArticulo='[Mano de Obra]'")

MATERIAL = DSum("[PRECIO]", "[Lineas Órdenes de Trabajo]", "Numero=" & Me.Numero & " and TipoDeArticulo='[Material]'")
End If
End Sub

Pero aun no me funciona, estaré haciendo algo mal? De antemano muchas 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

Sumar con criterio en formulario

Publicado por Anonimo (2501 intervenciones) el 04/09/2021 00:57:52
Se puede intentar así:

1
2
3
4
5
Private Sub Form_Current()
If Me.NewRecord Then Exit Sub
Me.MANO_DE_OBRA = DSum("[PRECIO]* Abs(TipoDeArticulo='Mano de Obra')", "[Lineas Órdenes de Trabajo]", "Numero=" & Me.Numero)
Me.MATERIAL = DSum("[PRECIO]* Abs(TipoDeArticulo='Material')", "[Lineas Órdenes de Trabajo]", "Numero=" & Me.Numero)
End Sub


Se efectuaría el calculo al cambiar de registro (solo si no es un nuevo registro)

Personalmente no aplicaría esa solución, crearía dos cuadros de texto independientes para visualizar el calculo (su origen de datos: el mismo DSum anterior) y eso si, si se desea guardar esos datos utilizaría el evento adecuado para copiar en sus ubicaciones los datos (serian redundantes, pero para los diferentes gustos están los colores)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Sumar con criterio en formulario

Publicado por Hector (25 intervenciones) el 04/09/2021 02:31:13
Gracias por tu ayuda, probé el código tal cual me lo enviaste y funciona super bien
. Me gustaría seguir tu consejo y coloque el código que me diste en origen del control del cuadro de texto independiente pero no funciona. Tuve que cambiar la coma por punto y coma porque no me dejaba avanzar pero aun así no funciona y en el cuadro de texto me sale #¿Nombre?
Así quedo el código en origen del control

=DSuma("[PRECIO]* Abs(TipoDeArticulo='Mano de Obra')";"[Lineas Órdenes de Trabajo]";"Numero=" & [Me].[Numero])

Los corchetes que aparecen al final, aparecieron de forma automática
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

Sumar con criterio en formulario

Publicado por Anonimo (2501 intervenciones) el 04/09/2021 22:43:10
Elimina el 'Me.' solo es valido en VBA, le indica al motor de Access que el objeto pertenece al formulario en que esta esa instrucción.

Me ==> Formularios.[nombre del formulario activo].......

Lo de coma o punto y coma ... depende de la configuración regional de Windows (en España se utiliza el punto y coma como separador, la coma se utiliza como separador decimal).

Los corchetes ... los pone el asistente de Access cuando reconoce el objeto como uno que pertenece al formulario (es lo correcto).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Sumar con criterio en formulario

Publicado por Hector (25 intervenciones) el 05/09/2021 03:40:41
Coloqué el código sin el Me de esta forma

=DSuma("[PRECIO]* Abs(TipoDeArticulo='Mano de Obra')";"[Lineas Órdenes de Trabajo]";"Numero=" & [Numero])

, pero me muestra #ERROR en el cuadro de texto
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

Sumar con criterio en formulario

Publicado por Anonimo (2501 intervenciones) el 05/09/2021 13:51:44
Si funciona en VBA la expresión es correcta

Los posibles problemas:
.- El tipo de datos
.- La ausencia de datos (un valor de tipo NULL suele ser lo mas corriente)

Nota:
Access diferencia a los datos asi
.- Entre comillas (simples o dobles) ==> texto = String
.- Sin marcadores ==> suele ser numérico (o una variable)
.- Entre almohadillas (#) ==> un texto que (en los formatos regionales de Windows + Access) sea reconocible como fecha

Ojo con los números,
En el formato regional español se utiliza la coma como separador decimal (en VBA y otros idiomas es el separador de listas)
Esto puede provocar que en otros entornos la coma (utilizada como marcador decimal) pueda ser interpretada como separado de listas
Por lo que Access puede interpretar que una cifra tal como: 10,50 pueda ser interpretada como==> un dato (10) y otro dato (50) provocando error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Sumar con criterio en formulario

Publicado por Hector (25 intervenciones) el 05/09/2021 16:47:48
Tenias razón el código funciona a la perfección, solo tuve que agregar un marcador (&) al final y doble comillas (""). así quedo al final

=DSuma("[PRECIO]* Abs(TipoDeArticulo='Mano de Obra')";"[Lineas Órdenes de Trabajo]";"Numero=" & [Numero] & "")

y funciona super bien, así que muchas gracias por tu ayuda y enseñanza. Un abrazo de Lampa, Chile.
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