Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Agregar campo a un DBChart (https://www.clubdelphi.com/foros/showthread.php?t=15239)

senpiterno 15-10-2004 08:02:47

Agregar campo a un DBChart
 
Hola amigos

Tengo un DBChart al que le asigno una consulta que tengo hecha en access, el problema es que uno de los campos que me devuelve la consulta el DBChart no lo reconoce. La consulta devuelve 2 campos uno de tipo texto y un valor, el valor sera el que se graficara y el campo de tipo texto sera el que ira en el eje X asociado al valor, pero como dije antes cuando intento asignar los valores de los campos a la serie creada en el DBChart, esta solo me muestra el campo de tipo numerico y no el de tipo texto, ni siquiera reconoce el campo para colocarlo como XlabelsSource. Tambien he intentado asignarle el datasource y los campos en tiempo de ejecucion, pero como resultado obtengo solo un registro graficado, habiendo varios registros generados por la consulta. Ejem:

Código Delphi [-]
Rendimiento.Series[0].DataSource:=DataModule.DataRendimiento;
Rendimiento.Series[0].YValues.ValueSource := 'PorcentajeAvanceEmpresa';
Rendimiento.Series[0]. XLabelsSource:='NombreEmpresa';
Rendimiento.Repaint;

Saludos.

iga 12-12-2007 11:45:11

DBChart en tiempo de ejecucion
 
Hola, estoy intentando utilizar un DBChart con un TDataSource y TOraQuery pero necesito rellenar en tiempo de ejecución. Es decir, el DataSource y el OraQuery son definidos en ejecución:

with OraQuery2 do
try
Close;
SQL.Text := 'SELECT * FROM LINEA_PEDIDO';
Open;
DataSource2.DataSet := OraQuery2;
DBGrid2.DataSource := DataSource2;

finally;
ShowMessage('ok lineas de pedido!');
end;

Todo ello me funciona, es decir veo los datos en el DBGrid. Pero ahora como defino las propiedades del DBChart?

Por ejemplo el título ya lo he conseguido--> DBChart2.Title.Text.CommaText:='Lineas de pedidos';
Pero ahora necesito definir:
-las series:
-definir el tipo de serie:
-definir que columna va a ir en el eje x:
-definir que columna va a ir en el eje y:
-definir que va a ir en el label:

¿Alguien me puede ayudar diciendome cual es el códido?
¿Conoceis algún tutorial o algo parecido para DBChart? He intentado buscar y a su vez, he estado leyendo la ayuda de delphi, pero la verdad que no me ha servido demasiado.

Muchar gracias.

Lepe 12-12-2007 14:36:32

el TDBChart tiene un asistente (botón derecho sobre el componente).

Entiendo que quieres hacerlo en tiempo de ejecución, asignando dinámicamente sus propiedades, pero el asistente te dará idea de las propiedades que debes modificar y como se usan.

Quizás solo necesites configurarlo en tiempo de diseño. Nu sé ;).

Saludos

iga 13-12-2007 08:53:03

Gracias, pero no encuentro el asistente!
 
Gracias por responder, pienso que me será muy útil tu respuesta.

Pero, no encuentro el asistente, ago click con el boton derecho sobre el DBChart, pero no encuentro ningún asistente. Yo utilizo la versión Delphi7.

¡Gracias!

Lepe 13-12-2007 11:47:54

Botón derecho "Edit Chart", verás Dos pestañas Chart y Series, Dentro de Chart tienes otra Subpestaña "Series" añade una serie.

Ahora volvemos a la pestaña Principal Series (la de arriba del todo), vas a la subpestaña DataSource, en el Combobox de esta pestaña eliges "Dataset" y aparece abajo los detalles, En el combobox "Dataset" eliges el tuyo.

Todo esto traducido a código delphi, para hacerlo en tiempo de ejecución sería:
Código Delphi [-]
var una : THorizBarSeries;
begin
 una := THorizBarSeries.Create(dbchart1); // creo una serie de barras horizontales.
  dbchart1.AddSeries(una); // la añado al DBChart
  dbchart1.Series[0].Datasource := Datasource1; // asigno su datasource.

Más o menos esta es la forma, ahora queda continuar. Yo no lo he usado nunca.

Saludos

iga 14-12-2007 09:05:31

¿Hay que activar algo para que los datos aparezcan en la dbChart?
 
He hecho lo indicado y parece que funciona (no da ningún error), lo único que no me aparecen los datos en la gráfica ( compruebo que el DataSource tiene datos!)
¿Sabes si después de lo dicho hay que activar algo para que los datos aparezcan en la dbChart? ej. _______.active o _____.show o algo parecido?

Lepe 14-12-2007 10:13:30

Yo he llegado nada más que a añadir el datasource, en tiempo de diseño, cuando haces eso mismo, te aparece un par de combos donde tienes que definir los datos del eje XY y ejes ZY (creo recordar), faltaría eso para ver los datos en pantalla.

No lo puse en el ejemplo porque creo que hay 2 formas de hacerlo:
- Una definir los valores de los ejes uno a uno
- Definir una columna de la tabla como eje XY y otra como el otro eje.

Ahora no tengo tiempo, lo siento. En cuanto pueda lo miro.

Saludos

iga 14-12-2007 10:34:01

¡ya lo intentaré!
 
ok, esta bien.
¡Ya lo intentaré!

¡Muchas gracias de antemano!

Lepe 14-12-2007 11:32:35

