Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-09-2007
luxus luxus is offline
Miembro
 
Registrado: oct 2004
Posts: 134
Poder: 20
luxus Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 23-09-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 23-09-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Lo típico sería una sola consulta en un adoquery:
Código SQL [-]
 select Sum(entrada) - Sum(salida)
 from tabla
 where fecha between :ini and :fin 
      and codigo

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.
Responder Con Cita
  #4  
Antiguo 23-09-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
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,
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 23-09-2007 a las 21:37:30.
Responder Con Cita
  #5  
Antiguo 24-09-2007
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
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
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
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


La franja horaria es GMT +2. Ahora son las 05:51:52.


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