Página 1 de 1

b

Publicado: Lun Feb 26, 2007 11:33 pm
por Jose Lopez Carrasco
Quisiera hacer una busqueda incremental en un oDBBrowse1 con una tabla
oSQLTable1 de access,
he probado con la propiedad oSeek, el metodo Seek()
y el evento:
oBrw:OnSeek := {|o,c| DbSeek( Upper( c ) ) } y se produce error area no
encontrada.
Gracias y un saludo.
Pepe.

b

Publicado: Mar Feb 27, 2007 12:39 am
por Jose Lopez Carrasco
Probando e conseguido lo siguiente
METHOD MaskEdit4cDescripcionKeyUp( oSender, nKey, nFlags ) CLASS TForm1
If !EMPTY(::oMaskEdit4cDescripcion:VALUE)
::oSQLTable1:Locate('DESCRIPCION Like
'+"'"+::oMaskEdit4cDescripcion:VALUE+"*'" )
::oDBBrowse1:Refresh()
If ::oSQLTable1:FieldGetByName("DESCRIPCION") ==
::oMaskEdit4cDescripcion:VALUE .AND. !EMPTY(::oMaskEdit4cDescripcion:VALUE)
::oDBBrowse1:SetFocus()
::oDBBrowse1:GoRightMost()
EndIf
EndIf
RETURN Nil
Ignacio es correcto o hay otra forma mejor.
Muchas gracias.
Pepe.
"Jose Lopez Carrasco" <tritoncomputer@infonegocio.com> escribió en el
mensaje news:45e36046$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> Quisiera hacer una busqueda incremental en un oDBBrowse1 con una tabla
> oSQLTable1 de access,
> he probado con la propiedad oSeek, el metodo Seek()
> y el evento:
> oBrw:OnSeek := {|o,c| DbSeek( Upper( c ) ) } y se produce error area no
> encontrada.
>
> Gracias y un saludo.
> Pepe.
>
>

b

Publicado: Mar Feb 27, 2007 10:02 am
por ignacio
José,
Basicamente se basa en el uso del método TDataSet:Locate(). Si te funciona
adelante aunque yo habría utilizado el evento OnSeek que para eso está.
Un saludo
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Jose Lopez Carrasco" <tritoncomputer@infonegocio.com> escribió en el
mensaje news:[email=45e36fce@news.xailer.com...]45e36fce@news.xailer.com...[/email]
> Probando e conseguido lo siguiente
>
> METHOD MaskEdit4cDescripcionKeyUp( oSender, nKey, nFlags ) CLASS TForm1
>
> If !EMPTY(::oMaskEdit4cDescripcion:VALUE)
> ::oSQLTable1:Locate('DESCRIPCION Like
> '+"'"+::oMaskEdit4cDescripcion:VALUE+"*'" )
> ::oDBBrowse1:Refresh()
> If ::oSQLTable1:FieldGetByName("DESCRIPCION") ==
> ::oMaskEdit4cDescripcion:VALUE .AND.
> !EMPTY(::oMaskEdit4cDescripcion:VALUE)
> ::oDBBrowse1:SetFocus()
> ::oDBBrowse1:GoRightMost()
> EndIf
> EndIf
>
> RETURN Nil
>
> Ignacio es correcto o hay otra forma mejor.
>
> Muchas gracias.
> Pepe.
>
>
>
> "Jose Lopez Carrasco" <tritoncomputer@infonegocio.com> escribió en el
> mensaje news:45e36046$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
>> Quisiera hacer una busqueda incremental en un oDBBrowse1 con una tabla
>> oSQLTable1 de access,
>> he probado con la propiedad oSeek, el metodo Seek()
>> y el evento:
>> oBrw:OnSeek := {|o,c| DbSeek( Upper( c ) ) } y se produce error area no
>> encontrada.
>>
>> Gracias y un saludo.
>> Pepe.
>>
>>
>
>

b

Publicado: Mar Feb 27, 2007 5:41 pm
por Jose Lopez Carrasco
Ignacio entonces podria quedar asi:
METHOD MaskEdit3cAuxiliarEnter( oSender, oPrevCtl ) CLASS TForm1
::oSQLTable1:Sort("AUXILIAR ASC")
// no entiendo para que sirve esta asignacion si en el metodo Change le
indicamos el valor a buscar
::oDBBrowse1:oSeek := ::oMaskEdit3cAuxiliar
::oDBBrowse1:Refresh()
RETURN Nil
METHOD MaskEdit3cAuxiliarChange( oSender ) CLASS TForm1
::oDBBrowse1:Seek( oSender:Value )
RETURN Nil
METHOD DBBrowse1Seek( oSender, cSeek ) CLASS TForm1
If LEN(cSeek) < 1
cSeek := " "
EndIf
RETURN ::oSQLTable1:Locate('AUXILIAR Like '+"'"+cSeek+"*'" )
Por favor te ruego me indiques si he hecho al mal
Gracias
Pepe :-)

b

Publicado: Mié Feb 28, 2007 10:08 am
por ignacio
José,
Lo siento pero no entiendo tu código. Es infinítamente más sencillo. Por
favor revisa en la documentación el evento OnSeek. No obstante si lo que has
hecho te funciona adelante con ello. Pruebalo.
Saludos
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Jose Lopez Carrasco" <tritoncomputer@infonegocio.com> escribió en el
mensaje news:45e45f51$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> Ignacio entonces podria quedar asi:
>
> METHOD MaskEdit3cAuxiliarEnter( oSender, oPrevCtl ) CLASS TForm1
>
> ::oSQLTable1:Sort("AUXILIAR ASC")
>
> // no entiendo para que sirve esta asignacion si en el metodo Change le
> indicamos el valor a buscar
>
> ::oDBBrowse1:oSeek := ::oMaskEdit3cAuxiliar
> ::oDBBrowse1:Refresh()
>
> RETURN Nil
>
> METHOD MaskEdit3cAuxiliarChange( oSender ) CLASS TForm1
>
> ::oDBBrowse1:Seek( oSender:Value )
>
> RETURN Nil
>
> METHOD DBBrowse1Seek( oSender, cSeek ) CLASS TForm1
>
> If LEN(cSeek) < 1
> cSeek := " "
> EndIf
>
> RETURN ::oSQLTable1:Locate('AUXILIAR Like '+"'"+cSeek+"*'" )
>
> Por favor te ruego me indiques si he hecho al mal
>
> Gracias
>
> Pepe :-)
>
>
>

