Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   a ver si a alguien se le ocurre como hacer este DBgrid (https://www.clubdelphi.com/foros/showthread.php?t=18342)

ale21alito 09-02-2005 19:16:47

a ver si a alguien se le ocurre como hacer este DBgrid
 
Tengo 2 .db :p

1º debes.db
2º haberes.db

campos de debes.db
(IDproducto,IDcliente,fecha,Total)

campos de haberes.db
(IDcliente,fecha,Total)

:cool: Tengo que hacer un formulario que me informe el saldo de tal cliente. Yo lo tengo hecho y funciona perfecto, calcula el total de todos los debes, le resta los haberes e imprime el total en un Tedit. También imprimo por pantalla los haberes y debes en grids diferentes.

:confused: El problema esta aca. Me pidieron hacer un grid solo que se mesclen los haberes y los debes estando intercalados que vaya tirando el saldo ordenado por fechas tanto los debes como los haberes. lo muestro en el ejemplo :

Cliente : Carlos Perez


*************** grid de saldos **********


NomProducto___Conceptohaber___Fecha__Debe__ haber Total

Diseño_____________________________________ 25/02/05__300 _____________300.-

____________________Pago a Cuenta _________26/02/05 ___________200 ____100.-


***********************************************


IMPORTANTE:

1º) La columna NomProducto la obtengo del archivo servicios.db. Cada debe tiene un IDProducto.

2º) Conceptohaber la obtengo del campo "Concepto" que esta en el archivo haberes.db

3º) Fecha esta en los dos archivos, tanto para los debes como los haberes.

4º) Debe es el campo "DebeTotal" del archivo debes.db

5º) Haber es el campo "HaberTotal" del archivo haberes.db

6º) La columna Total habria que incluírla en el grid de saldos ya que es lo que hay que ir modificando a medida que se leen los debes y haberes.

:) bueno espero haber sido claro, siento mucho molestarlos.

saludos de mar del plata, argentina.

ale
www.vastaproduccciones.com.ar

Saul 09-02-2005 19:26:03

Creo que lo que tienes que hacer es una consulta en SQL ya que si es posible hacerlo usando " Group by y having " estas son sentencias SQL que te pueden ayudar

ale21alito 11-02-2005 15:44:04

no puedo hacer la consulta
 
no se como incorporar el GROUP BY y el HAVING para que haga lo que quiero. Sera posible poder hacer una consulta que imprima este listado de esta manera?. lo veo medio dificil me parece.

Yo intenté con esta : no conozco casi nada de SQL. estoy empezando ahora, asi que no creo que sea muy eficiente para hacer lo que quiero hacer

SELECT D.*, S.Nombre, H.* FROM debes.db D, servicios.db S, haberes.db H WHERE S.ID = D.IDProducto AND D.IDCliente = 1 AND H.IDCliente = 1 ORDER BY D.fecha, H.fecha

Pero no sale el listado como quiero que salga... algo esta mal ... :mad:

ale21alito 11-02-2005 15:46:44

en el GRID, en cada registro de debes.db se repite continuamente el registro de haberes.db (hay 1 solo en la tabla).

Tony_G 12-02-2005 17:33:15

Hola.

Creo que tu problema se puede resolver con la siguiente consulta:

select if(total>1,Nomproducto,'') as NomProducto,if(total<1,Nomproducto,'') as ConceptoHaber,fecha,if(total>1,total,0) as Debe,if(total<1,total,0) as Haber from (select cliente,NomProducto,fecha,total from debe,servicios where debe.IDproducto=servicios.Idproducto and cliente=1 union select cliente,concepto,fecha,(-total) from haber where cliente = 1 order by fecha) as consulta;

Y para ir obteniendo el saldo te creas un campo calculado y con la ayuda de una variable lo vas calculando.

A mi me funcionó con D7 y MySQL Versión 4.1.8 (admite subconsultas)

Ten especial cuidado con:
- que el campo total de la base de datos debe y haber pueda tener signo
- en 'select .... union select ....' mantén el mismo orden de los campos que quieres seleccionar.
- revisa los nombres de los campos y bases de datos en la consulta, puede que yo haya utilizado otros a los tuyos.

Espero que te sirva.

Saludos, Antonio.


La franja horaria es GMT +2. Ahora son las 16:23:46.

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