Access - sumar un campo de un cuadro de lista

   
Vista:
Imágen de perfil de Maykel

sumar un campo de un cuadro de lista

Publicado por Maykel (17 intervenciones) el 03/07/2015 21:48:48
Hola a todos,
tengo un formulario con un cuadro de lista (ListaGPT) donde este muestra 4 columnas. esta lista se va actualizando al seleccionar una fecha en un cuadro de texto (Txtfecha). La 4ta. columna son numeros los cuales quiero poner la suma total en otro cuadro de texto (TxtSumaTotal). El evento que use fue "Al Cambiar" . Tome un codigo de este mismo foro pero no me funciona me da un error y me marca una linea de codigo como incorrecta. Aqui les dejo lo que hize:

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Txtfecha_Change()
   ' actualiza la lista al cambiar de fecha
  ListaGPT.Requery
 
  ' Debe sumar la columna 4
   Dim i As Integer
   Me.ListaGPT.BoundColumn = 4
   For i = 0 To Me.ListaGPT.ListCount - 1
   Me.TxtSumaTotal = Nz(TxtSumaTotal, 0) + Me.ListaGemaproTag.ItemData(i)
   Next i
   Me.ListaGPT.BoundColumn = 1
 
End Sub

pd: el codigo que esta en negrita es el que me dice que es incorrecto..

en espera de una respusta,
Maykel
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 un campo de un cuadro de lista

Publicado por Enrique Heliodoro (1663 intervenciones) el 03/07/2015 23:46:25
¿Has tenido en cuenta que comienzan a contar en cero?.

No creo que sea necesario cambiar la columna predeterminada, se puede indicar la columna y la fila utilizando la propiedad 'Column'.

Es de suponer que un valor Null en el cuadro de texto solo lo tendría una única vez, evaluarlo de forma continua es poco útil y como se espera un cero si no hay nada que sumar ¿Por qué no asignarlo por defecto?...

Yo lo intentaría asi (reutilizando lo expuesto):

1
2
3
4
5
6
7
8
9
Private Sub Txtfecha_Change()
Dim i As LONG
Me.ListaGPT.Requery
' Si debe de sumar la columna 4 .... será la tres (comienzan en cero)
Me.TxtSumaTotal = 0
For i = 0 To Me.ListaGPT.ListCount - 1
Me.TxtSumaTotal = Me.TxtSumaTotal + Me.ListaGPT.Column(3, i)
Next i
End Sub

Quiero suponer que en la columna visualizada en cuarto lugar (pero de orden 3) tendrá un dato numérico ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Maykel

sumar un campo de un cuadro de lista

Publicado por Maykel (17 intervenciones) el 04/07/2015 13:52:14
muchas gracias por la pronta respuesta,
probé el codigo pero me sigue dando el mismo problema, me señala esa misma linea de codigo como error.
ahora en la casilla me pone un Cero , jeej eso es un avanze!!
Cambié el evento a click asignándole un botón (CmdSumatotal) por si acaso. Pero me da como resultado un cero.
Si, son números yo cuando hize la consulta puse como formato "Moneda" pero lo extraño es que no se me refleja en la columna como tal, sino como números con decimales sin el simbolo de moneda. Debo aclarar que este campo en su consulta relacionada, es un campo calculado, es decir es un campo donde saco el porciento a otro de los campos de esa misma consulta.

Nuevamente muchas gracias!!!!

en espera de alguna idea,
Maykel
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
Imágen de perfil de Maykel

sumar un campo de un cuadro de lista

Publicado por Maykel (17 intervenciones) el 04/07/2015 13:54:29
mi voto es un 10 por la respuesta pero me falto el cero
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 un campo de un cuadro de lista

Publicado por Enrique Heliodoro (1663 intervenciones) el 04/07/2015 14:32:11
Los datos ... son tus datos y yo los desconozco.

Lo primero, lo de formato moneda tiene dos peculiaridades, la primera que la parte decimal de ese tipo de campo se recorta a cuatro decimales y que el símbolo de moneda es un simple adorno (por ello solo se vera el numero, el adorno se pone solo al visualizar el dato).

