Page 1 of 2
Rangos de valores en tablas
Posted: Tue Dec 03, 2013 7:44 am
by jparada
Hola,
Tengo la necesidad de en una tabla ingresar rangos de valores, por ejemplo rango1 de 1 a 100 pesos descontar al empleado 0.5%, rango2 de 101 a 1000 descontar 1.5%.
Por el momento aun no tengo idea de como meter esas condiciones de rangos de valores y después en código como aplicarlos...
Alguna idea...?.
Gracias.
Saludos,
Javier
Rangos de valores en tablas
Posted: Tue Dec 03, 2013 12:37 pm
by Pablo César
Hola Javier,
jparada wrote:rango1 de 1 a 100 pesos descontar al empleado 0.5%, rango2 de 101 a 1000 descontar 1.5%.
Ya dijiste todo vos mismo.
Seria un grid con cuatro columnas:
RANGO | DE | HASTA | PORCENTAJE
Por el momento aun no tengo idea de como meter esas condiciones de rangos de valores
Grabalos en un DBF.
y después en código como aplicarlos...
Solo ver el valor del empleado y buscarlo en el dbf utilizando los dos nombres de campos DE y HASTA.
Alguna idea...?.
Con este comando:
LOCATE SALARIO>=DE .and. SALARIO<=HASTA
If found()... colocar el valor porcentual a ser utilizado en una variable de acuerdo el valor del campo PORCENTAJE.
Re: Rangos de valores en tablas
Posted: Tue Dec 03, 2013 5:00 pm
by Javier Tovar
Hola jparada
Necesitas incluirlos en una grid RANGO | DE | HASTA | PORCENTAJE como dice Pablo César, o solo las cantidades ya con los descuentos?
Saludos
Re: Rangos de valores en tablas
Posted: Tue Dec 03, 2013 5:21 pm
by Javier Tovar
Hola jparada
Quieres trabajar directamente en la Grid o Primero en TextBox y después meterlos en la grid?
Saludos
Re: Rangos de valores en tablas
Posted: Tue Dec 03, 2013 7:23 pm
by Javier Tovar
Hola jparada
Así es como lo necesitas?

- Salarios.png (445.9 KiB) Viewed 4263 times
el código es el siguiente:
Emplea otra base de datos que es Proveedores.DBF, con "CodVend" y "NomVend"
Disculpa por las imágenes que no se muestran bien.
Espero que sea de tu ayuda.
Saludos
Re: Rangos de valores en tablas
Posted: Tue Dec 03, 2013 7:25 pm
by Javier Tovar
Hola... a todos.
Disculpas, se repite el mismo archivo con el código.
Saludos
Re: Rangos de valores en tablas
Posted: Thu Dec 05, 2013 6:05 am
by jparada
Hola Javier/Pablo,
Gracias por sus respuestas.
En realidad por el momento no me refiero a lo gráfico, y por "tabla" quiero decir un archivo dbf.
A ver si puedo ser más claro...
Lo que intento es esta tabla:

- tabla subsidio.png (4.25 KiB) Viewed 4174 times
Cómo se definen esos rangos en un archivo dbf...?, estoy tratando de hacer las primeras implementaciones de un sistema de nómina y de entrada tengo esta duda.
Alguna idea...?.
Gracias.
Saludos,
Javier
Re: Rangos de valores en tablas
Posted: Thu Dec 05, 2013 5:08 pm
by Javier Tovar
Hola jParada
No entiendo bien tu pregunta, pero tratare de explicarte lo que te mando.
Te mando una ventana donde puedes ingresar tus rangos, tiene 5 campos
1.- Consecutivo: que nada más enumera los registros.
2.- Fecha: que solo sirve para saber en que fecha se hizo el movimiento del registro.
3.- De: es otro campo donde ingresas la primera cantidad.
4.- Hasta: Es otro campo donde ingresas la cantidad limite.
5.- Subsidio: Es otro campo de tu DBF donde ingresas el subsidio.
En esta ventana puedes ingresar nuevos registros, borrarlos, modificarlos, etc.
Este programa que te mando genera la base de datos y después te muestra la ventana. Solo te lo mando para que veas como se hace todo y tomes lo que necesites.
Archivo con funciones y procedimientos de la ventana:
Re: Rangos de valores en tablas
Posted: Thu Dec 05, 2013 5:09 pm
by Javier Tovar

