Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-11-2004
MaríaMR MaríaMR is offline
Miembro
 
Registrado: nov 2004
Posts: 11
Poder: 0
MaríaMR Va por buen camino
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?
Responder Con Cita
  #2  
Antiguo 24-11-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 24-11-2004
MaríaMR MaríaMR is offline
Miembro
 
Registrado: nov 2004
Posts: 11
Poder: 0
MaríaMR Va por buen camino
Declarar Indices Tabla

Cita:
Empezado por marcoszorrilla
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.
Y como tengo que declararlos, al definir la tabla los campo:

NSerie , y Nfactura los puse como primary Key, ¿hay que hacer algo mas?

gracias
Responder Con Cita
  #4  
Antiguo 24-11-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 24-11-2004
MaríaMR MaríaMR is offline
Miembro
 
Registrado: nov 2004
Posts: 11
Poder: 0
MaríaMR Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 24-11-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
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
Responder Con Cita
  #7  
Antiguo 24-11-2004
MaríaMR MaríaMR is offline
Miembro
 
Registrado: nov 2004
Posts: 11
Poder: 0
MaríaMR Va por buen camino
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
Responder Con Cita
  #8  
Antiguo 24-11-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
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
Responder Con Cita
  #9  
Antiguo 25-11-2004
MaríaMR MaríaMR is offline
Miembro
 
Registrado: nov 2004
Posts: 11
Poder: 0
MaríaMR Va por buen camino
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
Responder Con Cita
  #10  
Antiguo 25-11-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
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
Responder Con Cita
  #11  
Antiguo 25-11-2004
MaríaMR MaríaMR is offline
Miembro
 
Registrado: nov 2004
Posts: 11
Poder: 0
MaríaMR Va por buen camino
No me soluciona el Problema el FindKey hace lo mismo que el Locate, ¿Alguien Sabe La Solución?

gracias
Responder Con Cita
  #12  
Antiguo 25-11-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
¿cuantos registros tiene la tabla ? millones?
Responder Con Cita
  #13  
Antiguo 25-11-2004
MaríaMR MaríaMR is offline
Miembro
 
Registrado: nov 2004
Posts: 11
Poder: 0
MaríaMR Va por buen camino
sobre 300, ya ves no son muchos
Responder Con Cita
  #14  
Antiguo 25-11-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Ian Marteens: "La Cara Oculta de Delphi".

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

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 un excepción si el índice activo es un índice de expresiones. La técnica correcta para realizar una búsqueda sobre este tipo de índices es la siguiente
Código Delphi [-]
  Table1.SetKey;
  Table1[‘Nombre’ ]:=’Howard’;
  Table1[‘Apellidos’]:=’Lovecraft’;
  Table1.GotoKey;
Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.

Última edición por marcoszorrilla fecha: 25-11-2004 a las 15:16:08.
Responder Con Cita
  #15  
Antiguo 25-11-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Cita:
Empezado por Ian Marteens: "La Cara Oculta de Delphi"
y un programador inocente puede verse tentdo a programar algo asi:

Table1.FindKey([‘Howard’,’Lovecraft’]) //No funciona
Upss, me habeis descubierto ,

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
Responder Con Cita
  #16  
Antiguo 25-11-2004
MaríaMR MaríaMR is offline
Miembro
 
Registrado: nov 2004
Posts: 11
Poder: 0
MaríaMR Va por buen camino
en Table Properties que opcion coges, porque igual está ahí el problema

gracias
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


La franja horaria es GMT +2. Ahora son las 14:52:58.


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