Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Una curiosidad (https://www.clubdelphi.com/foros/showthread.php?t=5972)

Pandre 12-12-2003 17:38:58

Una curiosidad
 
Hola a todos:

Hay casos en los que en mis aplicaciones se me hace necesario contar con una función cuyo funcionamiento lo explico con un ejemplo.
Supongamos que tengo una tabla con 3 campos: ID, NOMBRE, APELLIDO. Entonces, sabemos un valor de ID y de él queremos saber a que NOMBRE pertenece. Es decir, le damos a la función el valor X, y la función buscará en la tabla y devolverá el valor del campo NOMBRE al que pertenece dicha ID.

Yo lo implemento así:

Código:

function ObtenerDesdeID(ValorID: string): String;
begin
 if Tabla.FindFirst('ID', ValorID, [loCaseInsensitive]) then
    Result := Tabla.FieldByName('NOMBRE').AsString else
    Result := '';
end;

La verdad es que normalmente me funciona norm, pero a veces me falla.
La pregunta es: ¿sabéis de alguna función que haga lo mismo, pero de forma optimizada?

Gracias de antemano...

roman 12-12-2003 18:11:36

Cita:

Pandre comentó:
La verdad es que normalmente me funciona norm, pero a veces me falla.
La pregunta es: ¿sabéis de alguna función que haga lo mismo, pero de forma optimizada?

No veo problema con la función siempre y cuando, claro está, Id sea la llave primaria de la tabla o por lo menos un índice único. Lo que sí, en tal caso yo usaría más bien FindKey en lugar de FindFirst.

// Saludos

Osorio 13-12-2003 04:23:49

Yo uso Locate, siempre funciona...


Suerte.

Lepe 16-12-2003 11:48:57

yo uso TTable.lookup la ventaja es que no mueve el cursor al registro buscado, así que si se está editando la tabla no pasa nada. En la ayuda de delphi viene un buen ejemplo de su uso.

Saludos

Voutarks 16-12-2003 14:16:15

Ya no utilizo componentes tipo table, así que las busquedas siempre las hago mediante un componente ligero (que no es navegable, al menos bidireccionalmente) y sql.

Para tu caso, y combinando las dos respuestas anteriores, lo mejor sería utilizar la función locate en el caso de que quieras mover el cursor de conjunto de datos hacia ese registro, o bien lookup si no quieres que se mueva.

Pandre 16-12-2003 22:57:12

Pues nada...

Simplemente deciros que todo está en orden ahora, por lo que desde aquí os doy las GRACIAS a todos sin excluir a nadie. Vuestra ayuda ha sido muy valiosa.

Gracias de nuevo...


La franja horaria es GMT +2. Ahora son las 22:38:44.

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