- Salarios1.jpg (121.82 KiB) Viewed 4144 times
Re: Rangos de valores en tablas
Posted: Thu Dec 05, 2013 7:36 pm
by Javier Tovar
Hola jParada
Aquí te mando otra forma de hacerlo, espero que sea de tu ayuda.
Code: Select all
/*
* HMG - Harbour Win32 GUI library
* Copyright 2002-2008 Roberto Lopez <mail.box.hmg@gmail.com>
* http://www.hmgforum.com//
*/
#include "hmg.ch"
Function Main()
set century on
REQUEST DBFCDX
RddSetDefault( "DBFCDX" )
CreaBase() //CREA LA BASE DE DATOS DBF
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 200 ;
HEIGHT 200 ;
MAIN;
TITLE 'Button Test'
DEFINE MAIN MENU
POPUP 'Test'
ITEM 'Disable button' ACTION Form_1.Button_1.Enabled := .f.
ITEM 'Enable button' ACTION Form_1.Button_1.Enabled := .t.
END POPUP
END MENU
@ 30,70 BUTTON Button_1 CAPTION "OK" WIDTH 50 HEIGHT 50 ACTION MeteDatosaDBF()
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
Return
*-------------------------------------------------------------------------------------------------------------------------------------------------------------
PROCEDURE CreaBase()
LOCAL nAreaSala := SELECT('Salarios1')
LOCAL aMidb := {}
IF nAreaSala == 0
IF ! FILE('Salarios1.DBF' )
aMidb:= {{ "CodSala" , "N", 010, 0}, ;
{ "Fecha" , "D", 008, 0}, ;
{ "De" , "N", 010, 2}, ;
{ "Hasta" , "N", 010, 2}, ;
{ "Subsidio" , "N", 010, 2}}
DBCREATE('Salarios1.DBF', aMidb )
USE Salarios1 ALIAS Salarios1 NEW SHARED
IF ! FILE( 'Salarios1.CDX' )
INDEX ON STR(CodSala, 10) TAG ICodSala
INDEX ON DTOS(Fecha) TAG IFecha
INDEX ON STR(De, 10) TAG IDe
INDEX ON STR(Hasta, 10) TAG IHasta
INDEX ON STR(Subsidio, 10) TAG ISubsidio
ENDIF
Salarios1->(ORDSETFOCUS('ICodSala'))
Salarios1->(ORDSETFOCUS('IFecha'))
Salarios1->(ORDSETFOCUS('IDe'))
Salarios1->(ORDSETFOCUS('IHasta'))
Salarios1->(ORDSETFOCUS('ISubsidio'))
Salarios1->(DBCLOSEAREA())
ENDIF
ENDIF
USE Salarios1 ALIAS Salarios1 NEW EXCLUSIVE
IF ! FILE( 'Salarios1.CDX' )
INDEX ON STR(CodSala, 10) TAG ICodSala
INDEX ON DTOS(Fecha) TAG IFecha
INDEX ON STR(De, 10) TAG IDe
INDEX ON STR(Hasta, 10) TAG IHasta
INDEX ON STR(Subsidio, 10) TAG ISubsidio
ENDIF
Salarios1->(ORDSETFOCUS('ICodSala'))
Salarios1->(ORDSETFOCUS('IFecha'))
Salarios1->(ORDSETFOCUS('IDe'))
Salarios1->(ORDSETFOCUS('IHasta'))
Salarios1->(ORDSETFOCUS('ISubsidio'))
RETURN NIL
*------------------------------------------------------------------------------------------------------------------------------------------------------------
PROCEDURE MeteDatosaDBF()
LOCAL cSueldo:= ""
LOCAL nSueldo:= 0
LOCAL nSubsidio:=0
LOCAL cSubsidio:= ""
DBSELECTAREA("Salarios1") //SELECCIONA LA BASE DE DATOS A UTILIZAR
ZAP //BORRA TODO LO QUE HAY EN LA DBF
Salarios1->(dbAppend()) // AGREGA UN REGISTRO EN BLANCO
Salarios1->CodSala := 1 //EMPIEZA A INGRESAR LOS DATOS EN LOS CAMPOS DE LA DBF
Salarios1->Fecha := Date()
Salarios1->De := .01
Salarios1->Hasta := 1768.96
Salarios1->Subsidio := 407.02
Salarios1->(dbAppend())
Salarios1->CodSala := 2
Salarios1->Fecha := Date()
Salarios1->De := 1768.97
Salarios1->Hasta := 2653.38
Salarios1->Subsidio := 406.83
Salarios1->(dbAppend())
Salarios1->CodSala := 3
Salarios1->Fecha := Date()
Salarios1->De := 2653.39
Salarios1->Hasta := 3472.84
Salarios1->Subsidio := 406.62
Salarios1->(dbAppend())
Salarios1->CodSala := 4
Salarios1->Fecha := Date()
Salarios1->De := 3472.85
Salarios1->Hasta := 3537.87
Salarios1->Subsidio := 392.77
Salarios1->(dbAppend())
Salarios1->CodSala := 5
Salarios1->Fecha := Date()
Salarios1->De := 3537.88
Salarios1->Hasta := 4446.15
Salarios1->Subsidio := 382.46
Salarios1->(dbAppend())
Salarios1->CodSala := 6
Salarios1->Fecha := Date()
Salarios1->De := 4446.16
Salarios1->Hasta := 4717.18
Salarios1->Subsidio := 354.23
Salarios1->(dbAppend())
Salarios1->CodSala := 7
Salarios1->Fecha := Date()
Salarios1->De := 4717.19
Salarios1->Hasta := 5335.42
Salarios1->Subsidio := 324.87
Salarios1->(dbAppend())
Salarios1->CodSala := 8
Salarios1->Fecha := Date()
Salarios1->De := 5335.43
Salarios1->Hasta := 6224.67
Salarios1->Subsidio := 294.63
Salarios1->(dbAppend())
Salarios1->CodSala := 9
Salarios1->Fecha := Date()
Salarios1->De := 6224.68
Salarios1->Hasta := 7113.90
Salarios1->Subsidio := 253.54
Salarios1->(dbAppend())
Salarios1->CodSala := 10
Salarios1->Fecha := Date()
Salarios1->De := 7113.91
Salarios1->Hasta := 7382.33
Salarios1->Subsidio := 217.61
Salarios1->(dbAppend())
Salarios1->CodSala := 11
Salarios1->Fecha := Date()
Salarios1->De := 7382.34
Salarios1->Hasta := 9999999.99
Salarios1->Subsidio := 0
cSueldo := InputBox ( 'Ingrese sueldo' , 'InputBox Demo' , 'Default Value' ) // TE PREGUNTA QUE SUELDO TIENES?
MsgBox(cSueldo)
nSueldo := Val(cSueldo)
MsgBox("El sueldo es: "+STR(nSueldo))
*CHECA QUE SUBSIDIO TIENES:
n:= 1
Salarios1->(dbGoTop())
DO WHILE !EOF() // AQUI HACE LA COMPARACION Y BUSCA EL "SUBSIDIO" EN LA DBF
IF (( nSueldo >= Salarios1->De ) .AND. ( nSueldo <= Salarios1->Hasta ))
nSubsidio := Salarios1->Subsidio
EXIT
ENDIF
dbSkip()
n:= n + 1
END DO
cSubsidio := Str(nSubsidio,15,2)
MsgBox("El subsidio es de: " + cSubsidio)
RETURN NIL
Saludos