FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Implementar Movimentos de Bancos
Hola a todos,
Me he encontrado con un gran problema a la hora de implementar los movimientos de una cuenta bancaria. Os comento lo que he hecho hasta el momento. Tengo un form en que el usuario ha de elegir el nº de cuenta corriente, el importe de pago o ingreso, el concepto y la fecha. Si el usurio decide ver un extracto de cuenta de una de sus cuentas corrientes hago una consulta en la que se pide al usuario que especifique el rango de fechas. Hasta aqui todo va bien. El problema que me surge es como implementar una funcion para rellenar el campo de SALDO. La idea que tenia era ir al ultimo registro de la consulta e ir sumando o restando del saldo anterior con el importe del registro actual. Una vez terminado se iria al registro anterior. Esto se repitiria hasta llegar al primer registro del query. Aqui os adjunto el codigo: while not(FMovimientosCuentas.ADOQuery1.First) do begin FMovimientosCuentas.ADOTable1.First; if (FMovimientosCuentas.ADOTable1.Locate('codigo',FMovimientos.ECodigo.Text,searchoptions)) then begin if (FMovimientosCuentas.ADOTable1.FieldValues['saldoinicial']<>null) then aux:=FMovimientosCuentas.ADOTable1.FieldValues['saldoinicial'] else aux:='0.00'; end; saldo:=StrToFloat(aux); if (FMovimientosCuentas.ADOQuery1.FieldValues['movimiento']<>null) then tipo:=FMovimientosCuentas.ADOQuery1.FieldValues['movimiento']; if (tipo='ENTRADA') then begin if (FMovimientosCuentas.ADOQuery1.FieldValues['importe']<>null) then aux:=FMovimientosCuentas.ADOQuery1.FieldValues['importe'] else aux:='0.00'; valor:=StrToFloat(aux); saldo:=saldo+valor; end; if (tipo='SALIDA') then begin if (FMovimientosCuentas.ADOQuery1.FieldValues['importe']<>null) then aux:=FMovimientosCuentas.ADOQuery1.FieldValues['importe'] else aux:='0.00'; valor:=StrToFloat(aux); saldo:=saldo-valor; end; FMovimientosCuentas.ADOQuery1.Edit; FMovimientosCuentas.ADOQuery1.FieldValues['saldo']:=FloatToStr(saldo); FMovimientosCuentas.ADOQuery1.Post; FMovimientosCuentas.ADOQuery1.Prior; end; Os agradecería si me pudieseis echar una mano para terminar la implementación del programa. Gracias y un saludo. |
#2
|
||||
|
||||
Hola
Perdona pero no entiendo muy bien lo que necesitas, me parece que por lo que entiendo depende de la configuracion que tengas en la tabla en especifico. Como puedes analizar el saldo, si no hay una continuidad en la tabla. Perdona pero no lo entiendo, tal vez si amplias la explicacion. Otra cosa, te aconsejo que utilices las etiquetas delphi. Saludos |
#3
|
||||
|
||||
Lo típico sería una sola consulta en un adoquery:
Habría que ver las demás tablas y detalles a tener en cuenta, pero más o menos sería así. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#4
|
||||
|
||||
Estoy en la misma que Caral. No termino de comprender lo que deseas hacer.
Si puedes darnos mejores detalles y explicar con otras palabras tal vez lo que buscas, te podríamos ser de ayuda. Mirando el código, con un poco de esfuerzo debido a la falta de las etiquetas DELPHI, he notado lo siguiente: 1. Al parecer los campos saldoinicial, importe y saldo están declarados del tipo string. ¿No sería más sencillo declararlos como enteros o algún formato de moneda? Digo... con ello ya te evitarias estar haciendo conversiones innecesarias. 2. Tienes una variable saldo... que no se donde viene y que valor tiene inicialmente. 3. En el código tienes mezclado un TTable y TQuery y no se termina de comprender cúal es el propósito de cada uno. Y por último no nos aclaras de que manera estás mostrando los resultados. ¿En un TDBGrid? Sería muy recomendable que nos indiques que base de datos estás empleando. Por el momento más no puedo decirte. Ahora que recuerdo, también puede serte útil el ejemplo de "libreta de banco" que viene en la Cara Oculta de Delphi 4. Dale una leída, pues creo entender que lo que deseas es justamente eso. Saludos, Última edición por Delphius fecha: 23-09-2007 a las 21:37:30. |
#5
|
|||
|
|||
Posible Rta.
No es muy legible el codigo, pero te aconsejo que crees una tabla temporal con los campos de tipo Numeric o Doble, vas recorriendo como lo estás haciendo y vas actualizando un campo Saldo y otro de Tipo de Saldo.
Yo al menos lo hago así en los resumenes de Cta de clientes/proveedores, probé hacerlo directamente con consultas pero no lo logré, salvo que trabajes con Stored Procedures y uses cursores dentro de estos sino no lo logras. El tema de la conversión String a Float es un tema un poco complejo por el redondeo, ya que jamás te va a dar exacto, siempre tendrás un valor encima o debajo del real. Probá con una tabla temporal, donde rellenas los campos con 0 y no te preocupas por los nulos, además si no tienes datos cargados están nulos los campos o vacíos ? Saludos y espero no confundirte mas |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Implementar FTP sin Indy | b0rn | Varios | 2 | 22-03-2007 10:42:23 |
Implementar GnuPG | Henryoh | Varios | 2 | 17-01-2007 21:10:18 |
Implementar un CVS | menavas | Varios | 1 | 03-10-2006 22:48:01 |
Implementar cliente-servidor | tato | Servers | 6 | 22-08-2006 02:18:26 |
Tabla de Bancos Españoles | Ale33Arg | Varios | 1 | 14-08-2006 03:26:08 |
|