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 02-08-2007
Vichomo Vichomo is offline
Miembro
 
Registrado: jul 2007
Posts: 21
Poder: 0
Vichomo Va por buen camino
Exclamation DBGRID, campo calculado...

Hola amigos del club, tengo un problema, les voy a explicar
manejor interbase, delphi 6.
tengo una pantalla que se llama estado de cuenta de clientes, en ella tengo dbgrid que esta conectado a su dataset y su datasource como siempre,
tengo varios campos, los que importan son CARGO, ABONO, SALDO, el cual cargo y abono lo traigo de la base de datos, y saldo es un campo calculado que me suma y me resta, ya sea abono suma al saldo del cliente y si es cargo se lo resta, el problema esta que yo tengo unos datetimepicker, en donde escogo dos fechas, hago mi query para buscar solo los datos entre una fecha y otra, pero el problema es que si hago una busqueda intermedia (Osea que no es el primer registro ni el ultimo) ahi el campo calculado hace sus operaciones desde que empieza y yo quiero que las haga desde el primer calculo, ya que si no estaria mal la suma.
Ejemplo
La fecha la omito pongo la clave

clave cargo abono saldo
1 -2000 0 -2000
2 0 3000 1000
3 -1500 0 -500
4 0 1000 500

ahi el campo calulado es saldo y hace bien sus cuentas.
ejemplo de si hago una consulta entre fechas (solo omitire una fecha)

yo kisiera que me saliera asi:
clave cargo abono saldo
2 0 3000 1000
3 -1500 0 -500
4 0 1000 500
pero me sale asi

clave cargo abono saldo
2 0 3000 3000
3 -1500 0 1500
4 0 1000 2500


y es logico porque el campo calculado empieza a hacer sus sumas desde el primer registro que tiene el DBgrid, pero entonces ahi es donde quiero tomar
el saldo que tenia el registro pasado (que era -2000) para entonces empezar a sumarle osea (-2000 + 3000 del abono de la clave 2, -1500 de la clave 3 + 1000 del abono 4 y me de el resultado real, osea 2500)
la pregunta es, como hacerlo? como tomar ese valor ya que es calculado y no esta en ninguna tabla.

Espero haber explicado bien y dado a entender, espero me den una solucion.

Gracias por su tiempo de antemano...
Responder Con Cita
  #2  
Antiguo 02-08-2007
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Hola Vichomo

oye.. podrias poner el codigo que utilizas para filtrar los registros (con y sin fecha), esto para ver como filtras... y además, poner el codigo de donde realizas la operación aritmetica... y así poder ver que puede estar pasando
__________________
BlueSteel
Responder Con Cita
  #3  
Antiguo 02-08-2007
Vichomo Vichomo is offline
Miembro
 
Registrado: jul 2007
Posts: 21
Poder: 0
Vichomo Va por buen camino
Arrow

Cita:
Empezado por BlueSteel Ver Mensaje
Hola Vichomo

oye.. podrias poner el codigo que utilizas para filtrar los registros (con y sin fecha), esto para ver como filtras... y además, poner el codigo de donde realizas la operación aritmetica... y así poder ver que puede estar pasando
este query es el principal, cuando me muestra todo su eestado de cuenta, los datos del cliente (cvecli) lo agarro de un dataset que me muestra todos los clientes y ahi le doy click a un cliente en un dbgrid y me muestra la pantalla con este query

fdetedo.sal:=0;
fdetedo.edocuenta.close;
fdetedo.edocuenta.SelectSQL.Text:= 'SELECT * FROM EDOCUENTA WHERE CVECLIMOV='''+IBEDO.FieldByName('CVECLI').AsString+'''ORDER BY FECHA, cveedo';
FDETEDO.edocuenta.Open;
fdetedo.Label2.Caption:=ibedo.fieldByName('RAZSO').AsString;
FDETEDO.ShowModal;


y la de la fecha es este:

ShortDateFormat := 'dd.mm.yyyy';
fecha1 := QuotedStr(DateToStr(DT1.Date));
fecha2 := QuotedStr(DateToStr(DT2.Date));
redoclientes.QRLabel5.Caption:=label2.Caption;
redoclientes.IBredocli.Close;
redoclientes.IBredocli.SQL.Clear;
redoclientes.IBredocli.SQL.Add('select e.cveedo, e.fecha, e.folio, e.cantid, e.concep, e.prevta, e.cargo, e.abono, e.saldomov, e.cveclimov,');
redoclientes.IBredocli.SQL.Add('e.cvepromov, p.despro from edocuenta e left join productos p on p.cvepro=e.cvepromov where');
redoclientes.IBredocli.SQL.Add('e.cveclimov='+fedocuenta.IBEDO.FieldByName('CVECLI').AsString+' and e.fecha between '+fecha1+' and '+fecha2+' order by e.fecha, e.cveedo');
ShortDateFormat := 'dd/mm/yyyy';
redoclientes.IBredocli.Open;


y el calculado esta en el evento oncalcfields
que es este

With edocuenta do begin
sal:=sal+(FieldByName('ABONO').AsFloat);
sal:=sal+(FieldByName('CARGO').AsFloat);
fieldbyname('saldoc').AsFloat:=sal;
end;

espero puedas ayudarme
Responder Con Cita
  #4  
Antiguo 03-08-2007
Vichomo Vichomo is offline
Miembro
 
Registrado: jul 2007
Posts: 21
Poder: 0
Vichomo Va por buen camino
Unhappy

Creo que nadie pudo ayudarme... Gracias de todas maneras, el intento se hace
Responder Con Cita
  #5  
Antiguo 03-08-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
En el campo calculado debes ubicar el saldo inicial del periodo que estas trabajando, en este caso seria la suma de los ingresos menos los egresos de todas las operaciones antes de la fecha de inicio, sin incluirla.

para tales fines te recomiendo una vista en la base de datos
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
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
DBGrid... agregar un campo calculado...? BlueSteel Varios 4 05-02-2009 19:40:37
crear campo calculado en dbgrid tesorillo3 MySQL 0 01-02-2007 00:36:29
Pasar un campo calculado a un campo del mismo DbGrid maravert Conexión con bases de datos 3 12-05-2006 00:31:30
Actualizar campo calculado de DBGrid Agar23 Varios 3 12-11-2003 08:27:36
Campo Calculado en DBGrid Agar23 Tablas planas 0 07-11-2003 09:05:50


La franja horaria es GMT +2. Ahora son las 07:37:01.


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