FoxPro/Visual FoxPro - Ayuda con recorrido de dos tablas

 
Vista:
Imágen de perfil de eduardo
Val: 12
Ha aumentado su posición en 3 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Ayuda con recorrido de dos tablas

Publicado por eduardo (6 intervenciones) el 05/05/2019 02:17:32
Buenas gente del grupo, vengo por estos lados para solicitarles su ayuda, estoy diseñando un sistema pequeño de prestamos personales y estoy en un dilema, tengo 2 tablas una principal donde cargo los datos del cliente y los datos del credito
tabla prestamos:
numpres N (id del prestamo),
dni, N (Id del Cliente)
fecpres, D (Fecha inicial del Credito)
imp, N (cantidad prestado)
cuotas N (cantidad de cuotas a devolver)
Impcuot N (Importe de las Cuotas)
Estado C (es el estado del mismo o sea si esta abierto o Cancelado), es aca donde necesito ayuda

la otra tabla es Detalle
idprest N (clave con la que se relaciona a la tabla Prestamo)
idcuota N (id del detalle)
cuota N (Aca se enumera la cuota ejemplo si el pago es en 2 cuotas el detalles seria cuota 1 cuota 2 etc)
Importe N (es el importe a pagar)
Fec_pago D (aca se registra la fecha del pago de cada cuota)
Estado (aca indica si la cuota esta pendiente morosa o pagada)

el problema no se como hacer que me haga un scan en la tabla detalle y si todas las cuotas del prestamo estan pagadas que me coloque en el estado de la tabla Prestamo como Cancelado caso contrario que lo coloque como Abierto espero me hayan entendido,
desde ya muchas gracias.
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
Imágen de perfil de Mauricio Antonio
Val: 471
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Ayuda con recorrido de dos tablas

Publicado por Mauricio Antonio (1541 intervenciones) el 05/05/2019 03:01:19
Buenas Eduardo, prueba con este PRG, probablemente tenga errores, pues no tengo datos para probarlo espero te sirva.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
*---
*--- Actualizacion de pagos de prestamos.
CLOSE TABLES ALL
USE detalle IN 0 ORDER idprest
USE prestamos IN 0 ORDER numpres
*---
PUBLIC ncuota, nident, ncuotas, ncant
STORE 0 TO ncuota, nident, ncuotas, ncant
*---
GO TOP IN detalle
DO WHILE !EOF()	&& controla que recorra toda la tabla detalle
	nident = idprest	&& almacenar codigo de prestamo para buscar en tabla Prestamos
	IF SEEK(nident, 'prestamos', 'numpres')	&& Encuentra prestamo en Tabla Prestamos
		SELECT detalle	&& Barre detalle para Control de Cuotas
		SCAN WHILE numpres = nident
			ncant = ncant + 1	&& Control de cuotas
		ENDSCAN
*--- Pregunta por el numero de cuotas ingresadas
		IF cuotas < ncant	&& Falta cancelar cuotas
			REPLACE estado WITH 'ACTIVO' IN prestamos
		ENDIF
		IF cuotas = ncant	&& Prestamo Cancelado
			REPLACE estado WITH 'CANCELADO' IN prestamos
		ENDIF
*---	Acualizar controles
		nident = idprest
		ncant = 0
	ENDIF
ENDDO
*---
CLOSE TABLES ALL
MESSAGEBOX('Proceso de Actualizacion de Cuotas Ha Finalizado')
RETURN
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
Imágen de perfil de Leonardo Daniel A.
Val: 1.115
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Ayuda con recorrido de dos tablas

Publicado por Leonardo Daniel A. (507 intervenciones) el 05/05/2019 05:26:41
Pues lo que podrias hacer es contar y sumar los registros de ese prestamo

suponiendo que tienes IdPrestamo = 10

select Prestamos
_idPrestamo = IdPrestamo


** Asi obtienes los pagos y el importe pagado de un prestamo X
select Detalle
count to _totPagos for IdPrestamo = _idPrestamo
sum importe to _totPagado for IdPrestamo = _idPrestamo

select Prestamo
replace Cancelado = 'S' for cuotas = _totPagos or imp = _totPagado

** Bueno esa es la idea... espero que te sirva
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