Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-08-2013
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
¿como hacer query que muestre factura y detalle?

hola.

tengo un problema con MSSQL Server 2005 express win 64
Estoy usando para hacer las querys el SQL Server Management Studio que viene con SQL Server 2005 y el

MS SQL Maestro
www.sqlmaestro.com/products/mssql/maestro

Tengo una tabla con los encabezados de la factura es decir.
datos de emisor receptor, folio , fecha ,
y otra tabla con el detalle de la factura.
que son los conceptos.
cantidad precio nombre producto costo total.

se puede hacer una query que me de una lista de las facturas y enseguida el detalle y subdetalle
de la siguiente manera.


FACTURA 001 RFC EMISOR RFC RECEPTOR
1 10.00 jabon en polvo 10.00
1 10.00 jabon en polvo 10.00
1 10.00 jabon en polvo 10.00
1 10.00 jabon en polvo 10.00
1 10.00 jabon en polvo 10.00
FACTURA 002 RFC EMISOR RFC RECEPTOR
1 10.00 jabon en polvo 10.00
1 10.00 jabon en polvo 10.00
10 10.00 Aceite 10.00
FACTURA 003 RFC EMISOR RFC RECEPTOR
1 10.00 jabon en polvo 10.00
1 10.00 jabon en polvo 10.00
1 10.00 jabon en polvo 10.00
1 10.00 jabon en polvo 10.00
1 10.00 jabon en polvo 10.00


Esta informacion siempre la he obtenido con un reporteador como fastreport.
o con el uso de una query que jala las facturas y un subquery que obtiene el detalle enlazado a la factura con una clave.
segun el id de la factura

Código Delphi [-]
  Query.Open  "selecto * from facturas."
   for i to query -1 do
begin
        IDFactura = Query.ParamByNAME("id");
      query.Open" select * from detallefactura where FacturaID = " IDFactura.
end

Gracias.
Responder Con Cita
  #2  
Antiguo 18-08-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.098
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Tendrás que hacerlo con un Stored Procedure en la base de datos, o bien, crear en delphi un bucle para los encabezados y dentro recorrer las líneas de cada uno de ellos.
Responder Con Cita
  #3  
Antiguo 19-08-2013
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
No entiendo
dices que esta informacion la sacas con un query en el fast report
y pq no la puedes sacar ahora?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #4  
Antiguo 19-08-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.098
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Se supone que quiere hacerlo él, ya que el fastreport, al igual que todos los reporteadores, hacen la burrada de join entre todas las tablas y luego filtran para crear los grupos que se le indique, en este caso, cabecera y líneas.
O sea, con el FR se "dibujan" los datasets y se unen mediante líneas los campos que relacionan las tablas y luego él, internamente, crea algo así:
Código SQL [-]
select cab.* from cabeceras cab join lineas lin on lin.codigocabecera=cab.codigo
Por lo que se trae todo en una línea:
Cita:
cabecera1-linea1
cabecera1-linea2
cabecera1-linea3
cabecera2-linea1
cabecera2-linea2
cabecera3-linea1
cabecera3-linea2
cabecera3-linea3
cabecera3-linea4
...
Totalmente ineficiente, pero es eso lo que hacen.
Responder Con Cita
  #5  
Antiguo 19-08-2013
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Se supone que quiere hacerlo él, ya que el fastreport, al igual que todos los reporteadores, hacen la burrada de join entre todas las tablas y luego filtran para crear los grupos que se le indique, en este caso, cabecera y líneas.
O sea, con el FR se "dibujan" los datasets y se unen mediante líneas los campos que relacionan las tablas y luego él, internamente, crea algo así:
Código SQL [-]select cab.* from cabeceras cab join lineas lin on lin.codigocabecera=cab.codigo

Por lo que se trae todo en una línea:

Totalmente ineficiente, pero es eso lo que hacen.

Pero Casimiro, no hay otra forma, con un query definitivamente los datos saldran como tu dices
otra forma seria q pueda crear un ClientDataSet, con los campos q crea conveniente y armalos como el quiere
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #6  
Antiguo 21-08-2013
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
Gracias

Casimiro Notevi
oscarac

Voy a revisar como hacer el stored procedure
con sql server y firebird
creo que lo voy a necesitar en unos dias.

termine haciendolo con el mismo metodo

Código Delphi [-]
 Query.Open  "selecto * from facturas."
   for i to query -1 do
begin
        IDFactura = Query.ParamByNAME("id");
      query.Open" select * from detallefactura where FacturaID = " IDFactura.
end

con la query y los resultados genere unos archivos csv,
y luego procesarlos con excel.

pense que con un query me podia aligerar el procesamiento.
y como el

MS SQL Maestro
www.sqlmaestro.com/products/mssql/maestro

Tiene la opcion de que una query la puedes exportar en csv o excel
de ahi mi interes en que se mostara los resultados en esa orden.
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
como hacer que un DBLookupComboBox muestre un historico de nombres seleccionados? mematanlimon OOP 4 28-01-2010 18:00:35
DBGrid como detalle de Factura. epenor Conexión con bases de datos 23 29-09-2008 20:38:42
Como registar una cabecera y el detalle de una factura, en una sola transaccion? sarroyab MySQL 2 02-08-2007 20:14:24
Como hacer referencia a un query dentro de otro query? JuanBCT SQL 2 05-09-2006 18:35:25
Factura -> Detalle nicolasdom Varios 1 17-11-2004 15:39:57


La franja horaria es GMT +2. Ahora son las 18:16:02.


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