En un cuadro combinado o un cuadro de lista ... todos sus 'valores' son en principio texto (aunque su origen sea numérico o fecha), al tratar esos datos se utilizan variables de tipo VARIANT, que intentan tratar al dato como se supone que es su origen.

Si añades esta línea dentro del bucle:
debug.print Me.ListaGPT.Column(3, i)

Y copias lo que aparece en la ventana de inmediato en un post se podría analizar la causa del error, en principio utilizar al cuadro de texto como variable (lo he respetado del código original) no es una idea que me parezca optima, dimensionar una variable adecuada al tipo de dato acostumbra a ofrecer mejores resultados.

Revisando el post original, me he apercibido de que se utiliza el evento 'change' de lo que supongo es un cuadro de texto ... ¿el evento change?... no tiene mucho sentido practico por diversas causas:

El evento change se disparara cuando se modifique su contenido, pero sin afectar al contenido real, el valor que 'se esta modificando' esta en su propiedad TEXT(que es el único momento en que 'existe' como tal propiedad, cuando el objeto tiene el foco), con lo cual al teclear caracteres (y carácter a carácter) se le obliga a efectuar una actualización del objeto 'ListaGPT' con el mismo contenido (el mismo que ya tenia antes), solo cuando se alcance el evento 'después de actualizar' el cuadro de texto tendría un nuevo valor que podría afectar al contenido del objeto 'ListaGPT', pues en ese instante tendríamos que el valor ¿anterior? se guardaría en la propiedad 'OldValue' el valor de la propiedad 'Value' se iguala al de la propiedad 'Text' y ya existiría un dato nuevo y real para condicionar (y refrescar) al objeto 'ListaGPT'.
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
Imágen de perfil de Maykel

sumar un campo de un cuadro de lista

Publicado por Maykel (17 intervenciones) el 04/07/2015 15:18:28
Muchas gracias por la pronta respuesta!!!
Veo que lo que dices tiene mucho sentido. La verdad que yo estoy empezando en este mundo y no tengo mucho conocimiento en la materia pero trato de aplicar lo que me dices.
Si entendi bien, la idea es asignarle la accion a un boton con el evento 'después de actualizar'?
tratare de imprimir lo que me dices.
Mil gracias,
Maykel
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
Imágen de perfil de Maykel

sumar un campo de un cuadro de lista

Publicado por Maykel (17 intervenciones) el 04/07/2015 16:02:05
hola Nuevamente y disculpen mi ignorancia!!!
puse el codigo dentro del bucle pero lo único que me sale es una ventana de anuncio diciendo : Se ha producido el error '13' en tiempo de ejecución. No coinciden los tipos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Option Compare Database
Private Sub CmdSumaGemaProtag_Click()
Dim i As Long
' Si debe de sumar la columna 4 .... será la tres (comienzan en cero)
Me.TxtSumaGemaProTag = 0
For i = 0 To Me.ListaGemaproTag.ListCount - 1
Debug.Print Me.ListaGemaproTag.Column(3, i)
Me.TxtSumaGemaProTag = Me.TxtSumaGemaProTag + Me.ListaGemaproTag.Column(3, i)
Next i
End Sub
 
Private Sub TxtDatumGemaproTag_AfterUpdate()
Me.ListaGemaproTag.Requery
End Sub


pd: Estos son los nombres reales de mis objetos. Lo modifiqué pues pensé que no entenderían. Incluí el evento despues de actualizar como supuse y me gusta lo que hace. No se si puse bien el codigo que me facilitaron para imprimir el error .

saludos,
Maykel
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 un campo de un cuadro de lista

Publicado por Enrique Heliodoro (1663 intervenciones) el 04/07/2015 16:17:21
Si da un error en el tipo de datos, no seré yo quien le lleve la contraria solo trataremos de localizar la causa

Para ello hay dos vías, conocer el valor real de esa columna y conocer el origen del cuadro de lista.

Aun siendo adecuada la referencia a la columna y dando por supuesto que hay un numero, el valor real (por venir de un calculo previo según se comento antes), el valor puede ser un NULL y ello habría que tratarlo,