b

Publicado: Mié Feb 28, 2007 11:26 am
por Jose Lopez Carrasco
Ok gracias Ignacio :-(
Pepe

b

Publicado: Mié Feb 28, 2007 11:56 am
por ignacio
José,
De la documentación:
oBrw:OnSeek := {|o,c| DbSeek( Upper( c ) ) }
En tu caso:
oBrw:OnSeek := {|o,c| oDataSet:Locate( "CAMPO LIKE '*" + c + "*'" ) //
fijate que van comillas simples adicionales
Perdoname si me equivoco, pero da la sensación que ni siquiera has leido la
ayuda que por dos veces te he dicho que vieses. Mis disculpas sino es así.
Te recomiendo igualmente que le eches un vistazo (con detenimiento) a la
propiedad TBrowse:oSeek
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Jose Lopez Carrasco" <tritoncomputer@infonegocio.com> escribió en el
mensaje news:45e558f0$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> Ok gracias Ignacio :-(
>
> Pepe
>
>

b

Publicado: Mié Feb 28, 2007 4:59 pm
por Jose Lopez Carrasco
Ignacio siento mi torpeza, pero he estado dos tardes intentando entender la
documentacion, la cual me ha costado bastente entenderla. Despues de muchas
pruebas
y tu ayuda ya lo manejo con soltura.
Perdon por hacerte perder el tiempo con preguntas simples, pues es la
primera vez que programo en windows, ya que yo soy de CLIPPER DOS.
Saludos y Gracias por todo.
"Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
news:45e55fe6$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> José,
>
> De la documentación:
>
> oBrw:OnSeek := {|o,c| DbSeek( Upper( c ) ) }
>
> En tu caso:
>
> oBrw:OnSeek := {|o,c| oDataSet:Locate( "CAMPO LIKE '*" + c + "*'" ) //
> fijate que van comillas simples adicionales
>
> Perdoname si me equivoco, pero da la sensación que ni siquiera has leido
> la ayuda que por dos veces te he dicho que vieses. Mis disculpas sino es
> así. Te recomiendo igualmente que le eches un vistazo (con detenimiento) a
> la propiedad TBrowse:oSeek
>
> Un saludo,
>
>
> --
> Ignacio Ortiz de Zúñiga
> http://www.xailer.com
>
>
> "Jose Lopez Carrasco" <tritoncomputer@infonegocio.com> escribió en el
> mensaje news:45e558f0$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
>> Ok gracias Ignacio :-(
>>
>> Pepe
>>
>>
>
>