Calcular porcentajes en múltiples registros

16/11/2012 - 11:10 por Toni | Informe spam
Buenas,

Planteo una duda que seguro está resuelta en los foros, pero no he podido encontrarla:

Tengo una tabla con registro [Valor] y [%Valor], y desearia un código SQL o VB para Acces 2007 que, para cada evento AfterUpdate de [Valor], recalcule el campo [%Valor] de todos los registros ([%Valor] = [Valor]/Suma de todos los campos [Valor])

Podeis echarme una mano con el código?

Gracias
Toni

Preguntas similare

Leer las respuestas

#1 Toni
20/11/2012 - 14:18 | Informe spam
Siguiendo con este tema, he conseguido el código siguiente, peró me da un resultado 0. Creo que se debe a que el código no reconoce el campo 'Valor'en el execute, y la división resulta cero para todos los registros.

Podeis hechar una mano? Gracias
Toni

Dim TotalMiValor As Double
Dim dba As Database
Dim rsa As Recordset

Set dba = CurrentDb
Set rsa = dba.OpenRecordset("Select SUM(Valor) AS TotalValor FROM Tabla1")
TotalMiValor = rsa!TotalValor

rsa.Close
dba.Execute "UPDATE Tabla1 SET Total = (Valor/" & TotalMiValor & ")"
dba.Close

Me.Recalc




On Friday, November 16, 2012 11:10:17 AM UTC+1, Toni wrote:
Buenas,



Planteo una duda que seguro está resuelta en los foros, pero no he podido encontrarla:



Tengo una tabla con registro [Valor] y [%Valor], y desearia un código SQL o VB para Acces 2007 que, para cada evento AfterUpdate de [Valor], recalcule el campo [%Valor] de todos los registros ([%Valor] = [Valor]/Suma de todos los campos [Valor])



Podeis echarme una mano con el código?



Gracias

Toni
Respuesta Responder a este mensaje
#2 Toni
27/11/2012 - 09:29 | Informe spam
Finalmente, se debia al tamaño de campo del valor numérico 'Total'. Al tenerlo en 'Entero Largo' el número de decimales aceptados era nulo, con lo cual devolvia cero para todas las divisiones con decimales. Cambiando este tamaño de campo a Doble he solucionado el tema.

Toni


On Tuesday, November 20, 2012 2:18:22 PM UTC+1, Toni wrote:
Siguiendo con este tema, he conseguido el código siguiente, peró me da un resultado 0. Creo que se debe a que el código no reconoce el campo 'Valor'en el execute, y la división resulta cero para todos los registros.



Podeis hechar una mano? Gracias

Toni




Dim TotalMiValor As Double

Dim dba As Database

Dim rsa As Recordset



Set dba = CurrentDb

Set rsa = dba.OpenRecordset("Select SUM(Valor) AS TotalValor FROM Tabla1")

TotalMiValor = rsa!TotalValor



rsa.Close

dba.Execute "UPDATE Tabla1 SET Total = (Valor/" & TotalMiValor & ")"

dba.Close



Me.Recalc









On Friday, November 16, 2012 11:10:17 AM UTC+1, Toni wrote:

> Buenas,

>

>

>

> Planteo una duda que seguro está resuelta en los foros, pero no he podido encontrarla:

>

>

>

> Tengo una tabla con registro [Valor] y [%Valor], y desearia un código SQL o VB para Acces 2007 que, para cada evento AfterUpdate de [Valor], recalcule el campo [%Valor] de todos los registros ([%Valor] = [Valor]/Suma de todos los campos [Valor])

>

>

>

> Podeis echarme una mano con el código?

>

>

>

> Gracias

>

> Toni
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida