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 

Ayuda con TChart o DBChart

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Ayuda con TChart o DBChart Responder citando

Buenos días, tengo una duda, estoy intentando hacer unas gráficas con unos resultados de una consulta que hago sobre una tabla de Access. La gráfica puede tener diferentes valores en los ejes dependiendo de los parámetros de la consulta que elija el usuario. La conexión a la BD la realizo de forma dinámica, por lo que no puedo asignar un datasource a las series de en tiempo de diseño. Quiero hacerlo en tiempo de ejecución, sé cómo pasarle los valores leídos de la BD pero no sé cómo asignar valores a los ejes. A ver si consigo explicarme mejor, los valores que obtengo (de momento) son una cantidad por un año.

Código:

 Personas    Año
 1589        1996
 3451        1997
 5581        1998
 2000        1999


La idea es que en la gráfica se muestren en el eje X los años y los puntos de la gráfica sean las cantidades correspondientes, pero no sé como pasarle los años al eje X

Lo que hago para meter los datos de las cantidades en una serie es:

Código:

    int i = 0;
    int datos = 0;
    while (!Data->ADOQuery8->Eof)
    {
        Cantidad[i] = Data->ADOQuery8->FieldByName("Cantidad")->AsFloat;
        i++;
        datos++;
        Data->ADOQuery8->Next();
    }

    DBChart1->AddSeries(&TBarSeries(this));
    DBChart1->Series[0]->Active = true;
    for (i=0; i < datos; i++)
        DBChart1->Series[0]->Add(Cantidad[i],"",clBlue);




Y veo que tanto DBChart como TChart tienen unas propiedades llamadas
RightAxis y LeftAxis, y supongo que debe ser ahí donde debo introducir los años, pero no sé como hacerlo. Alguien puede ayudarme??, la verdad es que aunque no quede bien decirlo es urgente, mañana tengo que haberlo conseguido así que agradecería cualquier tipo de información o ayuda. He consultado el manual que hay en la página de grupo albor pero no he encontrado como hacer esto en tiempo de ejecución.

Muchas gracias por vuestra colaboración.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Vale, como siempre la respuesta a mi pregunta no era tan complicada. Simplemente tenía que leer los años ( en este caso he leído los paises) al mismo tiempo que las cantidades correspondientes, y luego lo paso como:

Código:

   while (!Data->ADOQuery8->Eof)
    {
        Cantidad[i] = Data->ADOQuery8->FieldByName("Cantidad")->AsFloat;
        Paises[i] = Data->ADOQuery8->FieldByName("Pais")->AsString;
        datos++;
        Data->ADOQuery8->Next();
    }

    DBChart1->Title->Text->Add("Titulo de la grafica");
    DBChart1->Series[0]->Active = true;

    for (i=0; i < datos; i++)
        DBChart1->Series[0]->Add(Cantidad[i],Paises[i]);


Como podeis ver, mi pregunta anterior se refería a poner años en el eje X, pero luego me pidieron que pusiera los paises, aunque se hace de la misma forma. También en el código de la pregunta anterior puse :

Código:

DBChart1->AddSeries(&TBarSeries(this));


Bueno, pues esto no hace falta a no ser que quiera añadir más series, ya que por defecto el componente TDBChart tiene una serie (al igual que sucede en excel).

Espero que haya quedado un poco más claro, se hace lo que se puede.

Un saludo.
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.