 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
francisco rocha Ens

Registrado: 21 May 2008Mensajes: 26
|
Publicado: Vie 21 Ago, 2009 5:54 pm Asunto: SELECT CON CAMPOS ALIAS |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Vie 18 Sep, 2009 4:34 pm Asunto: Re: SELECT CON CAMPOS ALIAS |
|
|
| 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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|