Ver Mensaje Individual
  #174  
Antiguo 16-11-2006
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Reputación: 21
yusnerqui Va por buen camino
Hola, creo que debes reconciderar el uso del SQL, con esto no te digo que cambies nada, pero si muy bien podrías ausiliarte de una función que use una instrucción sql para resolber tu problema:

Te confieso que no estoy muy empapado en tu programa, no se los componentes que usas etc, pero me he concentrado en el problema actual, si como supongo siempre debes coger el valor inmediato superior al peso introducido en caso de no ser este uno de los existentes puedes crearte una función similar a esta:
Código Delphi [-]
function paLocate(Peso: String): String;
Var
   Query:TADOQuery//suponiendo que uses ado.
begin
   Query:= TADOQuery.Create(nil);
   Try
     Query.Connection :=ADOConnection1; //El conector que uses
     Query.SQL.Text := 'Select min(peso) from TuTabla where Peso >= '+Peso;
     Result := Query.Fields[0].asString;
   finally
     Query.Free
   end
end;

Fíjate que te va a devolver el primer valor que sea mayor que el que has pasado como parámetro y en caso de que el parámetro exista en la base de datos te debe devolver ese mismo valor.

Pues nada que el resultado de esa función es el que le debes pasar a tu locate
Código Delphi [-]
 var
   MyPeso:String;
 begin
   MyPeso := paLocate(Edit3.Text)
   DTMGesatrans.TTarifa.Locate('Peso',StrToInt(MyPeso ),[]);
 end;

Espero que esto te de alguna idea, ya comentarás como te fue.

Consejo: No tienes idea de la cantidad de quebraderos de cabeza que te puedes quitar con solo usar pequeñas inyecciones de SQL en tu sistema.

Saludos
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo


Última edición por yusnerqui fecha: 16-11-2006 a las 15:56:56.
Responder Con Cita