FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
Busqueda con LOCATE
Hola:
Necesito Ayuda URGENTE con una Búsqueda LOCATE. Estoy haciendo una búsqueda con un LOCATE en una Tabla, Busco por dos campos distintos pero a la hora de ejecutarla me tarda mucho en localizarla, la búsqueda que hago es la siguiente: IF ModuloDatos.TFacturas.Locate('Serie; Nfactura', VarArrayof([PSerie.Text, PnFactura.Text]), Opciones) THEN Serie y Nfactura son las claves de Tfacturas ¿que es lo que hago mal? |
#2
|
||||
|
||||
Si el problema es que tarda mucho únicamente, entonces lo que te falta es declarar los índices apropiados en la tabla, ya que sino Locate hace un búsqueda sencuencial.
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#3
|
|||
|
|||
Declarar Indices Tabla
Cita:
NSerie , y Nfactura los puse como primary Key, ¿hay que hacer algo mas? gracias |
#4
|
||||
|
||||
Creo que te tendrás que explicar un poco mejor, qué es exactamente lo que quieres encontrar en la tabla?
Los 2 no pueden ser PrimaryKey ya que como su nombre índica solamente puede haber una, y también conviene que indicas que tablas estas utilizando. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#5
|
|||
|
|||
La Tabla que utilizo es DBASE y lo que quiero es un índice que integre los dos campos la Serie y el Nº Factura porque integrando los dos campos este índice es único.
Puedo haber dos mas números de facturas iguales pero si añado la serie hago el índice único. gracias |
#6
|
||||
|
||||
Si estas trabajando con el ttable porq no utilizas el FindKey en lugar de locate eso te asegura una busqueda mas rapida
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
#7
|
|||
|
|||
He probado con el FindKey y sigue tardando muchísimo, yo creo que el problema es que no he creado los índices bien, lo que necesito es que me digaís como crear estos índices:
Quiero crear un índice con estos dos campor: Serie, Nfactura de una tabla DBBAse, yo las tablas las he definido con el Databasedestock. Espero que una vez alguien me de una solución completa. gracias |
#8
|
||||
|
||||
Una de dos o no tienes los indices o se estan corrompiendo, la forma de crear los indices es colocar esos dos campos al principio de la lista de campos, luego en la columna Key presionar la barra espaciadora para que salga el * que identifica el campo clave, presionas el boton save y listo.
antes de ejecutar el findkey debes asegurarte que el indexname de la tabla sea "" porq ese es el q identifica el principal. espero haberte servido de ayuda
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
#9
|
|||
|
|||
Dame un ejemplo del IndexName, para ver como se hace lo que me comentas de que tiene que ser = "". ¿Estas Seguro de que me solucionara el Problema?.
gracias |
#10
|
||||
|
||||
Te solucionara el problema si y solo si:
- La clave principal esta bien definida -No esta corrupta -Ej. Table1.IndexName := ''; Table1.FindKey([txSerie.Text, txFactura.Text]);
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
#11
|
|||
|
|||
No me soluciona el Problema el FindKey hace lo mismo que el Locate, ¿Alguien Sabe La Solución?
gracias |
#12
|
||||
|
||||
¿cuantos registros tiene la tabla ? millones?
|
#13
|
|||
|
|||
sobre 300, ya ves no son muchos
|
#14
|
||||
|
||||
Ian Marteens: "La Cara Oculta de Delphi".
Cita:
__________________
Guía de Estilo de los Foros Cita:
Última edición por marcoszorrilla fecha: 25-11-2004 a las 15:16:08. |
#15
|
||||
|
||||
Cita:
Pero en todas mis aplicaciones esta asi y me funciona de lo mejor por eso no me habia visto en la necesidad de documentarme al respecto
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
#16
|
|||
|
|||
en Table Properties que opcion coges, porque igual está ahí el problema
gracias |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|