Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Problemas Con Locate (https://www.clubdelphi.com/foros/showthread.php?t=10444)

gzerox 19-05-2004 18:03:05

Problemas Con Locate
 
Existe alguna forma de evitar el uso de locate y locatenext en interbase?, tengo una tabla llamada creditos, que tiene como campos clave año(integer) y codigo(varchar), las tabla tiene alrededor de 900 registros y a la hora de buscar un registro por su cualquier campo demora demasiado, tengo demas en la tabla un campo Calculado (COMPUTED BY) que me une los dos campos claves en uno Año-Codigo,

Existira alguna forma de seleccionar el registro que busco con una sentencia SELECT?

roman 19-05-2004 18:06:25

Cita:

Empezado por gzerox
Existira alguna forma de seleccionar el registro que busco con una sentencia SELECT?

Seguramente sí; utilizando una condición WHERE en el SELECT.

// Saludos

eduarcol 19-05-2004 18:07:22

select * from mitabla where campo = valor

a eso te refieres, parece que es muy elemental la pregunta y se hubiera solucionado con un poco de investigacion

gzerox 19-05-2004 18:12:00

Se utilizar las sentencias SQL SELECT, lo que queria decir es si hay algunas forma de uan vez Ejecutada una SENTENCIA SQL del tipo SELECT * FROM TABLA
sera posible utilizar otro SELECT para posicionarse en un registro especifico, sin filtrar la tabla, al estilo de LOCATE?

Voutarks 20-05-2004 10:06:14

Me parece que tu error es de concepto.

Dices que tu tabla tiene 900 registros, que son muy pocos por cierto, y que te tarda al hacer un locate y al contestarte que lo hagas con SQL dices que ya tomas los datos con SQL y luego buscas con locate; por lo cual entiendo que adquieres todos los registros y luego buscas: ahí esta el error.

Si traes toda la tabla, ¿para que necesitas hacer eso?. Me explico.

Para mi el método correcto es elegir de entrada mediante SQL extrictamente los datos que se necesitan y nada más.

SI necesitas un registro, será ese el que pidas.

Si se pide un conjunto de registros (dataset), casi siempre es debido a que se necesitan para mostrar al usuario en un control tipo Grid tras haberse realizado una busqueda con criterios concretos. Aquí no tiene sentido mostrar más de 150 registros en el Grid, sería muy pesado de manejar para el usuario, si esto ocurre es conveniente informarle para que pueda hacer una búsqueda más definida. Cuando los registros esten el el grid será el usuario el que mueva el cursor local a traves de ellos para luego hacer las operaciones que desee así que practicamente nunca va a tener que localizar tu programa los registros.

Sobre lo que preguntas es posible poner filtros a los dataset y otros métodos pero pienso que lo que te comento es mejor, acabas con el problema, no tiene que utilizar locate ni ninguna cosa similar y tu programa ira mejor. Además creo que así está mejor diseñado para una futura expansión, como el crecimiento de la base de datos o la puesta en marcha o crecimiento en una red.


La franja horaria es GMT +2. Ahora son las 08:53:50.

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