Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   cxGrid multinivel (https://www.clubdelphi.com/foros/showthread.php?t=73801)

nextor 17-05-2011 21:50:48

cxGrid multinivel
 
buen dia amigos del foro

pues aqui molestando con preguntas, el tema es este: estoy utilizando la suite devexpress 5.2, especificamente el cxGrid y necesito hacer por ejemplo un grid con varios niveles algo como tener una tabla de paises, una de estados y una de zonas.

para esto he creado los tres datasets(ttable), tres datasources, un cxgrid con tres niveles y sus respectivas views, he linkeado cada view del cxgrid a su respectivo datasource. hasta aqui todo bien, al compilar aparencen todos los paises, pero al expander un pais para que muestre todos sus estados, si los muestra, el problema se da que cuando expando otro pais, no se muestra nada o se muestra parcialmente.

alguien tiene idea de que es lo que pasa, o mejor aun alguien tendra un ejemplillo con por lo menos dos niveles?

Agradesco su ayuda y el tiempo que utilizaron para leer esto
pd: y por si acaso estoy utilizando delphi 7 y el bdexpress

Neftali [Germán.Estévez] 18-05-2011 09:54:06

Lo que no entiendo es porqué utilizar tres DataSources.

¿Has probado ha generar una consulta con todos los datos (relaionando las tablas con JOIN)?
Un vez generada toda la consulta, puedes generar los grupos directamente sobre el Grid.

Tal vez no te estoy entendiendo... :confused:

nextor 18-05-2011 15:18:27

Gracias por responder, tengo 3 DataSources por que el cxGrid tiene la propiedad dataSource, entonces en cada nivel he colocado el DataSource correspondiente adicional a esto posee las propiedades DetailKeyFieldName,keyFieldName y MasterKeyFieldName en las cuales se supone se puede hacer el join, y funciona pero solo al expandir un nivel, es decir se muestran todos los paises y puedo expandir cualquiera de ellos, por ejemplo si expando españa se muestran todos sus estados pero si expando USA ya no se muestra nada, no se si sera mejor que suba a algun host el exe y la fuente para que sea mas grafico?

Gracias por tu interes y tu respuesta

nextor 18-05-2011 21:03:14

Hola de nuevo, pues aqui pongo el link de la fuente en delphi 7.

<a href="http://www.mediafire.com/?ysr2g7p2797dacx
">http://www.mediafire.com/?ysr2g7p2797dacx</a>

explico como esta distribuido el directorio

1.-paises.sql contiene la creacion de las tablas y la inserccion
datos (MSSQL Server)

2.-Unit1.pas codigo fuente del proyecto

3.-Project1.dpr el proyecto

4.-Unit1.dfm la definicion del form

5.-configuracion.ini archivo de configuracion para la
conexion del exe a MSSQL Server

6-1.JPG, es una imagen en la que se puede ver como se muestra
el grid al abrir la ventana

7-2.JPG, aqui se puede ver cuando se expande un pais

8-3.JPG y 4.JPG, se puede ver el problema en cuestion

Espero que me puedan ayudar, gracias y buen dia

Al González 18-05-2011 22:05:53

Hola Nextor.

Hay algo importante a considerar en esto de las "vistas cx" (rejillas incrustadas en el componente TcxGrid):

Cuando las vistas son acomodadas en relación maestro-detalle, es importante que los conjuntos de datos que harán de "detalles" estén ordenados por el campo maestro. Por ejemplo, si la propiedad IndexFieldNames del conjunto de datos de estados (provincias / departamentos / comunidades autónomas, el término varía según el país) tiene un valor de 'Nombre' (para que se muestren ordenados alfabéticamente al expandir un país), es necesario que el valor de esa propiedad esté precedido por el nombre del campo usado para establecer la relación. Por ejemplo: 'IDPais;Nombre' (ordenado por país y nombre de estado).

El algoritmo de cxGrid para vistas detalle trabaja de tal forma que cuando ya no encuentra registros que correspondan a un registro maestro, da por hecho que no hay más y continúa con el siguiente registro maestro. Esa puede ser la razón por la cual no se muestran correctamente las filas detalles.

Realiza los cambios que correspondan en el orden de los registros y nos comentas qué tal resultó. :)

Saludos.

Al González.

nextor 18-05-2011 23:41:52

Excelente :) Gracias por tu respuesta Al Gonzalez. Efectivamente esa propiedad (IndexFieldNames) era la que estaba afectando. la verdad nunca me ubiera imaginado que era es propiedad.
Quisiera hacerte una ultima preguna ¿Como sabes eso?, es decir hubiera pasado años peleando con ese componente y nunca lo hubiera hecho funcionar

Gracias Hombre, que tengas un buen dia :):):):)

Al González 19-05-2011 00:05:20

Es grato saber que te funcionó mi consejo. :)

Cita:

Empezado por nextor (Mensaje 400557)
Gracias por tu respuesta Al Gonzalez.

Daré la mitad de esas gracias a Neftalí, pues él también tuvo la misma intención de ayudarte. ;)

Cita:

Empezado por nextor (Mensaje 400557)
¿Como sabes eso?

Lo dice la ayuda de Developer Express en el capítulo Master-Detail. Ahí lo leí hace varios años por primera vez, cuando me sucedió algo similar.

Cita:

Empezado por nextor (Mensaje 400557)
[...] que tengas un buen dia :):):):)

Gracias, igualmente para ti. De momento me esperan 540 abdominales, pero primero media hora de escaladora y bici. :p

Un abrazo en la rejilla.

Al González. :)

nextor 19-05-2011 01:03:20

de verdad que soy un mal educado, en serio Neftali gracias a ti tambien ya que me has ayudado en varias ocasiones y estas en mi lista de gods del delphi.

Como siempre les agradesco, siempre me han sacado de apuros

suerte en todo :)

Neftali [Germán.Estévez] 19-05-2011 10:42:59

Cita:

Empezado por Al González (Mensaje 400560)
Daré la mitad de esas gracias a Neftalí, pues él también tuvo la misma intención de ayudarte.

No te preocupes, me doy por "agradecido"... :)

Ten vez en este caso no entendí bien lo que necesitabas. A lo que yo me refería era a hacerlo utilizando una sólo consulta y un sólo DataSet, y luego aprovechando las funciones de agrupación del cxGrid. Es diaeño algo así (el de la parte de abajo):


Para luego obtener esto ene ejecución utilizando las agrupaciones:



De todas formas, veo que ya está conseguido.

Un saludo.


La franja horaria es GMT +2. Ahora son las 12:21:11.

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