FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Findkey?? o Locate
Buenas tengo un dataset relleno con mas de 10000 registros y quiero visualizarlos para kon un control movermer por ellos el problema es que al posicionarme en uno con el locate se ace muy lento, me an comentado algo de un FindKey o Find Index, que sabeis de esto??
|
#2
|
||||
|
||||
Hola Ubed, puedes usar los metodos FindKey (para una busqueda exacta) o FindNearest (para una busqueda aproximada) para ambos casos debes definir el campo que sera tu indice, esto lo haces en la propiedad IndexFieldNames de tu componente Table y lo usas de la siguiente manera:
Con el Locate la busqueda se hace mas rapida si tienes definido un indice, pero si no lo tuvieras hace una busqueda secuencial lo cual seria lento si tienes muchos registros. Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
#3
|
|||
|
|||
Cita:
|
#4
|
|||
|
|||
FindKey no está implementado en todos los tipos de Datasets. Por lo general, aunque esto depende del tipo de dataset que uses, locate usa los índices de la tabla si existen para el campo sobre el que estás haciendo la búsqueda, por lo que no hay diferencia en cuanto a la velocidad.
Locate, además, está definido en todos los datasets.
__________________
Saludos. |
#5
|
||||
|
||||
Cita:
¿El control al que te refieres es un dbgrid? En principio, y sin conocer más detalles, te recomiendo que te plantees filtrar previamente esa información para navegar entre los registros que realmente necesitas... asi no creo que te haga falta usar ni locate ni findkey.. no se.
__________________
Progress Openedge https://abevoelker.com/progress_open...dered_harmful/ Delphi forever... |
#6
|
|||
|
|||
Sugerencia
Código Delphi [-] //busqueda aproximada
Table1.FindNearest([Edit1.Text]); //busqueda exacta Table1.FindKey([Edit1.Text]); Para este tipo de busqueda se necesita un indice activo, y obviamente la busqueda sera precisa y te ubicara al primer registro coincidente. Si pretendes buscarlos con el metodo locate, al ser un metodo de busqueda secuencial, sera mas lento, salvo que busques varios regiustro coincidentes, se acelera un poco si lo trabajas con un indice activo, pero si desabilitas los controles de la data, y lo activas despues de haber llegado al registro buscado, Table1.disablecontrols; Table1.locate(parametros de busques); table1.enablecontrols Pero como sugirienron, si son varios y coinicentes, seria mejor que emplees un filtro. |
#7
|
|||
|
|||
muchas gracias a todos, al final use el locate, pero ahora se me plantea otra pregunta.
Puedo utilizar un unico valor para buscar en varios campos?? kiero decir yo tengo mis registros y kier ver el k tiene el telefono 978834266 pero puede estar en 4 campos, telefono1, telefono2, telefono3, fax Puede emplear el locate para buscar en los 4 ese valor?? |
#8
|
|||
|
|||
Puedes usar varios locate, aunque para ese caso creo que sería mejor un filtro o una consulta sql. De todas maneras si quieres usar locate:
__________________
Saludos. |
#9
|
||||
|
||||
hola Ubed, también puedes usar esta forma:
Puedes colocar todos los campos que quieras |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
problema findkey y gotonearest | Ariel03 | OOP | 2 | 24-06-2007 15:44:15 |
Findkey e IBTable | Puche | Firebird e Interbase | 1 | 10-07-2006 15:47:12 |
Trabajar con locate y FindKey | jmedina | Conexión con bases de datos | 1 | 05-10-2004 07:57:49 |
Findkey | trex2000 | Tablas planas | 15 | 01-04-2004 21:35:35 |
Findkey en ADO !!! | vpepen | Conexión con bases de datos | 3 | 05-12-2003 11:14:18 |
|