Calcular % de crecimiento en consulta Access

Tengo una consulta de Access 2013 que me dice del segmento de mercado que le pida el valor cobrado en el rango de tiempo que le declare. Necesito que me calcule en una tercera columna el % de crecimiento en ese rango de tiempo. Adjunto imagen de consulta en vista diseño y ejecutada con un diseño

De esta tercera columna como quiero que quede.

1 respuesta

Respuesta
2

Alexis: Esta pregunta me sale sugerida y me cuesta descartar las que tienen ésta condición.

Ignoro tu facilidad para interpretar código y adjudicarlo en un campo de consulta.

Te voy a sugerir una solución que yo veo simple y que no es mía, sino de Sveinbjorn (mis saludos maestro), que está en éste foro en el siguiente enlace.

Calculo serie temporal en access

Verás que la función devuelve la diferencia entre dos valores consecutivos, y en tu caso solo tendrías que dividir esa diferencia por "PesoAnt" (en el ejemplo) y poner el campo como porcentaje.

He querido probar antes de enviarte ésta nota, con una suma de pedidos anuales por Cliente y el resultado queda así.

La consulta es >>

Y el código de Sveinbjorn modificado para mis pruebas >>

'Procedimiento: FncDiferencia  >> Autor: Sveinbjorn para www.todoexpertos.com  >> Fecha: 10/12/2015
'Descripción: Calcula la diferencia entre un valor y el mismo valor del registro anterior
'http://www.todoexpertos.com/preguntas/6j9sweowh66v53br/calculo-serie-temporal-en-access?selectedanswerid=6jamv8u3lqc4m8ci
'JTJ >> Modificada para otra pregunta en TodoExpertos
'https://www.todoexpertos.com/preguntas/95x3j8xg7tcn48q6/calcular-de-crecimiento-en-consulta-access?nid=9ou9rtugggoq9t6fgstplg4qh3w6bhks9ov69tkri4mmhw66grt6jvcpabr3&utm_source=todoexpertos&utm_medium=EmailNotification&utm_campaign=ExpertAnswer_SuggestionRequest
Public Function FncDiferencia(ElNombre As String, ElAño As Integer) As Double
Dim Rst As Recordset
Dim StrSQL As String
Dim SumCargosAñoAct As Double, SumCargosAñoAnt As Double
FncDiferencia = 0
StrSQL = "SELECT * FROM QryCargosClienteAñoSinFiltro WHERE IdCliente='" & ElNombre & "'" & " AND " & "Año<= " & ElAño & " ORDER BY Año ASC"
'Debug.Print StrSQL
Set Rst = CurrentDb.OpenRecordset(StrSQL, dbOpenDynaset)
'Si no devuelve valores
If Rst.RecordCount = 0 Then GoTo Salida
'Si es el primer registro
Rst.MoveLast
If Rst.AbsolutePosition = 0 Then GoTo Salida
'Si no
SumCargosAñoAct = Rst("SumCargos")
Rst.MovePrevious
SumCargosAñoAnt = Rst("SumCargos")
'Realizas el cálculo
FncDiferencia = (SumCargosAñoAct - SumCargosAñoAnt) / SumCargosAñoAnt
Salida:
Rst.Close
Set Rst = Nothing
End Function

Un saludo >>Jacinto

Hermano no estoy acostumbradoa trabajar con códigos a no ser simples cosas en el campo de criterios de la consulta o cuando las personas como usted que me ayudan con su conocimiento me dicen ¨pega esto en la vista sql de la consulta¨. No es el monto de dinero pagado cada año por el cliente lo que quiero saber. Lo que quiero saber es si compró o nó y para eso ver una lista de mis clientes, los años desde que fundé el negocio hasta el actual y resaltado en cualquier color los años que compró, y los años que no compró en blanco.

Alexis: Puedo entender el que no estés familiarizado con el código de VBA. Ninguno de nosotros sabe de todo o mejor dicho no sabemos casi de nada. No te preocupes que si dedicas tiempo y atención, aprenderáslo que te propongas.

Dicho ésto lo que no entiendo es la diferencia de tu texto de la pregunta original que ya en cabecera pone ..."Calcular en %..." y lo que ahora pides.

En beneficio de los usuarios o lectores de éstos mensajes te sugiero que hagas una pregunta con lo que expones en el último texto y seguro que te contestará alguien o más de uno. Podrás así elegir la respuesta que más se acerque a tus necesidades. Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas