Busquedas en fox

Hola, tengo una extraño caso que me gustaría ver si me puedes ayudar, tengo una tabla de libros la cual contiene el código del libro, el nombre del mismo y la fecha de préstamo.
Tengo un formulario de prestamos de libros en el cual cargo los datos de los libros, el problema es que si ordeno la tabla libros alfabéticamente para mostrarla en el combo en donde aparecen los nombres y hago una búsqueda por código me trae otro nombre.
SET EXACT ON
SELECT libros
LOCATE FOR codigo == this.Value
thisform.cmbLibro.Value = libros.codigo
sele prestamos
set filter to
set filter to codlibro == this.value
thisform.refresh
thisform.grdPrestamos.refresh
El código anterior está pegado en el lost focus de un campo texto donde escribo el código del libro para la devolución y En realidad lo que me devuelve es el registro numero por osea si pongo el código 12 no me trae los datos del libro con código 12 sino los datos del numero 12 de la tabla.
Saludos

1 respuesta

Respuesta
1
Disculpame la demora en contestar.
Veo un par de cosas que se pueden mejorar en este código:
1 -------------------------
Estás usando LOCATE. Si esa tabla tiene un índice en el campo código, te recomiendo usar SEEK ya que es muchísimo más rápido que el LOCATE
SET ORDER TO codigo (o como se llame el índice)
SEEK This.Value
Y listo. Tené en cuenta que en una tabla con miles de registros, vas a notar la diferencia.
2 -------------------------
thisform.cmbLibro.Value = libros.codigo
Acá puede estar el problema principal que vos tenés. Hay que ver las propiedades del combo. Para lo que lo necesitás, ese combo debería tener el nombre y el código de los libros. Para eso configúrale las propiedades
RowSourceType = 6 (Campos)
RowSource = "libros.nombre, codigo"
BoundColumn = 2 (para que use como Value el campo código del elemento que elijas)
---------------------------
Creo que esto ya te puede ayudar. Avisame cualquier cosa.
Gracias Maxisis de nuevo por tu ayuda me ha sido muy útil saberlo y de aquí en adelante trataré de pensar más en detalles de crecimiento.
Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas