FoxPro/Visual FoxPro - Problema con registro en grid

   
Vista:

Problema con registro en grid

Publicado por Pablo (argentina) (433 intervenciones) el 18/06/2009 02:00:22
Hola a todos Amigos!!!!!, le cuento el problema y el cual no se donde tengo que colocar el codigo para que funcione.

Tengo un Form con un grid, el grid se llena con datos que proviene de una Vista Local. Bueno que es lo que sucede, yo para buscar datos dentro del grid uso el Toolbar del PICBTNS de VFP y cuando le doy a Buscar selecciono que busco, etc, etc.
Bueno cuando el registro existe todo funciona bien. Pero el tema es cuando busco y por ejemplo el cliente no esta entonces te dice el messagebox que no esta, cuando le doy al cancel me pone "el registro esta fuera del intervalo", recuerden que estoy usando para buscar el buscador que viene en la la barra del PICBTNS, ¿me explico?

O sea el error entiendo porque es, lo que no se es donde tendria que poner y que poner para que me refresque el grid o no sea para cuano le doy a cancel no me de ese error y se posicione en cualquier parte del grid no importa.

Si lo encuenta anda todo bien, si yo ya busque uno anteriormente y lo encontro y despues busco otro nuevamente tambien funciona bien.

el tema es cuando busco la primera vez y no lo encuentra me da ese error, como lo puedo solucionar?

Muchas Gracias a todos como siempre

Pablo
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
Imágen de perfil de Mauricio

Problema con registro en grid

Publicado por Mauricio (1367 intervenciones) el 18/06/2009 02:24:39
Bueno, aca de nuevo, te sugiero que crees una clase en base a PICBTNS, en donde podras ponerle los mensajes que tu quieras o podrias hacer que el boton no le haga caso a la clase origen sino que le haga caso a tu codigo, eso lo puedes encontrar en la ayuda de VFP.........
CREO QUE PARA QUE NO TE EJECUTE EL CODIGO DE ORIGEN DEBES DE PONER EN TU CODIGO PRIMERO :: 2 veces dos puntos, luego va tu codigo...
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

RE:Problema con registro en grid

Publicado por andy (221 intervenciones) el 18/06/2009 02:34:32
Si no me equivoco, te esta indicando que la tabla tiene un indice que no esta actualizado.
Debes regenerarlo y comprueba nuevamente, puede ser que estes usando un indice tipo IDX?
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

RE:Problema con registro en grid

Publicado por Pablo (Argentina) (433 intervenciones) el 18/06/2009 14:27:42
Bueno, Gracias Andy y Mauricio, el tema del indice, No uso un IDX, para mi el problema viene de la Vista local, que habria que actualizarla despues de buscar un registro para que esten nuevamente todos, porque cuando yo busco me muestra si lo encuentra solamente ese registro en el grid, el resto desaparecen , jajaj ¿me explico?.

Lo de hacer mi propia clase no estaria mal Maurico, pero con solo hacer un boton Buscar creo que me alcanzaria.

El tema es que todavia no se bien y por ahi me pueden aconsejar que comandos son los que tendria que poner en el boton Buscar para que busque "partes" de lo que yo le pongo que busque me explico, o sea el campo es numero de 15 digitos, pero si yo pongo 5 digitos que me busque en la tabla todos los que coincidan con esos 5 o mas puede ser y me los muestre.

Por eso uso el PICBTNS, porque el buscar que tiene esa barra tiene la opcion de buscar por el campo (field) que quiera y a su vez por "contiene" o "contains" ¿se entiene?.

Si yo le puedo meter todo eso en el evento click de un boton listo, pero no se por donde empezar, que comandos usar ¿me pueden decir?

Pablo
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

RE:Problema con registro en grid

Publicado por es_binario (757 intervenciones) el 18/06/2009 16:00:30
Coincido con mauricio en crear tu propia clase o tus propios eventos, la ventaja de crear clases es que les puedes dar reusabilidad, es decir usarlo en diferentes forms, aunque tambien implica pensar, en que se va a usar en diferentes tablas aumentando el tamaño del codigo.

Bueno ahi te va:

creas un textbox para buscar un combo para que eliga el campo y un bottom para que ejecute el codigo

Ahora en el combo cargas todos los campos que tienes en la tabla o como los quieras usar voy a poner de ejemplo 3

en el init del combo pones esto
This.Style = 2
This.RowSourceStyle = 1
This.RowSource = "Clave,Descripcion,Familia"

Ahora en el evento click de command buscar y suponiendo que renombraste el textbox por TxtBusca y al como le cambiaste el nombre por CmbCampo

Pones esto
if empty(Thisform.TxtBusca.value)
return && no ejecuta nada, por que no hay datos a buscar
endif

DO case
CASE Thisform.CmbCampo.Value == "Clave"
Thisform.Grid1.RecordSource = ""
Select * from miTabla where miTabla.clave like "%" + alltrim(Thisform.TxtBusca.value) + "%" into cursor DatosEncontrados
Thisform.Grid1.RecordSource = " DatosEncontrados"

CASE Thisform.CmbCampo.Value == "Descripcion"
hisform.Grid1.RecordSource = ""
Select * from miTabla where miTabla.Descripcion like "%" + alltrim(Thisform.TxtBusca.value) + "%" into cursor DatosEncontrados
Thisform.Grid1.RecordSource = " DatosEncontrados"

CASE Thisform.CmbCampo.Value == "Familia"
hisform.Grid1.RecordSource = ""
Select * from miTabla where miTabla.Familia like "%" + alltrim(Thisform.TxtBusca.value) + "%" into cursor DatosEncontrados
Thisform.Grid1.RecordSource = " DatosEncontrados"
ENDCASE

Thisform.grid1.refresh()


********
en este caso no es tan bueno usar una vista ni parametrizada, por que le das al usuario la posibilidad de buscar en cualquier campo, se vuelve mas funcional el usar un cursor.

Saludos
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