Si se comenta la línea en la que se efectúa la suma (se le antepone una comilla simple y queda desactivada en tiempo de ejecución), asi el bucle se ejecutaria y debería aparecer el valor en la ventana de inmediato, pero démosle un poco de vida para obtener información mas fiel:

.- Antes ==> Debug.Print Me.ListaGemaproTag.Column(3, i)
.- Ahora ==> Debug.Print "Linea: " & i, "Valor: " & Nz(Me.ListaGemaproTag.Column(3, i),"es Nulo")

Copia lo que aparece en la ventana de inmediato y publícalo para poder llegar a una conclusión practica.
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
Imágen de perfil de Maykel

sumar un campo de un cuadro de lista

Publicado por Maykel (17 intervenciones) el 04/07/2015 16:43:11
ohh dios que bruto soy!!! no me sale nada!! esto fue lo que hize


1
2
3
4
5
6
7
8
9
10
11
12
13
14
Option Compare Database
Private Sub CmdSumaGemaProtag_Click()
Dim i As Long
' Si debe de sumar la columna 4 .... será la tres (comienzan en cero)
Me.TxtSumaGemaProTag = 0
For i = 0 To Me.ListaGemaproTag.ListCount - 1
Debug.Print "Linea: " & i, "Valor: " & Nz(Me.ListaGemaproTag.Column(3, i), "es Nulo")
'Me.TxtSumaGemaProTag = Me.TxtSumaGemaProTag + Me.ListaGemaproTag.Column(3, i)
Next i
End Sub
 
Private Sub TxtDatumGemaproTag_AfterUpdate()
Me.ListaGemaproTag.Requery
End Sub


porfa disculpen la ignorancia
saludos,
Maykel
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 un campo de un cuadro de lista

Publicado por Enrique Heliodoro (1663 intervenciones) el 04/07/2015 17:51:23
Por curiosidad ... ¿sabes lo que es la ventana de inmediato? ... (por lo menos no da errores, algo es algo)

En la ventana de VBA (donde esta ese código), pulsa la combinación: [control] + G y aparecerá la ventana de inmediato (en teoría con el resultado de la ultima ejecución o simplemente ejecútalo para que aparezca el resultado)

Si no representa un problema, también seria interesante conocer el origen de datos del cuadro de lista (la SQL o la de la consulta o ....) lo que da lugar a que aparezca en el ese conjunto de datos.
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
Imágen de perfil de Maykel

sumar un campo de un cuadro de lista

Publicado por Maykel (17 intervenciones) el 04/07/2015 22:24:17
Hola, gracias por el interes. Claro no hay ningún problema. Por fin encontré el resultado, copio todo pues no se donde empieza o donde termina.

