PDA

Ver la Versión Completa : Búsqueda usando un índice con ADO.


vpepen
31-01-2005, 13:25:59
Hola Foro....

Me gustaría saber que método sería el utilizado para realizar una búsqueda en una tabla usando un índice con el componente ADOTable.

Las gracias anticipadas.

Víctor.-

Neftali [Germán.Estévez]
31-01-2005, 16:27:16
Me gustaría saber que método sería el utilizado para realizar una búsqueda en una tabla usando un índice con el componente ADOTable.

Revisa en la ayuda de Delphi las propiedades:
* IndexDefs
* IndexFieldCount
* IndexFieldNames
* IndexFields
* IndexName

del componente TADOTable.

vpepen
31-01-2005, 18:13:11
La propiedad IndexFieldNames me permite asignar un campo por el cual está indexada la tabla, pero lo que en realidad necesito es el método que permita realizar la búsqueda por medio a ese índice.

Las gracias anticipadas,

Víctor.-

Neftali [Germán.Estévez]
31-01-2005, 18:30:54
Segun la ayuda:

(... English....)
//·······························································································
Propiedad IndexName
Specifies the currently active index.

property IndexName: String;

Description
Use IndexName to activate an index and cause it to actively order the dataset’s rows. At runtime, set IndexName to aString containing the name of the index. At design-time, select the desired index from the drop-down list in the Object Inspector.
//·······························································································

Pues yo creo que está bastante claro. En diseño seleccionas aquí el índice o en ejecución puedes asignarle una cadena con el nombre del índice que desees.

vpepen
01-02-2005, 13:13:50
Neftalí a lo mejor yo esté confundido o no me he sabido explicar. Con esa propiedad que especificas (IndexName) puedo activar un índice en un momento determinado, pero luego de estar activado dicho índice, cómo hago para realizar una búsqueda usando una entrada, como por ejemplo desde un Edit. En un tipo de conexión BDE usando el componente Table existe el método FindKey que realiza dicha función, pero en ADO no he podido conseguir uno.

Las gracias anticipadas...

Víctor.-

marto
01-02-2005, 13:23:28
Wop!

Mírate la función Seek ;)

Conste, que nunca he trabajado con ADO, pero no cuesta mucho ir a la ayuda y echarle un vistazo a los método de TADOTable,¿no?... ¡ah! que es más fácil preguntar en los foros y que los demás busquen por mi! se me olvidaba....

Neftali [Germán.Estévez]
01-02-2005, 13:57:01
Neftalí a lo mejor yo esté confundido o no me he sabido explicar...
O yo no te he sabido entender...;)

Para ADO debes utilizar el método Locate. Busca en la ayuda de Delphi, está bastante bien explicado y además hay ejempillos.

vpepen
01-02-2005, 15:39:14
Marto, mi intención no es que los demás busquen por mí. Sí verifique la ayuda y ví el método Seek, lo que pasa es que no comprendo bien su funcionamiento. Te agradecería que por favor si está dentro de tus posibilidades me expliques su funcionamiento, ya que en la ayuda está algo confuso.

Neftaly, quiero realizar una búsqueda usando un índice, el método locate creo que realiza la búsqueda, pero todo lo contrario, es decir, sin utilizar índice.

Las gracias anticipadas...

Víctor.-

marto
01-02-2005, 16:11:25
Wop!

Marto, mi intención no es que los demás busquen por mí. Sí verifique la ayuda y ví el método Seek, lo que pasa es que no comprendo bien su funcionamiento.

Pues cuando yo no sé como funciona un método pregunto eso, cómo funciona, no como hacer lo que hace el método... ¿no sería más lógico preguntar cómo funciona el método seek? en fin...


Te agradecería que por favor si está dentro de tus posibilidades me expliques su funcionamiento, ya que en la ayuda está algo confuso.


Pues yo entiendo que si, por ejemplo, el indice activo está formado por dos campos y quieres buscar la primera ocurrencia tienes que hacer algo así (sacdo literalmente de la ayuda)

ADODataSet1.Seek(VarArrayOf([90030, 90020]), soFirstEQ);

o, con un poco de mi cosecha...

if ADODataSet1.Seek(VarArrayOf([90030, 90020]), soFirstEQ) then
ShowMessage('Lo encontré')
else
ShowMessage('No tá');


A mi me parece que la ayuda está muy clarita... ¿el problema está con la ayuda o no entiendes el ingles?

vpepen
03-02-2005, 14:32:32
Marto....

Mi inteción no es hacer un polémica de esto, simplemente esperaba ayuda de cómo solucionar este problemita. Con relación al método Seek una vez abrí un hilo relacionado con él, ya que se produce un error en tiempo de ejecución "El objeto o proveedor no puede realizar la operación requerida", inclusive utilizando un poco de tu cosecha, pero no tuve respuestas que me ayudaran a solucionar dicho error. Esa es la razón principal del por qué no pregunté por el método Seek y esperaba ver si existía otro método alternativo.

Las gracias anticipadas...

Víctor.-