Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-12-2012
marcial marcial is offline
Miembro
 
Registrado: may 2003
Posts: 147
Poder: 21
marcial Va por buen camino
Wink Ayuda con SQL

Hola a todos:
Trabajo con D5 y Firebird 2.1 (Componentes FIBPLUS aunque creo que con cualquier componente se podría hacer lo que necesito)
Mi problema es el siguiente:

En la pantalla de "Entrada de lineas de Albarán" tengo entre otras una Tabla Clientes y otra Lineas. Un DBGrid1 para las lineas de Albarán que voy introduciendo y un DBGrid2 que saca los articulos que se ha llevado antes ese cliente.

En el fichero de Lineas se van almacenando todas las lineas de Albarán, es decir, que p.ej. del articulo 1 hay almacenadas a lo largo del tiempo 40 lineas con su fecha, documento, cantidad, precio de venta y Cliente.

TABLA LINEAS---------------------
Descripcion Docmto Cantidad Precio Fecha Cliente
BACON AHUMADO 125 1 4,15 16.11.2012 158
BACON AHUMADO 126 7 4,18 20.11.2012 158
BACON AHUMADO 180 4 4,10 30.11.2012 158
MAGRO TERNERA 125 8 8,90 16.11.2012 158
MAGRO TERNERA 140 3 8,75 28.11.2012 158
MAGRO TERNERA 190 2 9,40 01.12.2012 160 <---- ojo, es ya otro cliente

Necesitaria que cuando teclee el código del cliente me aparecieran en el DBGrid2 una linea por cada artículo pero que sea el último introducido para ver a que precio y que cantidad se llevó la última vez, es decir, que cuando selecciones el cliente 158 me aparezca en el DBGrid2

BACON AUMADO 180 4 4,10 30.11.2012 158
MAGRO TERNERA 140 3 8,75 28.11.2012 158

y el DBGrid1 en blanco listo para la introducción de nuevas Lineas.

Estoy hecho un lio porque el DBGrid1 apunta a LINEAS, y el DBGrid2 tambien pues los dos DBGrid acceden al mismo fichero, el 1 añadiendo lineas y el 2 clasificando. Pido ayuda para ver si alguien me podría decir como seria la sentencia SQL que tendría que usar.

Espero haberme explicado y muchisimas gracias por vuestro tiempo.
Marcial
Responder Con Cita
  #2  
Antiguo 05-12-2012
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
Podrías ser más claro en tu explicación
__________________
Herr Heins Faust
Responder Con Cita
  #3  
Antiguo 06-12-2012
marcial marcial is offline
Miembro
 
Registrado: may 2003
Posts: 147
Poder: 21
marcial Va por buen camino
Tengo una tabla LINEAS que contiene multiples registros con los campos codigo,descripcion,precio,cliente y fecha de venta; y necesito saber cual es el precio del último registro de cada articulo que ha consumido un determinado cliente.

El contenido de la tabla Lineas es el siguiente:
Articulo: 1 // Descripcion: Bacon // Precio: 10,00 // Fecha 10.10.2012 // Cliente: 20
Articulo: 2 // Descripcion: Salmon // Precio: 4,00 // Fecha 12.10.2012 // Cliente: 21
Articulo: 1 // Descripcion: Bacon // Precio: 9,80 // Fecha 15.10.2012 // Cliente 20
Articulo: 2 // Descripcion: Salmon // Precio: 4,15 // Fecha 18.10.2012 // Cliente: 20

Si quiero saber lo que ha consumido el cliente 20, me deberia de aparecer en un dbgrid:

Articulo: 1 Descripcion: Bacon Precio: 9,80 Fecha: 15.10.2012 <------- Último precio del cliente 20 articulo 1
Articulo: 2 Descripcion: Salmon Precio: 4,15 Fecha: 18.10.2012 <--------Último precio del cliente 20 articulo 2

Espero haberme explicado con más claridad
Responder Con Cita
  #4  
Antiguo 06-12-2012
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
Ah en el SQL haz un "ORDER BY FECHA DESC" en conjunto con un GROUP BY Articulo... ahorita no lo puedo probar pero chécalo
__________________
Herr Heins Faust
Responder Con Cita
  #5  
Antiguo 06-12-2012
celades1 celades1 is offline
Miembro
 
Registrado: ago 2005
Posts: 116
Poder: 19
celades1 Va por buen camino
Hola

creo que seria esto

Código SQL [-]
select a.descripcio,a.codigo,max(a.fecha),
avg((select a.precio from lineas where codigo=a.codigo and cliente=:cliente 
and fecha=(select max(fecha) from lineas where codigo=a.codigo and cliente=:cliente))) 
from lineas a 
where a.cliente=:cliente
group by a.descripcio,a.codigo

Panta
Responder Con Cita
  #6  
Antiguo 06-12-2012
Gallosuarez Gallosuarez is offline
Miembro
 
Registrado: feb 2007
Posts: 92
Poder: 18
Gallosuarez Va por buen camino
Talking Posible solución ...

Marcial:

Creo que esto es lo que quieres ...
Código SQL [-]
SELECT *
FROM LINEAS
WHERE CLIENTE = ID_CLIENTE_QUE_QUIERES
ORDER BY FECHA_CLIENTE DESC
ROWS 1 TO 10

La instrucción ROWS limita el número de resultados a los diez primeros ... ¿me explico}

Atte:
Gerardo Suárez Trejo

PD. No dejes de comentar como te fue ...
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
Ayuda para la ayuda maxvera Varios 4 12-05-2007 20:13:44
Instalar Ayuda (.HLP) en la Ayuda de Delphi? MasterXP Varios 6 12-04-2006 06:57:49
Ayuda para crear ayuda... Gabriel2 Varios 2 10-06-2005 00:15:18
ayuda con strtofloat, ayuda punto flotante TURING Varios 5 30-04-2004 08:03:59
Ayuda Con Instalacion De Archivos De Ayuda Legolas Varios 1 01-12-2003 14:48:03


La franja horaria es GMT +2. Ahora son las 14:33:58.


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