vale, ahora si salen los datos, pero te aviso, yo no sé que representa jajaja.

Código Delphi [-]
var una:ThorizBarSeries;
begin
  una := THorizBarSeries.Create(dbchart1);
dbchart1.AddSeries(una);


// son campos de la base de datos DBDEMOS de ejemplos.

una.Datasource := tbl1; // dbdemos, tabla Customer.db

una.XLabels.ValueSource := 'CustNo';
una.YValues.ValueSource := 'invoiceDate';
una.YValues.DAtetime := true; // invoiceDate es una fecha, hay que decirselo al dbchart. 
// no sé si es necesario, pero por si acaso, lo añado.
tbl1.Open; // y listo, se ven los gráficos

Saludos

iga 17-12-2007 11:04:15

Hola Lepe,¡ya consigo visualizar los datos! Pero tengo un pequeño problema, haber si me entiendes:

La tabla que intento visualizar en el DBChart consta de 8 registros y 2 columnas. El DBChart cargo directamente del DataSource, pero en vez de aparecer en el gráfico todos los datos (columnas) a la vez , me aparece uno a uno. Es decir, en la gráfica solamente me aparece UNA columna (correspondiente al primer registro).

A su vez, los datos de la tabla los visualizo en un DBGrid (los 8 registros), y es ahí cuando clico en el segundo registro y de ese modo me aparecen los datos correspondientes a ese registro en la gráfica. Es decir, que debo de clicar en el registro deseado para que me visualize en el gráfico. Porque solo visualiza al mismo tiempo los datos correspondientes a un registro.

Yo necesito que me aparezcan todos los registros (8 registros-8 columnas en la gráfica).

Gracias.

iga 19-12-2007 07:50:32

Hola, no se si se ha entendido mi problema, pero he intentado en diferentes forms y siempre me pasa lo mismo. Yo necesito que me aparezcan todos los datos en la gráfica, y no solamente las de un registro. Yo quiero una columna en el gráfico por cada registro de la tabla, y no solamente una columna.

No encuentro respuesta!

Lepe 20-12-2007 13:39:35

He estado fuera unos días, por eso no he contestado.

Me pongo a mirarlo, como te dije, nunca usé el dbchart, veré si consigo lo que quieres.

Saludos

iga 21-12-2007 11:21:37

ok, te lo agradezco mucho!

Gracias.

Lepe 21-12-2007 14:20:08

1 Archivos Adjunto(s)
Te aconsejo te olvides de momento el hacerlo en tiempo de ejecución, es más fácil hacerlo en tiempo de diseño.

Acabo de ver lo que dices y no lo entiendo. Yo he puesto un DBGrid, para ver los registros y asigno los valores del eje "X" y del "Bar" (en tiempo de diseño, pestaña Series -> Datasource).

Uso la tabla employee de las demos de delphi (que tú también la debes tener):
Al eje X he puesto el EmpNo (nº de empleado)
Al eje Y le he asignado el campo Salary.


al abrir la tabla, veo cada empleado en el eje X y en el eje Y veo su salario. Veo todos los registros en el DBChart.

Una cosa, si añades una serie en tiempo de diseño, y después en ejecución creas otra, verás los datos mezclados. Asegúrate de hacerlo solo en diseño o solo en ejecución

Adjunto el proyecto, solo con ejecutarlo debe funcionar.

Si ahora en tiempo de diseño, eliminas la serie que existe, quitas los comentarios a las líneas de código y ejecutas, hará lo mismo pero en tiempo de ejecución.

Saludos

iga 26-12-2007 10:24:54

Te agradezco que me lo hayas respondido pero obligatoriamente tengo que elegir el datasource en tiempo de ejecución. Esto ya lo he consegido,se visualizan los datos adecuados pero solamente me aparece una columna en la gráfica (referente al PRIMER registro de la tabla) y yo quiero que me aparezcan todas las columnas (o sea los datos de todos los registros).

¿Me he explicau mejor?

Lepe 27-12-2007 13:45:45

Si, te has explicado, pero si has visto mi ejemplo, se obtienen todas las barras (una por cada registro).

¿estas filtrando la tabla en algún momento?
¿has intentado usar una consulta (TQuery) independiente para el TDBChart?

Te puedo dar pistas como esas, pero realmente no sé por qué te muestra una sola barra.

Saludos

iga 07-01-2008 08:15:15

No se lo que hago mal, pero no consigo visualizar todas las barras a la vez!

Muchas gracias, ¡seguiré intentándolo!

iga

richy08 14-03-2008 17:41:58

Hola iga me gustaria saber si ya ressolviste tu problema yo he usado el tdbchart y me funciona de cien de no haberlo hecho dejame saberlo para echarte la mano

Punzo 24-04-2008 19:04:48

Ayuda con TDBChart
 
Yo tengo mas o menos el mismo problema; tengo un ibquery y quiero asignar los campos a las series; selecciono en el dbchart datasorce, single record, asigno el datasource pero no me aparecen los campos, los campos ya estan en el dataset pero no aparecen en el dbchart; en el ibquery tengo unas sumatorias. Ayuda por favor

richy08 24-04-2008 19:11:50

ok primeramnete que tip ode grafica es la que estas usando la verdad yo no he usado mucho ese componente pero lo hice que funcionara de cien con una grafica de gannt? es esa el tipo de grafica que usas?


La franja horaria es GMT +2. Ahora son las 11:58:25.

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