Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

SELECT CON CAMPOS ALIAS

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: SELECT CON CAMPOS ALIAS Responder citando

Hola a Todos:
Tengo el siguiente problema estoy formando en forma dinamica trayendo x ejemplo 3 o 6 meses segun sea la consulta y por lo tanto tengo un campo que es el total este es una alias, pero cuando le quiero poner el valor de la suma de los 3 o 6 meses me dice que el campo no esta declarado.

select codigo, Descripcion, enero, febrero, marzo cast(0 as decimal) as Total from Ventas where marca = 'CASTROL'
estoy utilizando AdoQuery con base sqlServer2000

Nota: no puedo hacer un sum de los meses x que las columnas las creo virtualmente ya que no se cuantos va a seleccionar el usuario.

Cuando lo utilizaba con ODBC no hay problema x que al query le puedo poner el componente updateSQL al query, pero con ado no.
Espero me haya explicado,

Saludos.
Pako.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Yahoo Messenger MSN Messenger
Mensaje    Asunto: Re: SELECT CON CAMPOS ALIAS Responder citando

francisco rocha escribió:
select codigo, Descripcion, enero, febrero, marzo cast(0 as decimal) as Total from Ventas where marca = 'CASTROL'

No he usado nunca componentes ADO, pero viendo sus propiedades en la ayuda veo que son similares a un TDataSet (de hecho comparten varias).

No explicas si el usuario selecciona los meses a consultar o si son datos "fijos"; quiero decir: si piden tres meses ¿SIEMPRE son enero febrero y marzo? Si el caso es este es fácil:
Código:
SELECT Codigo, Descripcion, Enero + Febrero + Maro AS Total FROM Ventas WHERE Marca = 'CASTROL'

Si los meses a consultar no son fijos, entonces tendrás que montar código para decidir los que quieres. Si siempre son 3 ó 6 meses podrías poner, por ejemplo, un TListBox con los doce meses, un TRadioGroup con los dos valores posibles (3 ó 6) y un TButton para ejecutar la consulta; podría quedar algo así:
Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     AnsiString cAux;
     int nCuantos;
     TDateTime dFecha;

     if (RadioGroup1->ItemIndex == 0)
          nCuantos = 3;
     else
          nCuantos = 6;

     cAux = "";
     dFecha = EncodeDate(2000, ComboBox1->ItemIndex + 1, 1);
     for (int nMes = 0; nMes <nCuantos; nMes ++)
          cAux = cAux + IncMonth(dFecha, nMes).FormatString("mmmm") + " + ";

     cAux = cAux.SubString(1, cAux.LastDelimiter("+") - 1);
     Query1->SQL->Text = "SELECT Codigo, Descripcion, " + cAux + " AS Total FROM Ventas WHERE Marca = 'CASTROL'";
}
//---------------------------------------------------------------------------

Siempre, claro está, suponiendo que las columnas de la tabla se llaman exactamente igual que los meses del año.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.