Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-02-2005
ale21alito ale21alito is offline
Miembro
 
Registrado: feb 2005
Ubicación: Mar del Plata . Argentina
Posts: 49
Poder: 0
ale21alito Va por buen camino
Lightbulb a ver si a alguien se le ocurre como hacer este DBgrid

Tengo 2 .db

1º debes.db
2º haberes.db

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

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

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.

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

Última edición por ale21alito fecha: 09-02-2005 a las 20:20:26.
Responder Con Cita
  #2  
Antiguo 09-02-2005
Saul Saul is offline
Registrado
 
Registrado: ago 2004
Posts: 5
Poder: 0
Saul Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 11-02-2005
ale21alito ale21alito is offline
Miembro
 
Registrado: feb 2005
Ubicación: Mar del Plata . Argentina
Posts: 49
Poder: 0
ale21alito Va por buen camino
Thumbs down 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 ...
Responder Con Cita
  #4  
Antiguo 11-02-2005
ale21alito ale21alito is offline
Miembro
 
Registrado: feb 2005
Ubicación: Mar del Plata . Argentina
Posts: 49
Poder: 0
ale21alito Va por buen camino
en el GRID, en cada registro de debes.db se repite continuamente el registro de haberes.db (hay 1 solo en la tabla).
Responder Con Cita
  #5  
Antiguo 12-02-2005
Tony_G Tony_G is offline
Miembro
 
Registrado: may 2003
Ubicación: Córdoba - España
Posts: 40
Poder: 0
Tony_G Va por buen camino
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.
__________________
TonyG
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 01:58:34.


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