Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   TTREEVIEW y Bases de datos (https://www.clubdelphi.com/foros/showthread.php?t=49591)

Mannu 25-10-2007 00:13:05

TTREEVIEW y Bases de datos
 
Hola,
estoy intentando conectar a una base de datos y mostrar los datos en un TreeView.

tengo dos tablas

Tabla A y tabla B que depende de tabla A


TABLA A
---------
id | Nombre

y TABLA B
----------
id | id_tabla_a | nombre


en ambos casos el campo "id" es autoincremento y el id_tabla_a es igual al "id" de la tabla A para relacionar.

Ahora bien, se como mostrar los datos de la tabla A en el TREEEVIEW y de la tabla B pero como puedo hacer si tnego otra TABLA C con datos del miembro de la TABLA B y quiero mostrar dichos datos con lo que tengo en el TREEVIEW ?

Me explico?


yo veria:

datos TABLA A
|
|-----> Datos Tabla B
|
|------> Si pico en uno campo de TABLA B me muestra datos Extendidos ( tabla C)

Mi duda es, como se que campo mostrar si pico en uno de los nodos de TABLA B, puesto que solo me muestra un nombre :S y el ID de ese Nodo no coincide con el de la Base de datos.

quizas es posible asignar un ID y nombre a un nodo ? para saber a que campo pertenece?

Gabo 25-10-2007 10:45:06

Hola,

espero no te moleste, pero no me parece muy bueno el diseño que haces de las tablas. Es que, por cada nivel de tu treeview estás pensando generar una nueva tabla, cuando en realidad toda la información necesaria para realizar una jerarquía se puede poner en una sola. Para ello basta con indicar quien es el "registro padre" de cada registro. Lamento no tener ningún ejemplo a mano (y los que tengo están echos en VB.NET).

De todas formas me acordé que en algunos hilos se había comentado sobre un componente gratuito, el Virtual TreeView, que hacía más comodo el uso de jerarquías de este tipo.

Aquí tienes algunos enlaces:

http://www.clubdelphi.com/foros/show...eeview+grat%2A

http://www.clubdelphi.com/foros/show...nente+treeview

http://www.clubdelphi.com/foros/show...eeview+grat%2A

http://www.clubdelphi.com/foros/show...eeview+grat%2A

Mannu 27-10-2007 00:34:07

nooo todo lo contrario se agradece cualquier apuntillo o critica :)

esque pensaba en separarlo para luego consultar ... solo "miembros" por ejemplo ... auque tal como me dices.......podria hacer ramificaciones (nodos) infinitos supongo :S!

saludos, voy a echarle un vistazo a los links

PD: a un nodo le puedo poner un ID en borland? ya que hacer una busqueda en una BD con el dato del campo ... no me agrada, y más si tiene acentos :S

Gabo 29-10-2007 10:57:08

Cita:

Empezado por Mannu (Mensaje 241596)
PD: a un nodo le puedo poner un ID en borland? ya que hacer una busqueda en una BD con el dato del campo ... no me agrada, y más si tiene acentos :S

¿Te refieres a asociar el codigo identificador del registro al nodo? No estoy muy seguro. En VB lo que hacía era utilizar el Tag del nodo pero creo que esa propiedad no está disponible en los nodos del TreeView en C++Builder. De todas maneras puedes buscarla por si acaso. Otra opción es utilizar un contenedor, busca "map" en la ayuda.

Mannu 29-10-2007 16:02:23

ya pense en almacenar los ID de mis tablas y los de los nodos en matrices, pero me resultaba algo "bestia" mmm igual lo pruebo con los map :)

de todos modos mas de 200 datos no voy a tener, lo que intento es desarrollar una "agenda" con un arbol principal:

Arbol:

Promotores
Alumnos
Usuarios

y una o dos ramas como mucho por rama principal.

Saludos y gracias por las ideas!

Mannu 02-11-2007 17:27:34

Esto seria una idea muy loca para poder identificar un Nodo con un ID de una tabla?


Código Delphi [-]
typedef struct MyRec
{
  AnsiString FName;

} TMyRec;

typedef TMyRec* PMyRec;

void __fastcall TForm1::Button1Click(TObject *Sender)
{

PMyRec  MyRecPtr;

TTreeNodes* pItems;
 pItems = TreeView1->Items;

 MyRecPtr = new TMyRec;

 //Edit1 funcionaria como ID de la tabla
 MyRecPtr->FName = Edit1->Text;

  pItems->AddObject(0, "Item" , MyRecPtr);
}

y para saber el ID de un nodo en una tabla (obtenerlo)
Código Delphi [-]
ShowMessage(PMyRec(TreeView1->Selected->Data)->FName);


La franja horaria es GMT +2. Ahora son las 06:16:33.

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