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
  #21  
Antiguo 06-02-2018
mRoman mRoman is offline
Miembro
 
Registrado: Nov 2003
Posts: 344
Poder: 15
mRoman Va por buen camino
Smile

Aqui el código desde delphi que utilizo para construir el SELECT
Código Delphi [-]
procedure TfrmOpDespacho.GroupBox4Exit(Sender: TObject);
var
  clave,i, i_difer :integer;
  wMes,wDia,wAnio:Word;
  cMes:String;
  Porcentaje:Real;
begin
   qryPlanta.Close;
   qryPlanta.Open;
   qryPlanta.FetchAll;
   qryPlanta.First;
   qryMesEmbarque.Close;
   qryMesEmbarque.Open;

   case cbxMes.ItemIndex+1 of
        1 :cMes:='a.Ene';
        2 :cMes:='a.Feb';
        3 :cMes:='a.Mar';
        4 :cMes:='a.Abr';
        5 :cMes:='a.Myo';
        6 :cMes:='a.Jun';
        7 :cMes:='a.Jul';
        8 :cMes:='a.Ago';
        9 :cMes:='a.Sep';
        10:cMes:='a.Oct';
        11:cMes:='a.Nov';
        12:cMes:='a.Dic';
   end;
   if not(cMes=' ') then
   begin
        
       IBQry.Close;
       IBQry.SQL.Clear;
       IBQry.SQL.Add('select a.anio,');
       IBQry.SQL.Add('       '+cMes+' as lts_prog_anual,');
       IBQry.SQL.Add('       (select sum(b.litros)');
       IBQry.SQL.Add('        from reporte_despacho1 b');
       IBQry.SQL.Add('        where extract(year from b.fecha_embarque)=:anio');
       IBQry.SQL.Add('          and extract(month from b.fecha_embarque)=:mes');
       IBQry.SQL.Add('          and b.producto like '''+'AS%'+''') as lts_despacho,');
       IBQry.SQL.Add('       ((select sum(c.litros)');
       IBQry.SQL.Add('           from reporte_despacho1 c');
       IBQry.SQL.Add('          where extract(year from c.fecha_embarque)=:anio');
       IBQry.SQL.Add('            and extract(month from c.fecha_embarque)=:mes');
       IBQry.SQL.Add('            and c.producto like '''+'AS%'+''' )-'+cMes+') as difer,');
       IBQry.SQL.Add('       ((select sum(d.litros)');
       IBQry.SQL.Add('           from reporte_despacho1 d');
       IBQry.SQL.Add('          where extract(year from d.fecha_embarque)=:anio');
       IBQry.SQL.Add('            and extract(month from d.fecha_embarque)=:mes');
       IBQry.SQL.Add('            and d.producto like '''+'AS%'+''' )/'+cMes+')*100 as porcentaje');
       IBQry.SQL.Add('from PROGRAMA_DISTRIBUCION_ANUAL A');
       IBQry.SQL.Add('where a.clave_clasificacion=3');
       IBQry.SQL.Add('  and a.clave_rubro=1');
       IBQry.SQL.Add('  and a.anio=:anio');
       IBQry.ParamByName('MES').AsInteger:=cbxMes.ItemIndex+1;
       IBQry.ParamByName('anio').AsString:=mskAnio.Text;
       IBQry.Open;

// Estos son los QUERYS que tuve q crear (2 componentes IBQuery) que hacen lo mismo que el SELECT q construyo mas arriba, solo que aca por
// separado.
       qryProgAnual.Close;
       qryProgAnual.ParamByName('anio').AsString:=mskAnio.Text;
       qryProgAnual.Open;

       qryLtsDespacho.Close;
       qryLtsDespacho.ParamByName('anio').AsString:=mskAnio.Text;
       qryLtsDespacho.ParamByName('mes').AsInteger:=cbxMes.ItemIndex+1;
       qryLtsDespacho.Open;
// Hasta aqui terminan los 2 querys

//La siguiente linea, realiza una operación aritmética para encontrar la DIFERENCIA de ambos datos.
       i_difer:=qryLtsDespacho.fieldByName('lts_despacho').AsInteger-qryProgAnual.fieldBYName('lts_prog_anual').AsInteger;

       mskDifer.Text:=IntToStr(i_difer);
//       if qryDifer.FieldByName('DIFER').AsInteger<0 then
       if i_difer<0 then
       begin
           Label3.Caption:='ABAJO CON:';
           img1.Picture:=imgAbajo.Picture;
       end Else
       begin
           Label3.Caption:='ARRIBA CON:';
           img1.Picture:=imgArriba.Picture;
       end;
       Porcentaje:=(qryLtsDespacho.fieldByName('lts_despacho').AsFloat/
                    qryProgAnual.fieldByName('lts_prog_anual').AsFloat)*100.00;
//       Label4.Caption:=qryElaboro.fieldbyname('difer').AsString+' Litros';
//       mskPorcentaje.Text:=FloatToStr(qryDifer.fieldbyname('porcentaje').AsFloat);
//       mskPorcentaje.Text:=FloatToStr(Porcentaje);

       mskPorcentaje.Text:=Format('%n',[Porcentaje]);
       DecodeDate(Date,wAnio,wMes,wDia);
   end Else
   begin
       // Todavia no agrego código aqui.
   end;
end;
__________________
Miguel Román
Responder Con Cita
  #22  
Antiguo 06-02-2018
mRoman mRoman is offline
Miembro
 
Registrado: Nov 2003
Posts: 344
Poder: 15
mRoman Va por buen camino
Algo hice mal al momento de publicar este POST con el código delphi donde construyo el SELECT, Casimiro podrías agegarlo al hilo donde estamos con este tema....porque no se ve en este hilo lo q publique anteriormente. Algo pasó q no se publicó alla.
__________________
Miguel Román

Última edición por mRoman fecha: 06-02-2018 a las 21:29:20.
Responder Con Cita
  #23  
Antiguo 06-02-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.316
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por mRoman Ver Mensaje
Algo hice mal al momento de publicar este POST con el código delphi donde construyo el SELECT, Casimiro podrías agegarlo al hilo donde estamos con este tema....porque no se ve en este hilo lo q publique anteriormente. Algo pasó q no se publicó alla.
¿A qué hilo te refieres? ¿Hay otro?
Responder Con Cita
  #24  
Antiguo 06-02-2018
mRoman mRoman is offline
Miembro
 
Registrado: Nov 2003
Posts: 344
Poder: 15
mRoman Va por buen camino
Unhappy

Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿A qué hilo te refieres? ¿Hay otro?
Bueno no sé....lo q pasa es que has de cuente que presione el boton que dice "Respuesta" y se agrego mi mensahe....pero aparece primero, como si apenas estoy empezando el hilo....estoy confudido.

Lo anterior es para que los demas foreros pues, no sé pierdan la continuidad del hilo.....O TODO ESTA BIEN?.

No veo los primeros mensajes....solo los 2 últimos que mandé (#21 y 22), el que me contestas ("A que hilo..."), y este que estoy contestando.
__________________
Miguel Román
Responder Con Cita
  #25  
Antiguo 07-02-2018
mRoman mRoman is offline
Miembro
 
Registrado: Nov 2003
Posts: 344
Poder: 15
mRoman Va por buen camino
Sigo investigando...
__________________
Miguel Román
Responder Con Cita
  #26  
Antiguo 07-02-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.316
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por mRoman Ver Mensaje
Bueno no sé....lo q pasa es que has de cuente que presione el boton que dice "Respuesta" y se agrego mi mensahe....pero aparece primero, como si apenas estoy empezando el hilo....estoy confudido.
Lo anterior es para que los demas foreros pues, no sé pierdan la continuidad del hilo.....O TODO ESTA BIEN?.
No veo los primeros mensajes....solo los 2 últimos que mandé (#21 y 22), el que me contestas ("A que hilo..."), y este que estoy contestando.
La verdad es que no sé a qué te refieres, a mí me salen todos los mensajes desde el primero.
Responder Con Cita
  #27  
Antiguo 07-02-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.316
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bueno, he creado esas tablas, he copiado ese select, lo he ejecutado y no hay ningún error.
¿En qué línea te sale el error?
¿Has seguido el programa con el depurador paso a paso?
¿Has visto el contenido del query antes de ejecutarlo?
...
Responder Con Cita
  #28  
Antiguo 07-02-2018
mRoman mRoman is offline
Miembro
 
Registrado: Nov 2003
Posts: 344
Poder: 15
mRoman Va por buen camino
jajajaja....disculpa pero es que es la falta de practica....el hilo tiene como q 2 páginas. Ya...que pena.

Nunca habia posteado tantos mensajes....jajajaja....para que se hicieran 2 paginas. Bueno ya se q paso.
__________________
Miguel Román
Responder Con Cita
  #29  
Antiguo 07-02-2018
mRoman mRoman is offline
Miembro
 
Registrado: Nov 2003
Posts: 344
Poder: 15
mRoman Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Bueno, he creado esas tablas, he copiado ese select, lo he ejecutado y no hay ningún error.
¿En qué línea te sale el error?
¿Has seguido el programa con el depurador paso a paso?
¿Has visto el contenido del query antes de ejecutarlo?
...
Cita:
¿En qué línea te sale el error?
En realidad no sé en que linea, ya que todo el "cuerpo" del SQL.text se ejectuta usando el componente y al momento de llegar a la instruccion IBQry.Open, marca el error de "Invalid...(etc).", asi que lo que hice fue, quitar los select anidados y hacerlos por separado, como lo hice en el código delphi.

Seguro estoy q la estructura del query esta correcta, porque estaba funcionando bien, pero ahora empezó a marcar ese error.

Firebird tendrá algun tipo de archivo donde valide las estructuras de los select?, de ser asi, ¿se habrá "dañado"?. Investigando di con la descripción del error, y habla sobre que no es una estructura valida de SQL, evidentemente en algun lado valido esto....estará "embebido" en el ejecutable del Firebird???.

En algun otro foro, lei que los parametros eran el problema...bueno, de momento el problema lo resolvi, para este ultimo caso (Select anidados), separando cada uno de los select en diferentes componentes IBQuery. Pero la verdad estoy inquieto ya que talvez empieze a dar problemas y tendria q cambiar los select's....

Cita:
¿Has seguido el programa con el depurador paso a paso?
Has visto el contenido del query antes de ejecutarlo
Dentro de delphi si, incluso agregue una linea para ver, usando el Showmessage, el contenido de "sql.text" y todo normal...y pasando a la siguiente linea (IbQuery.open), marcó error....algo realmente intrigante.
__________________
Miguel Román

Última edición por mRoman fecha: 07-02-2018 a las 17:39:11.
Responder Con Cita
  #30  
Antiguo 07-02-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.316
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por mRoman Ver Mensaje
Dentro de delphi si, incluso agregue una linea para ver, usando el Showmessage, el contenido de "sql.text" y todo normal...y pasando a la siguiente linea (IbQuery.open), marcó error....algo realmente intrigante.

¿Seguro al 100%?
Responder Con Cita
  #31  
Antiguo 12-02-2018
mRoman mRoman is offline
Miembro
 
Registrado: Nov 2003
Posts: 344
Poder: 15
mRoman Va por buen camino
Sí por supesto...seguro al 100%

Pero deja lo hago de nuevo....talvez se me haya pasado algo que en ese momento no pude ver, por lo "fastidiado" que estaba con la busqueda del error....lo hago y te comento (les comento)
__________________
Miguel Román
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
Incorrect values within SQLDA structure fedelinardi SQL 5 01-02-2018 03:52:07
TMemoField y error SQLDA brandolin Firebird e Interbase 0 16-02-2009 18:55:03
ods (on disk structure) arrayman Firebird e Interbase 1 25-11-2007 23:30:48
insert into tabla values (select *... ¿? jorgesl SQL 15 11-04-2006 21:29:08
Problemas con un Grid ( integer values ) aragorneuf Varios 6 28-04-2004 00:18:20


La franja horaria es GMT +2. Ahora son las 05:40:22.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi