Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-04-2012
Avatar de Jere_84
Jere_84 Jere_84 is offline
Miembro
NULL
 
Registrado: sep 2011
Ubicación: Córdoba, Argentina
Posts: 214
Poder: 0
Jere_84 cantidad desconocida en este momento
Cool ¿Cual es la diferencia entre Find Key y Goto Key?

Quiero saber cual es al diferencia entre estas técnicas de búsqueda que tienen los ClientDataSet. Lo mismo con Find Nearest que diferencia tienen con Goto Nearest?

Saludos y gracias
Responder Con Cita
  #2  
Antiguo 05-04-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

FindKey busca un valor sobre el índice activo; se posiciona y devuelve verdadero si lo encuentra de otro modo devuelve falso.
Código Delphi [-]
  if ClientDataSet1.FindKey([Edit1.Text])  then
  ...

Del mismo modo GotoKey devuelve verdadero si halla el dato y falso si no.
En conjunto con SetKey se usa cuando nos encontramos ante un índice de expresiones de dBase. Por ejemplo para buscar un artículo por codigo + marca, no servirá hacer:
Código Delphi [-]
  ClientDataSet1.FindKey([Edit1.Text, Edit2.Text]);
En su lugar:
Código Delphi [-]
  ClientDataSet1.SetKey;
  ClientDataSet1['CODIGO']:= Edit1.Text;
  ClientDataSet1['MARCA']:= Edit2.Text;
  ClientDataSet1.GotoKey; // o GotoNearest
En la ayuda de Delphi y en La cara oculta de Delphi 4 que podés descargar del [FTP de Club Delphi] encontrarás información más detallada.

También te podría interesar revisar el metodo Locate.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 05-04-2012
Avatar de Jere_84
Jere_84 Jere_84 is offline
Miembro
NULL
 
Registrado: sep 2011
Ubicación: Córdoba, Argentina
Posts: 214
Poder: 0
Jere_84 cantidad desconocida en este momento
Gracias sigo sin entender la diferencia, los dos se basan en indices? de que caso me sirve utilizar uno u otro?

Voy a leer la cara oculta.
Responder Con Cita
  #4  
Antiguo 05-04-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Jere_84 Ver Mensaje
Gracias sigo sin entender la diferencia, los dos se basan en indices? de que caso me sirve utilizar uno u otro?
Si, los dos se basan en índices.
Como te dije anteriormente en el caso de los índices de expresiones no te sirve utilizar FindKey.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 09-04-2012
Avatar de Jere_84
Jere_84 Jere_84 is offline
Miembro
NULL
 
Registrado: sep 2011
Ubicación: Córdoba, Argentina
Posts: 214
Poder: 0
Jere_84 cantidad desconocida en este momento
Bueno entonces la diferencia seria que GotoKey y GotoNearest pueden utilizarse en indices basados en expresión dBase. En este tipo de indices FindKey y FindNearest se niegan rotundamente a trabajar lanzando una excepción. ¿Estoy en lo correcto?
Responder Con Cita
  #6  
Antiguo 09-04-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Jere_84.

Así es. Creo que este fragmento de La cara oculta de Delphi 4 lo explica más claramente:

Cita:
(Pag. 406)

¿ Por qué existe SetKey ?
Además de cualquier motivo filosófico o espiritual que puedan alegar ciertos libros de Delphi que circulan por ahí, Setkey existe por que existen los índices de expresiones de dBase; de no ser por esta razón, SetKey pudiera quedar como un método interno de la implementación de la VCL.

En este tipo de índices, FindKey y FindNearest se niegan rotundamente a trabajar: el primer paso de estos métodos es "repartir" los valores de lista pasada como parámetro entre los campos que forman el índice. per en un índice de expresiones no es sencillo determinar cuáles son los campos que forman el índice; en realidad es algo que no se intenta en absoluto.

Por ejemplo, tomemos una tabla que tenga los campos Nombre y Apellidos, y cuyo índice activo sea un índice basado en la expresion Nombre + Apellidos. Hay dos campos involucrados en el índice, y un programador inocente puede verse tentado a programar algo así:

Table1.FindKey(['Howard', 'Lovecraft']); // No funciona

¿ Cuál es el valor que debe tomarse como nombre y cuál debe tomarse como apellido ? Delphi no lo sabe. Y tanto FindKey como FindNearest están programados para lanzar una excepción si el índice activo es un índice de expresiones.
...
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
¿Cual es la diferencia entre un input box y un input query? j_flores3000 OOP 3 17-09-2015 05:17:34
Cual es la Diferencia entre la Matematica y la Toalla? Ingeniero Humor 0 02-04-2006 19:46:09
Diferencia entre .GDB y .FDB CarlosHernandez Firebird e Interbase 3 14-09-2005 04:08:49
¿Cúal es la diferencia entre los puertos UPD y TCP? DarkByte Internet 9 30-03-2004 09:01:01
.net y .com cual es la diferencia? danytorres Internet 3 26-02-2004 13:17:41


La franja horaria es GMT +2. Ahora son las 18:49: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