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 26-09-2011
abelg abelg is offline
Miembro
 
Registrado: jul 2004
Posts: 50
Poder: 20
abelg Va por buen camino
con que servidor de base de Datos estas trabajando porque si es Sql Server, se puede hacer, un cursor u otra cosa, nose me dices asi te lo puedo ver que se puede hacer.
Responder Con Cita
  #2  
Antiguo 11-10-2011
Avatar de orioncomputer
orioncomputer orioncomputer is offline
Miembro
 
Registrado: may 2006
Ubicación: Maturin, Monagas, Venezuela
Posts: 18
Poder: 0
orioncomputer Va por buen camino
Hola abelg , bueno ante todo las gracias por interesarte en el tema , te comento que estoy trabajando sobre SQL Server 2008, estoy tratando de que este resultado me lo de en forma dinámica, te explico, necesito crear un reporte para el usuario final en Report Builder , necesito crear una vista o algo que siempre que pida el reporte este actualizado con las facturas que estén en la base de datos, no se si con cursores se pueda armar una vista y no se si esto relentisa el proceso de la base de datos cuando un usuario este pidiendo dicho reporte y el resto este usando la aplicación de manera habitual, ya que la aplicación es cliente servidor y posee varios usuarios conectados en simultaneo elaborando facturas, compras, movimientos de bancos, etc., te comento lo de si se pone lenta la consulta, ya que tengo base de datos que manejan para un mes mas de 3000 registros de factura.

Las mil Gracias por tomarte el tiempo de leer mi inquietud y las gracias nuevamente por querer colaborar conmigo para solucionar esta consulta.
Responder Con Cita
  #3  
Antiguo 12-10-2011
abelg abelg is offline
Miembro
 
Registrado: jul 2004
Posts: 50
Poder: 20
abelg Va por buen camino
Hola, bueno aqui te posteo una solución espero te ayude.

Código SQL [-]
declare @TipoFac varchar(10),
  @NumeroP varchar(20),
  @Nombre varchar(100),
  @TipoCli varchar(50),
  @NumeroReal varchar(15),
  @Monto money,
  -- Para agrupar
  @Grupo int,
  @Nombreanterior varchar(100)
  

Create table #Factura  -- Esta Tabla es una representación de tu tabla real no es necesario crearla
(
  TipoFac varchar(10),
  NumeroP varchar(20),
  Nombre varchar(100),
  TipoCli varchar(50),
  NumeroF varchar(30),
  NumeroReal varchar(15),
  Monto money,
)

Create table #FacturaTmp -- Esta tabla la creas como esta
(
  TipoFac varchar(10),
  NumeroP varchar(20),
  Nombre varchar(100),
  TipoCli varchar(50),
  NumeroReal varchar(15),
  Monto money,
  Grupo int
)

insert into #Factura values('A', 'Z4A8086521', 'COPESIRA, C.A',  'Contibuyente', '00040263', '00040263',   173.400)
insert into #Factura values('A', 'Z4A8086521', 'UNIDAD EDUCATIVA FERMIN TORO', 'Contibuyente', '00040264', '00040264',   338.000)
insert into #Factura values('A', 'Z4A8086521', 'Ventas Diarias', 'NoContibuyente', '00040265 - 00040265','00040265',   267.340)
insert into #Factura values('A', 'Z4A8086521', 'ASOC. COOP. AMBARCA R.L', 'Contibuyente', '00040266', '00040266',   601.450)
insert into #Factura values('A', 'Z4A8086521', 'CONSEJO COMUNAL CRUZ PERAZA I', 'Contibuyente', '00040267', '00040267',   69.360)
insert into #Factura values('A', 'Z4A8086521', 'Ventas Diarias', 'NoContibuyente', '00040268 - 00040268','00040268',   213.740)
insert into #Factura values('A', 'Z4A8086521', 'Ventas Diarias', 'NoContibuyente', '00040269 - 00040269','00040269',   1597.400)
insert into #Factura values('A', 'Z4A8086521', 'Ventas Diarias', 'NoContibuyente', '00040270 - 00040270','00040270',   4.880)
insert into #Factura values('A', 'Z4A8086521', 'Ventas Diarias', 'NoContibuyente', '00040271 - 00040271','00040271',   97.530)
insert into #Factura values('A', 'Z4A8086521', 'Ventas Diarias', 'NoContibuyente', '00040272 - 00040272','00040272',   24.930)

declare FaturaCur Cursor For
Select TipoFac,
         NumeroP,
         Nombre,
         TipoCli,
         NumeroReal,
         Monto
from #Factura
order by NumeroReal

open FaturaCur
fetch next from FaturaCur into @Tipofac, @NumeroP, @Nombre, @TipoCli, @NumeroReal, @Monto
set @Nombreanterior = @Nombre
set @Grupo = 1

