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?

Punzo 24-04-2008 19:15:49

Estoy utilizando la de barras; utlizo un query que tiene Select Sum(VN) As VN,... From Tabla y no me deja asignar los campos no me aparece nada en el combobox del dbchart, y al ponerle select * from tabla, asi si me deja asignar los campos, tendre que hacerlo forzozamente en tiempo de ejecucion?; muchas gracias por contestar.

richy08 24-04-2008 19:34:29

Cita:

Empezado por Punzo (Mensaje 282332)
Estoy utilizando la de barras; utlizo un query que tiene Select Sum(VN) As VN,... From Tabla y no me deja asignar los campos no me aparece nada en el combobox del dbchart, y al ponerle select * from tabla, asi si me deja asignar los campos, tendre que hacerlo forzozamente en tiempo de ejecucion?; muchas gracias por contestar.

ok mira esta es la logica que sigue haces un query me imagino quel ibquery funciona parecido a lso componenetes ado. creas tu serie, doble clic sobre tu componente dbchart y en la pestaña series, vas a la ultima pestaña y ahi eliges el dataset que lo esta alimentando y n odebe de darte ningun problema te deben de aparecer todos los campops que contiene tu query nota para asignar los campos en tiempo de diseño obvio que tienes que abrir el query si no pues estara vacio:rolleyes: no sera eso l oque te esta haciendo falta hacer:confused:

Punzo 24-04-2008 19:38:31

Lo tengo abierto; y no aparece ningun campo del ibquery; y como te digo si le pongo al query Select * From tabla, asi si aparecen todos los campos, pero en cuanto le pongo la consulta ya no aparece nada en el combobox del dbchart. Que estare haciendo mal porque no me aparecen los campos?; gracias de antemano por la gran ayuda.

richy08 24-04-2008 20:12:43

mmm la verdad es muy extraño pero si n ote funciona asi lo que puedes hacer es como dices darselos en tiempo de jecucion que seria lo mismo, si n osabes como hacerlo te puedo ayudar

Punzo 24-04-2008 20:20:45

Ya lo resolvi, muchas gracias por la ayuda; hice una serie de cosas pero al ultimo ya me abre en tiempo de diseño, tuve que agregar los campos en el dbchart utilizando select * From tabla, una vez asignados cambio la sentencia del query por las sumatorias y ya esta, de hecho ya me lo abre en tiempo de diseño, esta muy raro esto; pero en fin, ya pude solucionarlo. :)

richy08 24-04-2008 20:26:02

Cita:

Empezado por Punzo (Mensaje 282364)
Ya lo resolvi, muchas gracias por la ayuda; hice una serie de cosas pero al ultimo ya me abre en tiempo de diseño, tuve que agregar los campos en el dbchart utilizando select * From tabla, una vez asignados cambio la sentencia del query por las sumatorias y ya esta, de hecho ya me lo abre en tiempo de diseño, esta muy raro esto; pero en fin, ya pude solucionarlo. :)

ok que bien que ya te funciona, y de lo raro ni me digas jeje pues me a pasado cada cosa que a veces no le encuentro explicacion logica pero pues la debe de tener, pues suerte y hasta la proxima.

HOUDEL 24-04-2008 21:09:40

Hola iga
 
yo he utilizado el DBChart con graficas de barras principalmente,

el siguiente codigo es el que yo utilizo en tiempo de ejecuion
Código Delphi [-]
 TDBChar1.Series[0].DataSource:=TQuery1;
 TDBChar1.Series[0].Active:=true; 
 TDBChar1.Series[0].XLabelsSource:='NOMEMP';
 TDBChar1.series[0].YValues.ValueSource :='SUELDO';
 TDBChar1.series[0].Marks.Style:=smsValue;//opcional: muestra el valor

saludos! alguna duda comenta por favor.

richy08 25-04-2008 17:57:24

Hola iga yo si tengo una duda pero no es respecto a los campos mi pregunta es si has intentado mover una barra que generas desde una base de datos a otra posicion y que se actualize tu base de datos con la nueva posicion, si no me explique bien hazmelo saber gracias:D

Punzo 25-04-2008 18:38:57

Sigo teniendo probelmas con el DBChart, ya me hacia bien todo, pero estuve moviendo algunas propiedades y ya no me muestra nada, tengo 4 barras con single record y cada barra es la sumatoria de un campo, pero al ponerle sum en la propiedad sql de mi ibquery no me muestra nada; ayuda por favor


La franja horaria es GMT +2. Ahora son las 06:39:59.

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