FoxPro/Visual FoxPro - busqueda y vencimiento

 
Vista:

busqueda y vencimiento

Publicado por Jorge (10 intervenciones) el 08/06/2005 04:44:12
Hola quisiera preguntarles algo ya que no tengo mucha experiencia, estoy desarrollando un sistema en VFP 5 - win 98, el sistema es de un local de video cable, estas son mis 2 consultas:

1) El sistema necesita realizar una busqueda de abonados, ya tengo un formulario que es de altas y bajas (tengo otro proyecto que realiza una busqueda ingresando letra por letra del nombre, en un combo y automaticamente se actualiza un list que tiene los nombres, pero no me sirve porque el formulario de busqueda esta aparte, o yo no se como enlazarlo con el de altas y bajas), yo tengo que hacer lo mismo pero que se me actualice el formulario que es de altas y bajas, por ej. yo busco un cliente por su DNI y tecleo 22.222.222, necesito que se me actiualice el formulario con los datos de ese cliente. Porque me parece que hacer otro formulario aparte que haga la busqueda y despues vuelva al formulario altas y bajas con el resultado de la busqueda debe ser mas complicado

2) Necesito que a los 30 dias del ultimo vencimiento salga un cartel avisando el vencimiento, con este codigo me dice cuantos dias debe cada abonado:

CLEAR
store Dtoc(ultimopago) to fec_venc
*store dtoc(fecha) to hoy
STORE DATE( ) TO gdhoy
STORE CTOD(fec_venc) TO gdnavidad
STORE STR(gdhoy - gdnavidad, 5) TO gddays_left
? 'El Abonado adueda:', gddays_left, 'días'

Pero no se como hacer para verificar si la cantidad de dias es mayor a 30, por ejemplo si pregunto if gddays_left > 30 me sale error, si pregunto if {gddays_left} > {30} siempre me dice que no sin importar el numero o la condicion. Necesito saber como comprobar si pasaron 30 dias de la ultima fecha de pago hasta la fecha actual.
Desde ya muchas gracias por su ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:busqueda y vencimiento

Publicado por Antonio (207 intervenciones) el 08/06/2005 15:15:29
Jorge, Contrale casi no pides, pero te voy hayudar, mira con lo primero:

creas un formulario que contenga lo siguiente:

1) Text1
2) Creas una tabla que sea temporal con los campos que tu quieres seleccionar el el text1, esta tabla tienes que llenarla con un select que hiciste y lo introdujiste en otra temporal al subir esta forma.
3) Creas un boton Command1 y en el procedure Click le pones esto:
ThisForm.Release()
Ej:

Todo esto en el Load de la Forma
Esta es la tabla que se llenara con el select antes:
Select codconcept, concepto;
from concepto;
into table c:\temp\q_conceptos.dbf

Tengo ya la tabla 1 llena,
ahora creo una tabla la cual la lleno con esta, pero a esta tabla le creo un campo Logico que se llamara sta

CREATE TABLE c:\temp\q_conceptos1.dbf free(codconcept c(5), concepto c(30), sta L)
index on codconcept TAG codconcept

En el punto command corres esto primero para que tengas la tabla ya creada y asi puedas hacer lo siguiente: CREATE TABLE c:\temp\q_conceptos1.dbf free(codconcept c(5), concepto c(30), sta L)

3)creas un Grid1 que estara compuesto por los campos de esta tabla q_conceptos1

lo pones RedOnly menos la columna 3

4) El procedure: AfterRowColChange del Grid, pones esto
replace q_conceptos.sta with .t.
Thisform.Grid1.Refresh()

5) el Procedure BeforeRowColChange del Grid pones esto
Replace q_conceptos.sta with .f.
Thisform.Grid1.Refresh()

6) En el Init del Grid pones esto;
oGrd = THISFORM.grid1
oGrd.SetAll("dynamicbackcolor", "", "Column")

oGrd.SetAll("dynamicbackcolor", ;
"IIF(q_conceptos.sta, RGB(255,255,0), RGB(255,255,255))", "Column")

thisform.grid1.Column3.AddObject("chk1", "checkbox")
THisform.grid1.Column3.CurrentControl="chk1"
thisform.grid1.Column3.chk1.Visible =.t.
thisform.grid1.Column3.Sparse =.f.
thisform.grid1.Column3.chk1.caption =' '
*thisform.grid1.Column5.chk1.enabled =.f.
ThisForm.text1.Value = ' '

7) En el KeyPress de cada Text1 de cada columna del Grid pones esto:
If Lastkey() = 13
For i=1 to 250
Thisform.height=262-(i*1) &&2
Endfor

ThisForm.Command1.Click()
Endif

If LastKey() = 27
For i=1 to 250
Thisform.height=262-(i*1) &&2
Endfor

ThisForm.Command1.Click()
Endif

7) En el InteractiveChange del Thisform.Text1, o sea en el objeto que te dije el numero 1 Text1 pones lo siguiente:

A = UPPER(ALLTRIM(thisform.TEXT1.VALUE))

replace sta with .F.

IF SEEK(A)
replace sta with .t.

THISFORM.GRID1.REFRESH()

ENDIF

esto es todo, mira con esto lo puedes utilizar para otras buscquedas, solo tienes que enviar al campo que quieras el valor del cual estes posicionado en la tabla temporal q_conceptos1

Espero que lo hagas

Lo del problema # 2 lo que tienes que hacer es solo restar el dia de hoy Date() con la fecha que tienes ej: Date() - Fecha y te da un numero entero de dias
Saludos
Antonio Moquete
Santo Domingo Rep. Dom.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar