Ver Mensaje Individual
  #11  
Antiguo 27-07-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Reputación: 22
cHackAll Va por buen camino
Lastimosamente concuerdo con el amigo Caral con lo de "dejarlo pues funciona", pero no por "iniciar" en programación, pues si te metiste a hacerlo es porque puedes; si no porque es importante tener en mente que si quieres volverlo "perfecto", perderás la relación costo - beneficio y acabarás quemando tu cerebro y muchas horas en optimización.

Paradójicamente y al igual que tu me gusta que las cosas queden lo más parecido a perfecto (¿?) posible; asi que si estas dispuesto vamos a analizar las alternativas. Por lo que tengo entendido quieres hacerlo todo simplemente con una sentencia SQL; en tal vaso te dejo la siguiente corrección:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
 ADOQuery1.SQL.Text := 'select nm.prefijo + nm.nom + nm.sufijo + ''  '' + m.prefijo + m.nom + m.sufijo from muchos nm, muchos m where nm.idtipo = ''NM'' and m.idtipo = ''M'' order by nm.prefijo + nm.nom + nm.sufijo + ''  '' + m.prefijo + m.nom + m.sufijo';
 ADOQuery1.Active:= True;
 with ADOQuery1 do
  begin
   First;
   while not EOF do
    begin
     ListBox1.AddItem(Fields.FieldByNumber(1).AsString, nil);
     Next;
    end;
  end;
end;

No dejes de comentarnos como te va!

Edito: Tambien debemos ver cual de las dos alternativas es la más optima. En ESTE caso lo es la última por usar solo un bucle, pero si trabajamos en red debemos analizar qué es lo mas importante, pues con ésta le estamos reduciendo trabajo a las PCs Clientes; con tu solución le aumentamos un poco a las mismas, pero en teoria le reducimos algo al Servidor.

Última edición por cHackAll fecha: 27-07-2007 a las 02:26:59.
Responder Con Cita