Calcular ispt en access

Quiero saber como puedo calcular el ispt ( impuesto que se retiene en las nominas ) en un modulo de access.

1 respuesta

Respuesta
1
No tengo ni idea de qué es el ispt. Como no me expliques de qué va y cómo funciona no puedo ayudarte.
Espero tus noticias.
https://www.sugarsync.com/pf/D274241_6928283_921514 ... http://neckkito.eu5.org ...
Es así mira, una tabla tiene 3 columnas ( limite inferior, limite superior y cuota fija ). Supongamos que en el primer renglón tiene 0.00 en limite inferior, 5,000.00 en limite superior y 315.00 en cuota fija, y en el segundo renglón tiene las cantidades 5,001.00, 10,000.00 y 350.00 respectivamente. Necesito una fórmula o función o algo en visual basic que busque una cantidad entre el limite inferior y limite superior para que me traiga la cuota fija. Por ejemplo: si le pongo la cantidad de 2,000.00, me traerá la cuota fija de 315.00 ya que los 2,000.00 se ubican en entre el limite inferior y limite superior del primer renglón. Te agradezco mucho tu atención.
Te pongo una función que te devolverá el valor que pides. Doy por sentado que sabes cómo funciona el tema de las funciones. Si no fuera así me lo comentas y te lo explico.
Comentarte también que te pongo el código de cabeza. Si tienes algún problemilla me lo comentas y lo solventamos.
Suponiento que a tu tabla la llamamos TDatos, el código sería:
---
Private Function subCuotaFija(vISTP as Double) As Double
Dim vInf, vSup As Variant
Dim rst as RecordSet
Set rst = CurrentDb.OpenRecordset("TDatos")
'Esta línea es por si la tabla estuviera vacía, para evitar
'que te salte un error de código
If rst.RecordCount=0 Then Exit Sub
rst.MoveFirst
Do Until rst.EOF
vInf = rst.Fields("limite inferior").Value
vSup = rst.Fields("limite superior").Value
If vISTP<vSup then
If vISTP>vInf Then
subCuotaFija=rst.Fields("cuota fija").Value
End If
End If
rst.MoveNext
Loop
End Function
---
Te he marcado en negrita los nombres que debes comprobar, porque tendrás que cambiarlos por los de tu BD.
Si tienes algún problemilla me comentas.
Una cosilla, que se me olvidaba:
Si empleas Access 2003 y el código te da error prueba de cambiar la línea
Dim rst as RecordSet
por
Dim rst as Object
Por favor explicame como funciona el tema de las funciones del que me comentas, es decir, voy a crear un modulo en access ( yo uso el 2007 ) y debo pegar lo que me mandaste, pero en el formulario qué función voy a poner para que me traiga el resultado.
Efectivamente el código que te envié debe ir en un módulo.
Te voy a poner un ejemplo para que puedas ver cómo implementarlo en tu formulario. Imaginemos que tu formulario tiene 2 campos, uno, llamado [Importe] y otro llamado [ispt].
En el campo [Importe] es donde tú escribes evidentemente el importe que servirá de base para devolverte la cuota fija.
1.- Sacas las propiedades del campo [importe]. Te vas a la pestaña Eventos, al evento "Después de actualizar", y le generas el siguiente código:
---
Private Sub...
Dim vImp, vCF as Variant
vImp = Me.[importe].value
If IsNull(vImp) Then Exit Sub
vCF = subCuotaFija(vImp)
Me.[ispt].Value = vCF
End Sub
---
Como verás, vImp recoge el valor del campo "Importe", y es el valor que se pasa como argumento a la función.
VCF recoge el resultado devuelto por la función, que será la cuota fija correspondiente a ese importe, y es el valor que asignamos al campo "ispt" del formulario, de manera que te salga automáticamente.
Facil, ¿no? ;)
Ya me dirás qué tal te ha ido.
Un gran saludo.
¿Sabes qué? No lo puedo hacer correr, podrías poner de una sola pieza el código para que yo solo lo copie al módulo, tomando en cuenta que mi tabla se llama 2TABLAIMPUESTO, el campo del formulario donde pongo el importe se llama Texto200 y donde necesito el resultado de la cuota fija se llama Texto202. La tabla es 2TABLAIMPUESTO y sus columnas son LIMITEINFERIOR LIMITESUPERIOR CUOTAFIJA
Y dime también por favor que voy a poner en el Texto202 para que me traiga el resultado sin necesidad de poner nada en las propiedades del campo. Muchas gracias por tu amabilidad.
Aquí tienes el código. Te he añadido un par de cositas para depurarlo un poco mejor. Este código debes ponerlo en el evento "Después de actualizar" del control Texto200:
---
Private Sub...
Dim vISTP As Variant
Dim vInf, vSup, vCF As Variant
Dim rst as RecordSet
vISTP=Me.Texto200.Value
If IsNull(vISTP) Then Exit Sub
Set rst = CurrentDb.OpenRecordset("2TABLAIMPUESTO")
'Esta línea es por si la tabla estuviera vacía, para evitar
'que te salte un error de código
If rst.RecordCount=0 Then GoTo salida
rst.MoveFirst
Do Until rst.EOF
vInf = rst.Fields("LIMITEINFERIOR").Value
vSup = rst.Fields("LIMITESUPERIOR").Value
If vISTP<vSup then
If vISTP>vInf Then
vCF=rst.Fields("CUOTAFIJA").Value
Exit Do
End If
End If
rst.MoveNext
Loop
Me.Texto202.Value = vCF
salida:
rst.Close
Set rst = Nothing
End Sub
---
Ahora la teoría (je, je...) dice que: escribes el importe en Texto200, le das al Enter o al tabulador y, por arte de magia, en Texto202 te aparece la cuota fija.
Si te surge algún problema me lo comentas e intentamos arreglarlo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas