Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-09-2019
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Cargar datos en TVirtualStringTree

Tengo este código para cargar un TVirtualStringTree:
Código:
int nDatMun[2] = {0, 0};
PTreeEle DatEle;

Mesas->NodeDataSize = sizeof(TTreeElec);
Mesas->BeginUpdate();
Mesas->Clear();

Auxiliar->Close();
Auxiliar->SQL->Text = "SELECT A.Codigo, A.Nombre, B.Codigo, B.Distrito, B.Seccion, B.Mesa, C.Censo, "
                      "COALESCE(SUM(D.Votos), 0) Votos FROM Poblacion A, Mesas B, DatMes C "
                      "LEFT JOIN Resultados D ON C.CodPrv = D.CodPrv AND C.Codigo = D.Mesa AND "
                      "C.Proceso = D.Proceso WHERE A.CodPrv = (SELECT Literal FROM Instalacion "
                      "WHERE Etiqueta = 'Provincia') AND A.CodPrv = B.CodPrv AND A.Codigo = B.Municipio "
                      "AND B.CodPrv = C.CodPrv AND B.Codigo = C.Codigo AND C.Proceso = :Proceso "
                      "GROUP BY A.Codigo, A.Nombre, B.Codigo, B.Distrito, B.Seccion, B.Mesa, C.Censo "
                      "ORDER BY Nombre, Distrito, Seccion, Mesa";
Auxiliar->ParamByName("Proceso")->AsInteger = StrToInt(pSelItem->SubItems->Strings[0]);
Auxiliar->Open();

cAux  = "";
Button18->Enabled = false;
Button19->Enabled = false;
for (; !Auxiliar->Eof; Auxiliar->Next())
{
     if (cAux != Auxiliar->FieldByName("Nombre")->AsString)
     {
          if (!cAux.IsEmpty())
          {
               DatEle        = (PTreeEle)Mesas->GetNodeData(Nodo1);
               DatEle->Censo = nDatMun[0];
               DatEle->Votos = nDatMun[1];
               nDatMun[0]    = 0;
               nDatMun[1]    = 0;
          }

          Nodo1             = Mesas->AddChild(NULL);
          DatEle            = (PTreeEle)Mesas->GetNodeData(Nodo1);
          DatEle->Municipio = Auxiliar->FieldByName("Nombre")->AsString;
          DatEle->Codigo    = Auxiliar->Fields->FieldByNumber(1)->AsInteger;
          cAux              = Auxiliar->FieldByName("Nombre")->AsString;
     }

     Nodo2             = Mesas->AddChild(Nodo1);
     DatEle            = (PTreeEle)Mesas->GetNodeData(Nodo2);
     DatEle->Municipio = FormatFloat("000 ", Auxiliar->FieldByName("Distrito")->AsInteger) +
                         FormatFloat("000 ", Auxiliar->FieldByName("Seccion")->AsInteger) +
                         Auxiliar->FieldByName("Mesa")->AsString;
     DatEle->Censo     = Auxiliar->FieldByName("Censo")->AsInteger;
     DatEle->Votos     = Auxiliar->FieldByName("Votos")->AsInteger;
     DatEle->Codigo    = Auxiliar->Fields->FieldByNumber(3)->AsInteger;

     nDatMun[0] += Auxiliar->FieldByName("Censo")->AsInteger;
     nDatMun[1] += Auxiliar->FieldByName("Votos")->AsInteger;
}
Y para mostrar la información hago esto:
Código:
void __fastcall TfEleccion::MesasGetText(TBaseVirtualTree *Sender, PVirtualNode Node, TColumnIndex Column, TVSTTextType TextType, WideString &CellText)
{
     switch (Column)
     {
          case 0:
               CellText = ((PTreeEle)Sender->GetNodeData(Node))->Municipio;
               break;
          case 1:
               CellText = ((PTreeEle)Sender->GetNodeData(Node))->Votos > 0 ? (WideString)FormatFloat("##,###,##0", ((PTreeEle)Sender->GetNodeData(Node))->Censo) : (WideString)"";
               break;
          case 2:
               CellText = ((PTreeEle)Sender->GetNodeData(Node))->Votos > 0 ? (WideString)FormatFloat("##,###,##0", ((PTreeEle)Sender->GetNodeData(Node))->Votos) : (WideString)"";
               break;
     }
}
Todas las variables están correctamente definidas y la ejecución no da ningún error de ningún tipo. Voy a mostrar tres casos que con el mismo query y dando resultado en los tres me produce resultados distintos.

El query para las EUROPEAS 2019 (valor 39 del parámetro) me da este resultado:

y una vez cargado el árbol se muestra así:


Si hago el proceso para las MUNICIPALES 2019 (valor 40) este es el resultado:

y la carga produce esto:


y como remate con GENERALES 2019 (valor 41) tengo esto:

que se muestra así:


La única diferencia que hay entre los tres querys es que no siempre dan resultados en la columna votos. ¿Puede esto influir en como se muestran los datos en el árbol? Porque no le encuentro otra explicación.
Responder Con Cita
  #2  
Antiguo 28-09-2019
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Perdonad

¡¡¡NO HE DICHO NADA!!! Acabo de ver que estoy haciendo mal.
Responder Con Cita
  #3  
Antiguo 28-09-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Clubdelphi, el único sitio del mundo que te solucionan el problema mediante telepatía.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cargar datos de una BD en un label!! djMadox Conexión con bases de datos 13 03-02-2015 09:32:21
Cargar datos Hugo Penagos Conexión con bases de datos 1 14-12-2007 09:59:43
Cargar datos en una tabla Drake PHP 2 04-06-2007 15:05:35
Crear base de datos y cargar datos desde delphi Albano MySQL 4 17-05-2007 20:01:18
Error al cargar datos Humberto Pertuz Conexión con bases de datos 2 04-11-2003 21:49:24


La franja horaria es GMT +2. Ahora son las 08:42:55.


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
Copyright 1996-2007 Club Delphi