Gema gebühr
30,09375
1,926
17,334
3,12975
3,852
0,963
0,4815
2,4075
2,889
3,3705
16,8525
Gema gebühr
30,09375
1,926
17,334
3,12975
3,852
0,963
0,4815
2,4075
2,889
3,3705
16,8525
Gema gebühr
30,09375
1,926
17,334
3,12975
3,852
0,963
0,4815
2,4075
2,889
3,3705
16,8525
Gema gebühr
30,09375
1,926
17,334
3,12975
3,852
0,963
0,4815
2,4075
2,889
3,3705
16,8525
Gema gebühr
Gema gebühr
Gema gebühr
Gema gebühr
Gema gebühr
Gema gebühr
Linea: 0 Valor: Gema gebühr
Linea: 0 Valor: Gema gebühr
Linea: 0 Valor: Gema gebühr
Linea: 1 Valor: 1,1531925
Linea: 2 Valor: 2,64825
Linea: 0 Valor: Gema gebühr
Linea: 1 Valor: 1,1531925
Linea: 2 Valor: 2,64825
Linea: 0 Valor: Gema gebühr
Linea: 1 Valor: 1,1531925
Linea: 2 Valor: 2,64825
Linea: 0 Valor: Gema gebühr
Linea: 1 Valor: 1,1531925
Linea: 2 Valor: 2,64825
Linea: 0 Valor: Gema gebühr
Linea: 1 Valor: 30,09375
Linea: 2 Valor: 1,926
Linea: 3 Valor: 17,334
Linea: 4 Valor: 3,12975
Linea: 5 Valor: 3,852
Linea: 6 Valor: 0,963
Linea: 7 Valor: 0,4815
Linea: 8 Valor: 2,4075
Linea: 9 Valor: 2,889
Linea: 10 Valor: 3,3705
Linea: 11 Valor: 16,8525
Gema gebühr
30,09375
1,926
17,334
3,12975
3,852
0,963
0,4815
2,4075
2,889
3,3705
16,8525
Linea: 0 Valor: Gema gebühr
Linea: 1 Valor: 30,09375
Linea: 2 Valor: 1,926
Linea: 3 Valor: 17,334
Linea: 4 Valor: 3,12975
Linea: 5 Valor: 3,852
Linea: 6 Valor: 0,963
Linea: 7 Valor: 0,4815
Linea: 8 Valor: 2,4075
Linea: 9 Valor: 2,889
Linea: 10 Valor: 3,3705
Linea: 11 Valor: 16,8525
Linea: 0 Valor: Gema gebühr
Linea: 1 Valor: 30,09375
Linea: 2 Valor: 1,926
Linea: 3 Valor: 17,334
Linea: 4 Valor: 3,12975
Linea: 5 Valor: 3,852
Linea: 6 Valor: 0,963
Linea: 7 Valor: 0,4815
Linea: 8 Valor: 2,4075
Linea: 9 Valor: 2,889
Linea: 10 Valor: 3,3705
Linea: 11 Valor: 16,8525

SELECT Produckte.Datum, Bezeichnung_Service.Bezeichnung, Produckte.Einnahmen, [Einnahmen]*0.0375+([Einnahmen]*0.0375)*0.2+(([Einnahmen]*0.0375)*0.2+[Einnahmen]*0.0375)*0.07 AS [Gema gebühr]
FROM Bezeichnung_Service INNER JOIN Produckte ON Bezeichnung_Service.ID = Produckte.Bezeichnung_ServiceId_
WHERE (((Produckte.Datum) Like "*" & [Formularios]![Gema pro Tag]![TxtDatumGemaproTag] & "*") AND ((Produckte.Einnahmen)>0))
ORDER BY Produckte.Datum;
PD: por si acaso
Datum: Fecha
Bezeichnung: Descripción
Einnahmen: Ingresos
Produckte: Productos
gebühr: Tarifa
Saludos,
Maykel
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 un campo de un cuadro de lista

Publicado por Enrique Heliodoro (1663 intervenciones) el 04/07/2015 23:12:48
Por lo expuesto (lo que sale en la ventana de inmediato) parece que en ese cuadro de lista se le ha activado lo de 'encabezados de columna' y ello implica que el valor cero no es un dato, es un titulo.

Solución, que el bucle comience en el valor uno (1).

Hay otro posible problema, el separador decimal (Access en VBA espera un punto y aquí muestra la coma), lo adecuado seria utilizar una función para evitar el problema, con lo que las modificaciones serian ( y añadimos una variable para hacer las cosas bien).:

Dim i As Long ==> Dim i As Long, LSuma As Double

For i = 0 To Me.ListaGemaproTag.ListCount - 1 ==> For i = 1 To Me.ListaGemaproTag.ListCount - 1

Me.TxtSumaGemaProTag = Me.TxtSumaGemaProTag + Me.ListaGemaproTag.Column(3, i) ==> LSuma = LSuma + Str( Me.ListaGemaproTag.Column(3, i))

Tenemos que añadir una línea mas (para asignar el valor de la variable al cuadro de texto):
Me.TxtSumaGemaProTag = LSuma


Al final quedaría asi :

Dim i As Long, LSuma As Double
For i = 1 To Me.ListaGemaproTag.ListCount - 1
LSuma = LSuma + Str( Me.ListaGemaproTag.Column(3, i))
Next i
Me.TxtSumaGemaProTag = LSuma

