FoxPro/Visual FoxPro - indice

   
Vista:

indice

Publicado por Clauida Alfaro (1 intervención) el 09/10/2011 22:01:48
necesito crear un indice con varios campos, les cuento que en mi tabla en la opcion de nombre coloque busq y en expresion coloque esta opcion DTOC(fecha)+ALLTRIM(cod_cli)+ALLTRIM(cod_trab)+ALLTRIM(cod_reg) , luego en el boton de mi form tengo esto

SELEC tabla1
SET order to busq
encontrar = dtoc(thisform.text1.value)+alltrim(thisform.combo1.value)+alltrim(thisform.combo2.value)+alltrim(thisform.text2.value)
SEEK encontrar
IF found()then
WAIT"encontado"window nowait
&& necesito encontrar este registro para poder guardar un dato
ELSE
WAIT"NO encontrado"window nowait
ENDIF

ayudita please...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

indice

Publicado por Raul Castañon sraul2@hotmail.com (1 intervención) el 09/10/2011 22:15:25
Hola Claudia Alfaro

Vi tu pregunta en el foro, y tengo un par de ideas.

Tal vez en tu variable "encontrar", puedas probar cambiando la propiedad "value", por "displayvalue" en el caso de los combos 1 y 2, porque el displayvalue se refiere al valor que en ese momento se escogió de las opciones del combo.
También podrias revisar el tema de la variable de entorno "exact", se define con "set exact on" o "set exact off", y tiene que ver con que las búsquedas sean estrictas o sean relativas.

Espero q esto te sirva. Saludos desde Qro. México.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

indice

Publicado por Clauida Alfaro (1 intervención) el 10/10/2011 00:09:34
Hola Raul ya quite el set exact, tendras otra forma para obtener los resultados que necesito please soy novato en esto gracias amigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

indice

Publicado por Juan Manuel Cruz juanmcruz@hotmail.com (508 intervenciones) el 11/10/2011 11:42:47
Otra cosa, esos ALLTRIM en la creación del índice pueden darte problemas. Nunca deberías crear un índice con expresiones de longitud variable.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

indice

Publicado por hancito2003 (2 intervenciones) el 17/10/2011 21:06:38
Hola.

Siempre he tenido problemas creando indices con campos diferentes, asi que lo he resuelto creando indices con campos iguales y donde los campos son diferentes creo indices diferentes. De este modo, puedo crear sin tener problemas de indices. Es cierto que la busqueda podria ser mas lenta pero tambien es mas segura:

use mitabla1
index on nombre, apellido tag indice1
index on fecha tag indice2
index on codigo1, codigo2, codigo3 tag indice3

luego creo mi captura y busqueda.
set order to indice1
go top && comenzar al principio del registro.
seek busqueda.

si no existe,
set order to indice 2
go top && comenzar al principio del registro.
seek busqueda.

si no existe
go top && comenzar al principio del registro.
seek busqueda.

si definitivamente no existe, entonces:
wait wihdows 'No existe' nowait

en caso contrario
wait windows 'Existe' nowait

Si existe, entonces tomo los valores de las variables que realmente me interesan de la tabla.

Para crear busquedas compuestas debes tener mas de un campo de captura y solo defines un campo de captura. Asi que no tiene razon de ser una busqueda simple en campos compuestos. De este modo, en el indice de fecha podrias crear dos campos de captura: "fecha inicio" y " fecha final" en un solo indice, asi podrias crear un filtro entre fechas. Son solo ideas que podrias agregar a tu repertorio de conocimientos.

Suerte.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar