Ver Mensaje Individual
  #7  
Antiguo 19-06-2018
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Reputación: 11
bucanero Va camino a la fama
Cita:
Empezado por Angel.Matilla Ver Mensaje
Gracias por la sugerencia bucanero. Entiendo el sentido del código que me pones en Delphi, pero me pierdo al pasarlo a Builder. Supongo que la instrucción repeat será el equivalente al Next() de Builder, para que avance al siguiente registro de la tabla o query. Pero si es así hay algo en el código que no me cuadra: Si después de asignar cada nivel del TreeView avanzas un registro dejo sin leer parte de cada fila del query. O estoy interpretando mal la idea.
La instrucción repeat es similar al while con la evaluación de la condición al final del bucle, he traducido mi código al similar en C++ con tus nombres de campos y variables:

Código:
  Query->First();
  while ( !fMenu->Query->Eof ) {
    //inserta el nodo del primer campo 
    Nodo[0] = LisMun->Items->Add(Nil, fMenu->Query->Fields->FieldByNumber(1)->AsString);
    do {
      //inserta el nodo del segundo campo 	
      Nodo[1] = LisMun->Items->Add(Nodo[0], fMenu->Query->Fields->FieldByNumber(2)->AsString);
      do {
        //inserta el nodo del tercer campo 		  
	newNodo = new TMyRec;
        newNodo->Codigo = fMenu->Query->Fields->FieldByNumber(4)->AsInteger;	  
        Nodo[2] = LisMun->Items->AddChildObject(Nodo[1], fMenu->Query->Fields->FieldByNumber(3)->AsString, newNodo);
	// avanza en la consulta
        fMenu->Query->Next();

 	// repite el bucle hasta final de la consulta o 
        // hasta que cambie el segundo campo de la tabla 
      } while ( !fMenu->Query->Eof && 
                    (Nodo[2]->Text == fMenu->Query->Fields->FieldByNumber(2)->AsString));
      // repite el bucle hasta final de la consulta o 
      // hasta que cambie el primer campo de la tabla 	  
    } while ( !fMenu->Query->Eof && 
                (Nodo[1]->Text == fMenu->Query->Fields->FieldByNumber(1)->AsString));
  }
el código funciona siempre que la consulta SQL este ordenada pro PARTIDO, COMARCA y MUNICIPIO.
Responder Con Cita