¿Dónde poner ese código? ... en el evento 'después de actualizar' del objeto 'Txtfecha' (no en el ' al cambiar')
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 un campo de un cuadro de lista

Publicado por Maykel (17 intervenciones) el 06/07/2015 10:04:44
al Fin se pudo realizar la suma y ya me aparece el resultdo en el objeto TxtSumaGemaProTag, pero me lo pone sin coma abra alguna solución para eso?
Me percaté de otro problema cuando selecciono un día en el cual no hay ningún ingreso por supuesto no abra números en el campo Gema gebühr y entonces me salta un error. Tiene solución?
saludos,
Maykel

Pd: Muchas muchas gracias a todos lo que hacen posible este foro y en especial a Enrique que ha estado al tanto de mi problema.
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 un campo de un cuadro de lista

Publicado por Enrique Heliodoro (1663 intervenciones) el 06/07/2015 11:19:57
Tienes que entender que yo (y aquellos que sigan el hilo) no vemos lo mismo que ven tus ojos, solo vemos lo que publicas y algo que para ti es visualmente correcto o incorrecto para nosotros es ... tu punto de vista, intenta poner resultados fieles y no interpretaciones (algo similar a pegar el resultado de la ventana de inmediato, en el se aprecian los indispensables pequeños detalles).

Si hace la suma (o suma algo) los posibles problemas con el resultado vendrán de la mano de como interprete los datos, Access internamente (en VBA) interpreta como separador decimal al punto y en Europa se utiliza la coma, lo que puede dar lugar a que solo sume la parte entera (con la función Str se intenta evitar eso) o que un resultado lo pueda llegar a mostrar con el separador decimal de uno u otro tipo.

Llegados a este punto lo de que 'lo pone sin coma' no define con claridad el problema que aprecias.

Si, se puede verificar si hay 'algo sumable' en la lista (y si no lo hay, poner como resultado el cero), todo depende de lo que aparezca en el cuadro de lista cuando no hay datos (no suelo utilizar los encabezados de columna en los combos/cuadros de lista, es 'mas descriptivo' lo que se pueda poner de titulo y así no se mezclan 'peras con manzanas' o lo que es lo mismo 'paja con datos' o 'títulos con datos') de esa forma solo habrá lo que se utiliza: datos y las descripciones en las etiquetas (pero es mi punto de vista).

Veamos, apreciaras que el bucle recorre los ítems desde el uno a la cantidad de ítems menos uno y esa esa l pista a seguir.

Antes de comenzar la suma (el bucle) se verifica cuantos Ítems tiene el objeto, si hay mas de uno (uno en si mismo ya es el titulo) se continua, si hay menos o simplemente no hay se evita la suma y que de como resultado un cero (el valor que por defecto tendrá LSuma en ese código)

Tratare el dato con la función NZ para asegurar una respuesta:

' dimensionamos las variables
Dim i As Long, LSuma As Double
' condicionamos la suma a que tenga sumandos
IF Nz(Me.ListaGemaproTag.ListCount , 0) > 1 Then
' si hay mas de uno, titulo incluido, sumamos
For i = 1 To Me.ListaGemaproTag.ListCount - 1
' Str debería 'convertir' la coma en un punto para respetar decimales
LSuma = LSuma + Str( Me.ListaGemaproTag.Column(3, i))
Next i
End IF
'sea un cero o el resultado de la suma, este valor se visualizaría por asignación directa
Me.TxtSumaGemaProTag = LSuma
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 un campo de un cuadro de lista

Publicado por Maykel (17 intervenciones) el 06/07/2015 12:22:04
muchas gracias por la paciencia que tienen conmigo.
aqui les mando lo que hize y el resultado de la ventana de inmediato

1
2
3
4
5
6
7
8
9
10
11
12
Option Compare Database
Private Sub TxtDatumGemaproTag_AfterUpdate()
Me.ListaGemaproTag.Requery
   Dim i As Long, LSuma As Double
   If Nz(Me.ListaGemaproTag.ListCount, 0) > 1 Then