while @@FETCH_STATUS = 0 
begin
   if (@Nombreanterior <> @Nombre)
   begin
      set @Grupo = @Grupo + 1
      set @Nombreanterior = @Nombre
   end        
   insert into #FacturaTmp values (@Tipofac, @NumeroP, @Nombre, @TipoCli, @NumeroReal, @Monto, @Grupo)
   fetch next from FaturaCur into @Tipofac, @NumeroP, @Nombre, @TipoCli, @NumeroReal, @Monto                
end

close FaturaCur
deallocate FaturaCur

Select TipoFac,
         NumeroP,
         Nombre,
         TipoCli,
         CASE When MIN(NumeroReal) <> MAX(numeroReal) 
             then  MIN(NumeroReal) +    '-' + MAX(numeroReal) 
             else MIN(NumeroReal) end NumeroFactura,
         SUM(Monto) Monto
from #FacturaTmp
Group by TipoFac,
        NumeroP,
        Nombre,
        TipoCli,
        Grupo
order by
        CASE When MIN(NumeroReal) <> MAX(numeroReal) 
           then  MIN(NumeroReal) +    '-' + MAX(numeroReal)
           else MIN(NumeroReal) end


Drop table #Factura
Drop table #Facturatmp
Mira que estoy creando dos tablas temporales una es para poder simular tu tabla real la otra la uso si para la solución.
salu2

Última edición por abelg fecha: 12-10-2011 a las 16:08:03.
Responder Con Cita
  #4  
Antiguo 13-10-2011
Avatar de orioncomputer
orioncomputer orioncomputer is offline
Miembro
 
Registrado: may 2006
Ubicación: Maturin, Monagas, Venezuela
Posts: 18
Poder: 0
orioncomputer Va por buen camino
Lightbulb

Saludos abelg.

Te estoy muy agradecido por la solucion que me planteastes, te comento que me da el resultado que quiero.

Es magnifica tu respuesta, pero, como nunca falta un pero, la solucion es perfecta, pero no se como implementar tablas temporales y cursor dentro de una vista, te explico el porque de una vista, yo estoy trabajando con un software propietario que obviamente ya esta diseñado y posee una aplicacion para generar reportes o reporteador, que se llama report builder, ya que la aplicacion esta desarrolada en delphi y le agregaron un modulo de reportes para el usuario final, o sea que se pueden hacer reportes adicionales a los que trae el programa, en este yo puedo consultar desde tablas y vistas e incluso constriur sentencias SQL como la que me planteas y de hecho me funciona, mi inquietud ahora serian dos, una no se como pasarle parametros de consulta a la tabla si tuviera que armar la consulta desde SQL en Report Builder y otra un poco la seguridad del trabajo realizado, en el sentido de que si lo hago con una vista, esta yo podria encriptarla y no seria tan comodo saber como esta diseñada, y me protegeria un poco de que se copien el reporte para otra empresa, ya que el software es comercial y somos varios los que damos el soporte a distintos clientes, y este reporte que estoy diseñando seria util para cualquier empresa que maneje este software.

Sin mas a que referir y eternamente agradecido

Saludos....
Responder Con Cita
  #5  
Antiguo 13-10-2011
abelg abelg is offline
Miembro
 
Registrado: jul 2004
Posts: 50
Poder: 20
abelg Va por buen camino
Creo lo que se puede hacer es un procedimiento almacenado, al cual ya lo puedes encriptar y llamarlo como a una vista o en otro caso una función que te retorne una tabla, en ambos casos puedes encriptarlos.

Salu2
Responder Con Cita
  #6  
Antiguo 13-10-2011
Avatar de orioncomputer
orioncomputer orioncomputer is offline
Miembro
 
Registrado: may 2006
Ubicación: Maturin, Monagas, Venezuela
Posts: 18
Poder: 0
orioncomputer Va por buen camino
Ok Nuevamente Gracias y deja entonces investigar al respecto...

Un Saludo...

Deja ver si veo algo que me oriente aca en el foro o el internet de forma general..

Muchas Gracias por tus aportes....
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Pasar Variables de Forma a Forma con delphi.net ASP ASAPLTDA .NET 5 05-07-2007 20:51:31
Como Pasar Variables de Forma a Forma con delphi.net ASP ASAPLTDA Internet 2 02-07-2007 16:26:41
suma condicionada mediante QREXpr u otra solucion ciscu Impresión 6 13-01-2004 18:41:01
Como pasar parametros de una forma hija a otra forma hija luisreg OOP 3 17-09-2003 18:18:50
Agrupar ? ramiretor Impresión 1 16-05-2003 01:51:32


La franja horaria es GMT +2. Ahora son las 07:48:51.


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