Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Búsqueda usando un índice con ADO. (https://www.clubdelphi.com/foros/showthread.php?t=18045)

vpepen 31-01-2005 13:25:59

Búsqueda usando un índice con ADO.
 
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

Cita:

Empezado por vpepen
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

Cita:

Empezado por vpepen
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!

Cita:

Empezado por vpepen
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...

Cita:

Empezado por vpepen
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)
Código Delphi [-]
ADODataSet1.Seek(VarArrayOf([90030, 90020]), soFirstEQ);
o, con un poco de mi cosecha...
Código Delphi [-]
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.-


La franja horaria es GMT +2. Ahora son las 23:35:41.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi