Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-09-2008
Avatar de josi
josi josi is offline
Miembro
 
Registrado: feb 2008
Posts: 100
Poder: 17
josi Va por buen camino
ayuda con eliminacion y actualizacion de tablas

Hola a todos
a ver si me pueden ayudada con esto.

Estoy tratando de hacer una aplicacion de manejo de prestamos
pero ahora me he enfrentado con un problemita y es el siguiente:

Realizo un prestamo el cual el cliente debe pagar por cuotas ya sea semanal,
quincenal o mensual. si el usuario por error hace un pago de cuota ese pago
se debe cancelar ejemplo: un cliente debe 30,000 y un usuario por error hace un pago
de 3,000 le rentan 27,000 lo que quiero es que cuando se elimine ese pago se le sume
a la deuda los 3,000 para que sean los 30,000 de la deuda .

Tengo un form que se llama pagos que es dond se cobran las cuotas estoy unsando
la base de datos access, En este form tengo un boton que me muestra un pequeño form
de donde busco el prestamo por numero de prestamo al cual se le va cobrar la cuota
correspondiente despues que se encuentra el prestamo los datos de ese prestamo se
cargan en el form pagos osea cada edit del frmpagos se llena con los datos que
le corresponden.Este es el codigo del boton realizar pago:
Código Delphi [-]
procedure TFrmpagos.SpeedButton3Click(Sender: TObject);
var
a:double;
b:double;
c:double;
begin
 a:=strtofloat(edit11.Text);//cuota
 b:=strtofloat(edit12.Text);//pago avanzado
 c:=strtofloat(edit15.Text);//notascredito
pagosquery1.Insert;
pagosquery1.FieldByName('Num_prestamo').AsString:=edit1.Text;
pagosquery1.FieldByName('cedula').AsString:=edit2.Text;
pagosquery1.FieldByName('Nombre').AsString:=edit3.Text;
pagosquery1.FieldByName('Direccion').AsString:=edit4.Text;
pagosquery1.FieldByName('telefono').AsString:=edit5.Text;
pagosquery1.FieldByName('formadepago').AsString:=edit8.Text;

pagosquery1.FieldByName('cuota').AsString:=edit11.Text;
pagosquery1.FieldByName('recargo').AsString:=edit13.Text;
pagosquery1['Cuotaspagas']:=frmbusca.estadoprestamoQuery1['CUOTAS PAGAS']+1; //aqui se genera el numero de la cuota

if checkbox1.Checked=false then //este checkbox es si se va hacer un pago major a la cuota
pagosquery1.FieldByName('Pagoavanzado').Text:='0'
else
pagosquery1.FieldByName('Pagoavanzado').Text:=edit12.Text;

pagosquery1.FieldByName('totalpagado').AsString:=edit16.Text;
pagosquery1.FieldByName('efectivo').AsString:=edit18.Text;

if checkbox2.Checked=false then //este checkbox es si se va cobrar notas de creditos  y debito
pagosquery1.FieldByName('notacredito').Text:= ('0')
else
pagosquery1.FieldByName('notacredito').Text:= edit15.Text;
if checkbox2.Checked=false then //este checkbox es si se va cobrar notas de creditos  y debito
pagosquery1.FieldByName('notadebito').Text:= ('0')
else
pagosquery1.FieldByName('notadebito').Text:=edit14.Text;
pagosquery1.FieldByName('totalpagado').AsString:=edit16.Text;
pagosquery1.FieldByName('efectivo').AsString:=edit18.Text;
pagosquery1.FieldByName('cambio').AsString:=edit12.Text;
pagosquery1.FieldByName('cambio').AsString:=edit17.Text;
if checkbox2.Checked=true then  //si se van van a calcular las notas de debito y credito
pagosquery1['balance']:=frmbusca.estadoprestamoQuery1['balanceactual']-a-b-c // aqui es donde se calcula el balance de la deuda a=cuota,b=pago avanzado.c=notas de credito y debito
else
pagosquery1['balance']:=frmbusca.estadoprestamoQuery1['balanceactual']-a-b;
pagosquery1.Post;
SpeedButton3.Enabled:=false
end;

Pero ahora quiero cancelar pagos hechos por error en un frmcancelacion en cual tengo dos adoquery,
un boton de buscar el pago por numero de recibo que se va a cancelar este es el codigo de busueda:

procedure TFrmcancel.BitBtn1Click(Sender: TObject);
var sql: string;
begin
pagosQuery2.CLOSE;
pagosQuery2.sql.clear;


IF LENGTH (EDIT1.TEXT) > 0 THEN
SQL:= 'SELECT * FROM pagos WHERE Num_recibo =' +  (EDIT1.TEXT)
ELSE
SQL:= 'SELECT * FROM pagos';

