Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
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 03-05-2008
Caray Caray is offline
Miembro
 
Registrado: abr 2006
Posts: 61
Poder: 19
Caray Va por buen camino
Se me complica mucho!!!

La verdad yo para el lenguaje SQL no soy muy bueno, lo intente hacer en una sola pero la neta se me complico demasiado, es decir no me salio, asi k mejor opte por hacerla con dos. Le movi y movi a la sentencia pero simplemente no puede hacerla con una. Esa es la verdad y pues me da algo de cosa ya que aqui hay puro experto.
__________________
La inteligencia me persigue, pero yo soy más rápido que ella.
Responder Con Cita
  #2  
Antiguo 03-05-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
Bueno, expertos, expertos, lo que se dice expertos, pues no... Bueno, la mayoría si, yo no soy experto. Pero entre todos nos ayudamos un poco y espero llegar a ese nivel.

En fin. Según veo, tu primer consulta y la segunda consulta son exactamente lo mismo, solo que en la segunda haces una suma. Esa suma es la que podrías hacer en el reporte; en otras palabras, no habría necesidad de hacer la segunda consulta.

Luego en tu primer consulta, estas agrupando, pero no utilizas ninguna función de agrupación; es decir, tienes el Group By por todos los campos en el select, pero no tienes ningún Sum, Avg o Max.

Ahora, en tu código podrías ahorrarte las variables cSQL y cSQL2 y podrías agregar tu consulta directo con la función Add.
Así como lo tienes, si quisieras extraer la consulta a un archivo o un stream, toda la consulta estaría en una sola línea. En tu código la ves en varias linéas, pero realmente (al utilizar +) lo estas haciendo en una sola línea. Si utilizas directamente la función Add, la consulta estará dividida en líneas (como un TStringList) y es mucho más fácil hacer otras cosas.

Y por último, realizas la consulta en el evento BeforePrint, lo cuál puede funcionar, pero no te lo recomendaría. Sería mejor realizar la consulta antes de mandar la vista previa. Y en el evento BeforePrint, hacer ajustes menores en el reporte. Pero no es recomendable ejecutar la consulta en ese evento.

En resumen, lo que yo haría, sería lo siguiente:
Código Delphi [-]
Procedure TfrmRepNominaOperador.UnBotonOnClick(Sender as TObject);
begin
  inherited;
  with Datos.qryBuscar do begin
   If active then close;
   SQL.Clear;
   SQL.Add('select NO.n_registro, O.nombre, I.nombre_inspector,');
   SQL.Add('L.nombre_labor, M.descripcion,  NO.ano,');
   SQL.Add('NO.numero, DNO.superficie, DNO.tarifa, DNO.total_operador');
   SQL.Add('from det_nomina_operador DNO,');
   SQL.Add('join nomina_operador NO on (DNO.n_registro = NO.n_registro)');
   SQL.Add('join Operador O on O.clave_operador = DNO.clave_operador');
   SQL.Add('join labores L on L.clave_labor =  DNO.clave_labor');
   SQL.Add('join maquinas M on M.clave_sociedad = DNO.clave_sociedad AND M.clave_maquina = DNO.clave_maquina');
   SQL.Add('join inspectores I on I.clave_inspector = NO.clave_inspector');
   SQL.Add('Where NO.numero =  :Numero and  NO.ano =  :Year');
   SQL.Add('Order BY NO.n_registro');
   ParamByName('Numero').AsInteger := tryStrtoInt(frmNominaOperador.Semana.Text);
   ParamByName('Year').AsInteger := tryStrtoInt(frmNominaOperador.edzafra.Text);
   Open;
  end; //with
end;

La idea es que en la consulta traigas todos los datos que necesites, sin agrupar, sin sumar. Y ya en el reporte hacer todas las agrupaciones y/o sumatorias necesarias.
__________________

Responder Con Cita
  #3  
Antiguo 05-05-2008
Caray Caray is offline
Miembro
 
Registrado: abr 2006
Posts: 61
Poder: 19
Caray Va por buen camino
Error en Suma!!!

