Calcular intereses dependiendo del año

Tengo una base donde deseo calcular el interés dependiendo del año calculado,

Tengo esto:

Texto35-----=Formato([desde]);"yyyy", que me calcula el año 

Un texto21 independiente, que en "Después de actualizar "he creado el siguiente código:

If texto35 ="2010" then texto21 ="4"

If texto35 ="2012" then texto21 ="6"

If texto35 ="2014" then texto21 ="5"  etc

Me interesaría que me guardase el interés del texto21 en una tabla pasa utilizarlo posteriormente.

Supongo que habrá formas mas eficientes y sencillas de hacerlo.

2 respuestas

Respuesta
1

Jokasta: Entre varias formas de hacerlo, yo crearía una Tabla que por ejemplo se llamara >>InteresYAño con dos campos

Interés Año

4 2010

6 2012

5 2014

Y com un Combo en tu Formulario, adjudicas el valor elegido.

Si tienes dudas me comentas. Saludos >> Jacinto

Si tienes razón, pero me gustaría que fuese automático el calculo, ya sabes menos tecleo, hay muchos datos que introducir y cuanto menos teclado...mejor.

Gracias

Creo que si tienes la Tabla de Intereses y años, con un DlookUp, puedes extraer el valor.

Por Ejemplo al tomar el Foco de ese Texto21.

Me.Texto21.Value = Nz(DlookUp("[Interes]","InteresYAño","[Año] = " & Me.Texto35),0)

YY también en el Form_Current.

Ya me contarás. Saludos >> Jacinto

Jokasta: Ahora que he leído la respuesta de Sveinbjorn, creo que para el cálculo del Texto35 es mejor que utilices la Fórmula que el te sugiere, o sea>>

=Año([Desde])

Mi saludos >> Jacinto

Respuesta
1

Veamos, si quieres guardar el valor en la tabla, asigna al cuadro de texto como origen de control el campo de la tabla.

En cuanto a lo que explicas, veo cosas un poco "raras":

1º/ El código no tiene mucho sentido que lo pongas en "Después de actualizar" del campo que actualizas (Texto21)

2º/ Para calcular el año, es mejor esta forma: =Año([desde]), forma que te devuelve un valor numérico.

3º/ En vez de usar tanto IF, puedes usar un select:

Select case texto35

Case 2010

Me.texto21 = 4

Case 2012

Me.texto21 = 6

...

End Select

Buenas

Creo que me he explicado mal, teniendo en cuenta que mis nociones son bajas, y que voy mirando de aquí y de allá, copiando ejemplos etc., voy a ver si me explico mejor.

Tengo un texto [desde], donde va una fecha, que es obligatorio.

Un Texto35, donde calcula el año, que efectivamente tú fórmula =Año([Desde]), es mejor que la mía.

Quiero que Texto21, calcule un número, que sería el interés, dependiendo del año, que sería una fecha que yo pongo previamente.

La base es compleja y llevo haciendo cosas poco a poco y según mis conocimientos. Se trata de calcular dependiendo de diferentes fechas una liquidación de intereses. Pero en principio me gustaría que al introducir "desde", me calcule el interés.

ejemplo:

desde= 01/01/2010

Texto35=Año([Desde]) ----2010

El año 2010=4,00%; 2011=6,00%;   ...   2015=4,00%

El Texto21= 4,00%, que me lo ha calcule automáticamente, hasta ahora lo meto a mano.

Esto es lo primero que quiero solucionar

MUCHAS GRACIAS

Pues lo que tienes que hacer es programar el evento "Después de actualizar" de tu campo desde, con este código (que tendrás que completar):

Private Sub desde_AfterUpdate()

Dim miValor as Variant

miValor=me.desde

if Isnull(miValor) Then Exit Sub ' Si no hay valor sales sin hacer nada más

if Not IsDate(miValor) Then 

MsgBox "Tienes que poner una fecha",vbInformation,"ERROR"

Me.desde=null

Exit Sub

End If

Me.Texto35=Year(miValor)  'Si quieres poner el año por código, y borras el origen de control del campo Texto35

Select Case  Year(miValor)

Case 2015

Me.Texto21=0.04

Case 2011

Me.Texto21=0.06

Case 2010

Me.Texto21=0.04

End Select

End Sub

Dentro del Select Case has de poner tantos "Cases" como opciones tengas, y el valor lo pones con ese formato decimal.

Al cuadro de texto Texto21, le configuras la propiedad Formato (Propiedades->Formato->Formato:Porcentaje) para que te lo muestre como 4%, 6%...

Buenas, no me sale nada, a ver si me puedes corregir, mira lo que tengo en [desde], después de actualizar:

Private Sub desde_AfterUpdate()
Me.Guarda = Me.Texto11........................esto está relacionado para que me                                                                        guarde dato en la tabla
Exit Sub

Dim miValor As Variant

miValor = Me.Desde

If IsNull(miValor) Then Exit Sub ' Si no hay valor sales sin hacer nada más

If Not IsDate(miValor) Then

MsgBox "Tienes que poner una fecha", vbInformation, "ERROR"

Me.Desde = Null

End If

Me.Texto35 = Year(miValor) 'Si quieres poner el año por código, y borras el origen de control del campo Texto35

Select Case Year(miValor)

Case 2015

Me.Texto21 = 0.04

Case 2011

Me.Texto21 = 0.06

Case 2010

Me.Texto21 = 0.04

End Select


End Sub

Normal que no te haga nada, porque tienes puesto un "Exit Sub" antes de todo el código nuevo... y por tanto, nunca lo ejecutas.

¡Gracias! 

No hay de qué. No te olvides de valorar mi respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas