FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Indice Secundario en Firebird
Hola a todo el mundo, estoy necesitando si alguien me puede auxiliar, tengo una tabla con alumnos cuya primary key es nroalum, para una búsqueda blanda que estoy haciendo necesito ordenar a los alumnos por su apellido así que utilizando el Worbench creé en la parte de índice uno llamado "Apellido", en una grilla funciona el ordenar a los alumnos por su apellido pero no así la búsqueda blanda. Lo raro es que en Padarox esto funciona lo mas bien. yo creo tener problemas con el índice que cree por eso si ustedes me pueden orientar como crearlo bien se los agradezco.
Nos vemos y muchas gracias |
#2
|
||||
|
||||
NO se a que te referis con una busqueda blanda!, pero independientemente de que haya o no indice, al hacer un Order By, el cursor si estará ordenado por el criterio que le pongas. En terminos prácticos, el indice sirve para optimizar la busqueda y que el motor te devuelva mas rápido el resultado.
Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#3
|
|||
|
|||
explico un poco mas
Hola, ya que o yo lo llamo Busqueda blanda o es un regionalismo pero lo importante es que tengo una base de datos en firebird, me conecto usando un IBtable, lo que quiero hacer es en una Grilla aparecen los datos de la Base de datos, luego tengo un Edit donde escribo el apellido. cuando comienzo a escribir la primer letra el código que tengo escrito va buscando esa letra, si se va posicionando en algún lugar de la Grilla donde conincida la letra, luego sigue por la siguiente, y así hasta coincidir totalmente en este caso el Apellido. En mi tabla la clave primaria se llama NroAlum y creé otra clave llamada Apellido. En las propiedades IndexFieldName de IBtable le pongo Apellido, me lo ordena por el apellido pero la consulta no anda. Yo he hecho esto muchas veces usando Paradox y me funciona perfectamente pero no se porque motivo no puedo hacerlo andar con Firebird.
agrego el código para lo que llamo Búsqueda Blanda: if (uppercase(edit1.text)<= uppercase(ibtable1.FieldByName('APELLIDO').value)) then begin while not ((uppercase(edit1.text)>= uppercase(ibtable1.FieldByName('APELLIDO').value)) or ibtable1.bof) do begin ibtable1.prior; end; if (uppercase(edit1.text)> uppercase(ibtable1.FieldByName('APELLIDO').value)) then ibtable1.Next; ibtable1.refresh; end else while not ((uppercase(edit1.text)<= uppercase(ibtable1.FieldByName('APELLIDO').value)) or ibtable1.Eof) do begin ibtable1.next; end; if (uppercase(edit1.text)< uppercase(ibtable1.FieldByName('APELLIDO').value)) then ibtable1.prior; ibtable1.refresh; Muchas gracias por su paciencia. |
#4
|
|||
|
|||
Te aconsejo que te mires la función Locate o FindKey de los Datasets
|
#5
|
||||
|
||||
Hilo movido desde el foro "InterBase y Firebird".
Hola, después de ver cómo se desarrollaba el hilo, creo que es un tema a tratar en el foro "Conexión con bases de datos". Como hemos comentado otras veces, los asuntos relacionados con componentes de acceso (incluidos los específicos de InterBase) se tratan en aquel foro. Allá lo mando. Saludos. |
|
|
|