For i = 1 To Me.ListaGemaproTag.ListCount - 1
Debug.Print Me.ListaGemaproTag.Column(3, i)
'LSuma = LSuma + Str(Me.ListaGemaproTag.Column(3, i))
Next i
End If
Me.TxtSumaGemaProTag = LSuma
End Sub

ventana de inmediato
2,64825
3,852
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 un campo de un cuadro de lista

Publicado por Maykel (17 intervenciones) el 06/07/2015 12:53:01
en mi tierra hay un dicho que dice el que no oye consejo no llega a viejo. entonces como me has dicho que le quite los encabezaedos, se los quite y esto fue lo que hize...

1
2
3
4
5
6
7
8
9
10
11
12
Option Compare Database
Private Sub TxtDatumGemaproTag_AfterUpdate()
Me.ListaGemaproTag.Requery
   Dim i As Long, LSuma As Double
   If Nz(Me.ListaGemaproTag.ListCount, 0) > 1 Then
For i = 0 To Me.ListaGemaproTag.ListCount - 1
Debug.Print Me.ListaGemaproTag.Column(3, i)
'LSuma = LSuma + Str(Me.ListaGemaproTag.Column(3, i))
Next i
End If
Me.TxtSumaGemaProTag = LSuma
End Sub


ventana de inmediato:
2,64825
3,8521,1531925
2,889
0,963

saludos
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 un campo de un cuadro de lista

Publicado por Enrique Heliodoro (1663 intervenciones) el 06/07/2015 15:03:34
Hay una línea extraña (supongo que será un error del copy&paste).

Solo aprecio un error: si como indicas los encabezados desaparecieron, es correcta la adecuación del bucle (que comience en cero), pero no la comparación, bastara que exista un dato para que el bucle funcione (ahora , al quitar el encabezado, basta que sea 'diferente de cero' o mayor que cero o ...)

En los resultados de la ventana de inmediato se ve que suma con decimales ¿Qué aparece en el cuadro de texto del formulario? ... se debería revisar su configuración (por si tiene un formato asignado o el numero de decimales cero o ...) o mejor crear uno nuevo (para asegurarnos de que no esta manipulado) y darle el formato al asignar el valor (ojear en la ayuda como interactúa la función FORMAT con los números, debería abrir un mundo de posibilidades)
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 un campo de un cuadro de lista

Publicado por Maykel (17 intervenciones) el 06/07/2015 21:10:05
bueno, hize una consulta nueva (Gema pro Tag, y ademas un cuadro de lista nuevo (Pero con el mismo nombre:ListaGemaproTag), lo interesante es que cuando cambio la fecha utilizando el cuadro de texto:TxtDatumGemaproTag debo tocar dentro del cuadro de lista para que actualize la informacion en este , esto es una cosa que es nueva pues antes me actualizaba los datosde la tabla solo con camibar la fecha.

Creo que hize los camibos en el bucle poniedo la comapracion distinto de Cero. Espero haberlo hecho bien.

1
2
3
4
5
6
7
8
9
10
11
12
Option Compare Database
Private Sub TxtDatumGemaproTag_AfterUpdate()
Me.ListaGemaproTag.Requery
   Dim i As Long, LSuma As Double
   If Nz(Me.ListaGemaproTag.ListCount, 0) <> 0 Then
For i = 0 To Me.ListaGemaproTag.ListCount - 1
Debug.Print Me.ListaGemaproTag.Column(3, i)
'LSuma = LSuma + Str(Me.ListaGemaproTag.Column(3, i))
Next i
End If
Me.TxtSumaGemaProTag = LSuma
End Sub

ventana inmediato:
3,852
0,4815
3,852
0,4815

SQL del cuadro de lista de la propiedad Origen de la Fila
SELECT Produckte.Datum, Bezeichnung_Service.Bezeichnung, Produckte.Einnahmen, [Einnahmen]*0.0375+([Einnahmen]*0.0375)*0.2+(([Einnahmen]*0.0375)*0.2+[Einnahmen]*0.0375)*0.07 AS [Gema gebühr]
FROM Bezeichnung_Service INNER JOIN Produckte ON Bezeichnung_Service.ID = Produckte.Bezeichnung_ServiceId_
WHERE (((Produckte.Datum)=[Formularios]![Gema pro Tag]![TxtDatumGemaproTag]) AND ((Produckte.Einnahmen)>0))
ORDER BY Produckte.Datum;

SQL del la consulta Gema pro Tag
SELECT Produckte.Datum, Bezeichnung_Service.Bezeichnung, Produckte.Einnahmen, Produckte.Ausgaben
FROM Bezeichnung_Service INNER JOIN Produckte ON Bezeichnung_Service.ID = Produckte.Bezeichnung_ServiceId_;

Pd: aqui les dejo la info por si no me explique bien arriba,
saludos
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 un campo de un cuadro de lista

Publicado por Enrique Heliodoro (1663 intervenciones) el 06/07/2015 23:54:42
Lo siento, me he perdido ....

Revisando el código (y mensajes anteriores) he apreciado que comentas la línea con la suma, si la comentas (la antecedes con una comilla simple) no se ejecutara y el resultado de la suma será cero ....
Espero que en la 'aplicación real' (y en base a tu ultimo mensaje) elimines (o comentes) la línea 7 y 'liberes' la línea 8.

(la línea siete solo muestra datos en la ventana de inmediato, la ocho es la que tiene que sumar)

¿Qué problema hay ahora? ... (si es que hay alguno aparte de los comentados antes)
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 un campo de un cuadro de lista

Publicado por Maykel (17 intervenciones) el 07/07/2015 11:19:45
lo hize a propósito para que supieran lo que habia hecho pero cuando pruebo el codigo lo hago sin la comilla. es decir que el codigo esta 'liberado'. Sólo pongo como comentario la linea Debugprint.
El problema es que ahora cuando ejecuto el codigo mediante el formulario me da error con los tipo de datos que no coinicden y me señala como línea errada precisamente la suma.
saludos,
Maykel
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 un campo de un cuadro de lista

Publicado por Enrique Heliodoro (1663 intervenciones) el 07/07/2015 13:23:32
En esta línea:
LSuma = LSuma + Str(Me.ListaGemaproTag.Column(3, i))

Se le quita la función STR, al parecer interpreta como numero el dato, quedaría así:
LSuma = LSuma + Me.ListaGemaproTag.Column(3, i)
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 un campo de un cuadro de lista

Publicado por Maykel (17 intervenciones) el 07/07/2015 16:53:47
Victoria!!!!!!!!!!
ya suma la columna 4. Ya pone las comas o sea respeta a los decimales!!!!! Maravilloso !!!!!

Hay alguna función que ponga de adorno el símbolo del Euro y reduzca a dos lugares decimales al resultado de la suma?

Muchas Muchas gracias!!!!!!
es increible que un conjunto de códigos te haga tan feliz!!!
saludos ,
Maykel
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 un campo de un cuadro de lista

Publicado por Enrique Heliodoro (1663 intervenciones) el 07/07/2015 17:20:18
Ojea (en la ayuda de Access) la función FORMAT y aplícala a la vez que se le asigna el valor al objeto del formulario
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 un campo de un cuadro de lista

Publicado por Maykel (17 intervenciones) el 07/07/2015 17:26:57
en cuanto tenga algún resultado o duda les muestro para que sepan como me fue. Mil Gracias
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 un campo de un cuadro de lista

Publicado por Maykel (17 intervenciones) el 08/07/2015 13:50:25
bueno resolví el tema de como ponerle el símbolo € en la caja de texto TxtSumaGemaproTag y que me ocupara solamente dos lugares decimales. Esto fue posible una vez selecionado el objeto TxtSumaGemaproTag en hoja de propiedades/ Formato/ le puse "Euro".
Pero todavía no encuentro la forma de hacer lo mismo para los valores de la columna 4 del cuadro de lista: ListaGemaproTag
saludos, maykel
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 un campo de un cuadro de lista

Publicado por Enrique Heliodoro (1663 intervenciones) el 08/07/2015 14:08:14
Darle formato a un valor es sencillo con la función FORMAT

Antes:
Me.TxtSumaGemaProTag = LSuma

Después:
Me.TxtSumaGemaProTag = Format(LSuma,"0,00 \€")

Darle formato al dato de la columna 3 implicaría que 'lo que ahora es un numero', después seria un texto (se tendría que evaluar el contenido para poder sumarlo, es donde entraría la función STR y tal vez tambien VAL) y se podría crear confusión porque los redondeos mostrarían posibles desfases ....

Darle formato en el propio cuadro de texto, puede ser un acierto o un error, pues al asignar 'un valor' de forma directa, o se refresca la presentación (sea con requery, recalc o repaint) o no presentara el dato formateado .....
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 un campo de un cuadro de lista

Publicado por Maykel (17 intervenciones) el 08/07/2015 15:06:11
conclusión: es mejor no modificar los valores de la columna 3
el codigo me funciona perfectamente para el cuadro de texto TxtSumaGemaproTag. GRACIAS!!!!

"cambiando de palo pa´ rumba"
He notado que ahora no me sale de forma automática la información en la tabla tras actualizar la fecha en la caja de texto TxtDatumGemaprotag. Cada vez que quiero cambiar la fecha y ver los valores correspondientes a esta en el cuadro de lista ListaGemaproTag tengo que darle un click al cuadro de lista ListaGemaproTag para que se me acutalizen los datos. A que se debe esto?
saludos,
Maykel
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 un campo de un cuadro de lista

Publicado por Enrique Heliodoro (1663 intervenciones) el 08/07/2015 15:59:26
Creo que es la hora de comenzar a caminar solo, te he ayudado para lograr tus objetivo inicial y las pistas que he proporcionado no me ha parecido que despertaran tu interés por la investigación y adquisición de conocimientos (también es cierto que puedo estar equivocado), pero esa es mi sincera impresión.

Dado que esa línea (la de darlo todo hecho) no es la que siempre he mantenido en mis colaboraciones (en este y otros foros), llegados a este punto lo dejo, si tienes interés en llegar a algún sitio y asentarte en el, te aconsejo que pongas un poco mas de tu parte, los empresarios (y esto es experiencia propia como trabajador y empresario, cada una en su momento) rápidamente se dan cuenta de quienes son los que ocupan espacio y de los que son útiles, da la impresión de que estas en Alemania y nunca considere incompetentes a los alemanes.

Suerte y decide tu camino.
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 un campo de un cuadro de lista

Publicado por Maykel (17 intervenciones) el 08/07/2015 17:00:59
parece que su impresión "no me ha parecido que despertaran tu interés por la investigación y adquisición de conocimientos" esta errada. Antes de realizar alguna pregunta trato de investigar y buscar no sólo en este foro sino en cuanto foro y página mi buscador encuentra. Experimento por mi mismo posibles soluciones con las pista que uds me han dado. Pero como una vez comenté soy bastante principiante en este tema y cuando digo principiante me refiero a hace un mes. Me recomendaron que usara Access y nunca pensé que me fuera a gustar tanto. Llegué a un punto donde tuve que recurrir a estos foros pues me di cuenta que necesitaba algo de programación. Por desgracia en este último tema tengo mucho menos experiencia y aún asi he pasado horas averiguando como trabajarlo para poderlo implementar en mi base de datos. A partir de que tuve la necesidad de recurrir a Access para poder llevar mi control de gastos empezó la curiosidad por el tema Programación, Access y todo a lo que en este ambiente se refiere.
Me pareció muy gentil de su parte quereme ayudar y le estoy ETERNAMENTE AGRADECIDO.
Su impresión es correcta, si, estoy en Alemania.Pero no quiere decir que lo sea. No me considero una persona incompetente al tratar de hacer algo que a uds les a llevado muchos años de experiencia. Se que esto es el principio y la ayuda que me han brindando me insita a seguir estudiando.
con mucho respeto y un gran saludo
Maykel
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