hola gente:
Pues quiero decirles que pude traer los datos en una sola consulta,algo mas o menos asi
Código:
SELECT Nomina.folio,det_nomina.dia,Labores.nombre_labor,Ejidos.nombre_ejido,Nomina.clave_inspector,Inspectores.nombre_inspector,semana.inicio,semana.fin,semana.mes,Nomina.numero,Nomina.ano,Det_Nomina.clave_jornal, ' +
          ' Jornales.nombre_jornal,det_nomina.clave_zona,Det_Nomina.tarifa,det_nomina.total_pagar,sum(det_nomina.total_pagar) as sueldo '+
          ' FROM Det_Nomina,Jornales,Inspectores,Nomina,labores,ejidos,semana '+
          ' WHERE Nomina.folio=Det_nomina.folio AND Det_Nomina.clave_jornal=Jornales.clave_jornal AND Nomina.Clave_inspector=Inspectores.Clave_Inspector and nomina.numero=semana.numero and det_nomina.clave_productor=''2'' AND nomina.clave_inspector=' + quotedstr(frmrep_nomina.cbinspector.KeyValue)+ ' AND nomina.numero='+ quotedstr(frmrep_nomina.edsemana.text) + ' AND nomina.ano='+ quotedstr(frmrep_nomina.edzafra.Text) +
          ' AND det_nomina.clave_labor=Labores.clave_labor And det_nomina.Clave_ejido=Ejidos.Clave_ejido '+
          ' GROUP BY Nomina.folio,det_nomina.dia,Labores.nombre_labor,Ejidos.nombre_ejido,Nomina.clave_inspector,Inspectores.nombre_inspector,semana.inicio,semana.fin,semana.mes,Nomina.numero,Nomina.ano,Det_Nomina.clave_jornal, ' +
          ' Jornales.nombre_jornal,det_nomina.clave_zona,Det_Nomina.tarifa,det_nomina.total_pagar '+
          ' Order BY nomina.folio
pero la suma me sale erronea, intente poner un qrexpr y en la opcion expression le puse Sum(qrybuscar.total_operador). Primero se lo puse en la Group Footer con la opcion ResetAfterPrint a True, pero vi que no aparecia nada asi que se lo cambie al group header pero me aparece asi:

Nombre: Sergio Sueldo:0 --Deberia ser 400
Quema importe:250
Abonada importe:150

Nombre: Sergio Sueldo:400-- deberia ser 250
Quema importe: 250

Como ven en el primer sueldo siempre me pone 0(cero) y en el segundo me pone el total del primero.En el Group Header tengo la propiedad Expression:QryBuscar.folio .En que creen que falle?

PD. intente en la consulta poner la suma:
select ...... ,sum(det_nomina.total_operador) as sueldo
from...
where...

pero tampoco jalo asi,como hacer la suma ya con los datos en una sola consulta?, lo recomendable segun he visto es con un qrexpr pero no quiere funcionar con eso, por lo dicho arriba.

sin mas me despido por el momento
__________________
La inteligencia me persigue, pero yo soy más rápido que ella.
Responder Con Cita
  #4  
Antiguo 05-05-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
Pues sí, lo recomedable es hacer las sumas con un qrexpr, colocado en el group footer. Eso sería lo correcto.

¿porque no salía nada? pues no se, no estaría bien enlazado, no estaría apuntando al campo correcto. Podrían haber sido muchas cosas.

Pero en fin, lo correcto es eso. Una consulta, un TQRExpr en un GroupFooter con su propiedad ResetAfterPRint a verdadero.
__________________

Responder Con Cita
  #5  
Antiguo 07-05-2008
Caray Caray is offline
Miembro
 
Registrado: abr 2006
Posts: 61
Poder: 19
Caray Va por buen camino
Solucionado

Señor ContraVeneno quiero agradecerle toda la ayuda que me proporcionó, ya que sin esta no hubiera sido posible encontrarle solución a un problema que me habia aquejado durante mucho tiempo. Quiero decirle que lo del Group Footer era por un mal linkeado de las bandas, todo lo demás estaba bien. Pues sin más que decir, me despido no sin antes reiterarle mis más sinceras gracias.
ATTE Sergio A.L.
PD. Cuando pueda y sepa como voy a subir mi codigo para que gente como ustedes lo vean y critiquen pero de manera sana, esto para en un futuro poder mejorarlo.
__________________
La inteligencia me persigue, pero yo soy más rápido que ella.
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
maestro-detalle en rave reporte hob Impresión 4 10-08-2006 17:30:28
Reporte Maestro Detalle Caro Impresión 1 14-06-2005 20:18:47
Reporte Maestro detalle FastReport IVAND Impresión 1 23-03-2005 13:52:31
Reporte Maestro/Detalle/Detalle de 4 Tablas jovehe Impresión 2 23-03-2005 01:25:02
reporte maestro/detalle/subdetalle dphmariano Impresión 1 24-03-2004 07:21:24


La franja horaria es GMT +2. Ahora son las 05:13:49.


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