Rangos de valores en tablas

HMG en Español

Moderator: Rathinagiri

jparada
Posts: 433
Joined: Fri Jan 23, 2009 5:18 pm

Rangos de valores en tablas

Post 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
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

Rangos de valores en tablas

Post 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.
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
Javier Tovar
Posts: 1275
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México

Re: Rangos de valores en tablas

Post 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
Javier Tovar
Posts: 1275
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México

Re: Rangos de valores en tablas

Post by Javier Tovar »

Hola jparada

Quieres trabajar directamente en la Grid o Primero en TextBox y después meterlos en la grid?

Saludos
Javier Tovar
Posts: 1275
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México

Re: Rangos de valores en tablas

Post by Javier Tovar »

Hola jparada

Así es como lo necesitas?
Salarios.png
Salarios.png (445.9 KiB) Viewed 4266 times
el código es el siguiente:
Salarios1.rar
(5.55 KiB) Downloaded 234 times
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
Attachments
Salarios.rar
(5.55 KiB) Downloaded 238 times
Javier Tovar
Posts: 1275
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México

Re: Rangos de valores en tablas

Post by Javier Tovar »

Hola... a todos.

Disculpas, se repite el mismo archivo con el código.

Saludos
jparada
Posts: 433
Joined: Fri Jan 23, 2009 5:18 pm

Re: Rangos de valores en tablas

Post 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
tabla subsidio.png (4.25 KiB) Viewed 4177 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
Javier Tovar
Posts: 1275
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México

Re: Rangos de valores en tablas

Post 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.
Salarios1.rar
(92.38 KiB) Downloaded 225 times
Archivo con funciones y procedimientos de la ventana:
Salarios1.rar
(4.94 KiB) Downloaded 229 times
Javier Tovar
Posts: 1275
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México

Re: Rangos de valores en tablas

Post by Javier Tovar »

Salarios1.jpg
Salarios1.jpg (121.82 KiB) Viewed 4147 times
Javier Tovar
Posts: 1275
Joined: Tue Sep 03, 2013 4:22 am
Location: Tecámac, México

Re: Rangos de valores en tablas

Post 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
Post Reply