pagosQuery2.SQL.ADD (SQL);
pagosQuery2.ACTIVE := TRUE;
IF
pagosQuery2.RECORDCOUNT <= 0 THEN
BEGIN
SHOWMESSAGE ('NO HAY PAGOS CON ESTE NUMERO');
END
ELSE
EDIT1.TEXT:= pagosQuery2.FIELDVALUES ['num_prestamo'];

begin
estadoQuery2.CLOSE;
estadoQuery2.sql.clear;


IF LENGTH (EDIT1.TEXT) > 0 THEN
SQL:= 'SELECT * FROM Estadodeprestamos WHERE Numprestamo =' +  (EDIT1.TEXT)
ELSE
SQL:= 'SELECT * FROM pagos';

estadoQuery2.SQL.ADD (SQL);
estadoQuery2.ACTIVE := TRUE;
IF
estadoQuery2.RECORDCOUNT <= 0 THEN
BEGIN
SHOWMESSAGE ('NO HAY PAGOS CON ESTE NUMERO');
END
ELSE
EDIT1.TEXT:= estadoQuery2.FIELDVALUES ['numprestamo'];
BitBtn3.Enabled:=true;
BitBtn3.SetFocus;


end;
end;

si miran bien aqui hay dos busquedas en un mismo boton una es la que me busca el pago por numero de recibo(pagosquery2) a cancelar
y la otra es para buscar el prestamo por numero de pretamo(estadoquery2) al cual se le va a sumar la cantidad del pago eliminado
no es lo correcto, pero lo hago asi porque si hago la busqueda solo por el numero de pago a la hora de sumar la
cantidad del pago eliminado al numero prestamo correspondiente se le suma solo al ultimo registro de la tabla prestamos
osea si hay dos prestamos, el prestamo 01 y el prestamo 02,Si el prestamo 01 tiene un pago por error de 600
y se elimina el pago los 600 se le suma al prestamo 02 por eso
lo hago asi lo unico es que en el edit donde pongo el numero de recibo para buscarlo luego que lo en cuentra
en el edit se me cambia el numero de recibo por el numero de prestamo.

Este es el codigo de eliminar el pago lo coloque en el evento beforedelete del adoquerypagos2
Código Delphi [-]
procedure TFrmcancel.pagosQuery2BeforeDelete(DataSet: TDataSet);
var
sql:string;
begin
estadoquery2.edit;

estadoQuery2.FieldByName('balanceactual').AsString:=estadoQuery2['balanceactual']+pagosquery2['cuota']+pagosquery2['pagoavanzado']+pagosquery2['notacredito'];
estadoQuery2.Post;
end;
La intencion de esto es si me pueden decir otro metodo de hacerlo, he pensado hacerlo con locate pero no se usarlo bien.


gracias.........
Responder Con Cita
  #2  
Antiguo 08-09-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 18
felipe88 Va por buen camino
Cita:
Empezado por josi Ver Mensaje
si el usuario por error hace un pago de cuota ese pago
se debe cancelar ejemplo: un cliente debe 30,000 y un usuario por error hace un pago
de 3,000 le rentan 27,000 lo que quiero es que cuando se elimine ese pago se le sume
a la deuda los 3,000 para que sean los 30,000 de la deuda .
A decir verdad me dio pereza leer bien el mensaje al ver tanto codigo ... sin hembargo, para esta parte en mención podrias usar una tabla "abonos", o usar el UndoLastChange... como sea, sea uno para consultar el ultimo abono o el otro para deshacer la actualización.


PD: Ando un poco distraido asi que perdonenme si me equivoco ...
__________________
Web
Responder Con Cita
  #3  
Antiguo 08-09-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
A mí personalmente me gusta más la idea de la tabla abonos, así queda constancia de que hubo una equivocación.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 10-09-2008
Avatar de josi
josi josi is offline
Miembro
 
Registrado: feb 2008
Posts: 100
Poder: 17
josi Va por buen camino
gracias.......
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Edición, Actualización y Eliminación de filas en un DataGrid en asp.net mamen .NET 7 17-05-2007 00:00:19
eliminacion de tablas relacionada alfil123 Conexión con bases de datos 8 04-09-2006 19:05:58
ayuda con eliminacion de registros ddd_ddd SQL 3 02-11-2005 21:08:18
Actualizacion de CDX en tablas DBF JorgeBec Conexión con bases de datos 0 18-02-2005 16:30:56
Actualización de tablas estadisticas cesar_picazo Conexión con bases de datos 0 15-03-2004 02:59:32


La franja horaria es GMT +2. Ahora son las 09:58:59.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi