Página 1 de 1

Ayuda con Browse

Publicado: Lun Abr 23, 2007 5:47 pm
por correo
Tengo un browse oDbBrowse cuyo dataset es una Base de datos de la clase
tSQLQuery .
Bien .
La base de datos es el resultado de hacer una select previa que "escoge" un
CENTRO y CODPERSON especificos
Lo hago con un metodo
METHOD SetPrgAgen(nCentro,nCodPer) CLASS TProgAge
with object ::oDbfProg
:lUpdLinked(.f.)
:Close()
:cSelect :="Select * from [PROGAGE] WHERE CENTRO = "+str(nCentro,4)+"
and CODPERSON = "+str(nCodPer,3)
:Open()
:lUpdLinked(.t.)
end with
::oDbBrowse:oDataSet:=::oDbfProg
retu nil
Esto funciona perfectamente .Ah los datos ya vienen ordenados por el campo
CENTRO + CODPERSON + HORAI
Debo hacer una edición en linea de los datos .
Para ello me creo un método Add como sigue
METHOD Add( oSender,lRepetir ) CLASS TProgAge
::nAlta := 1
with object ::otSQLProg
:lUpdLinked(.f.)
:AddNew()
:CENTRO := ::oCentro:Value
:CODPERSON := ::oDbfPrf:CODPERSON
:LUN := "S"
:MAR := "S"
:MIE := "S"
:JUE := "S"
:VIE := "S"
:SAB := "N"
:DOM := "N"
:FECHAI := ctod(" - - ")
:FECHAF := ctod(" - - ")
:COLOR := 0
:TAREA := 0
:HORAI :=" : "
:Update()
:lUpdLinked(.t.)
end with
::oDbBRowse:GoBottom()
::oDbBrowse:Edit()
retu nil
Todo va Ok
1º Crea un registro
2º Inicializa los campos como se indica
3º Graba los datos
4º Como el registro queda al final ,fuerzo el foco en el último registro y
lo edito
El problema es que al salir de la edición , el registro se queda al final y
no se "recoloca" hasta que ejecuto el método SetPrgAgen
He probado a colocarlo debajo de la última linea ( ::oDbBrowse:Edit() )
pero compruebo que el flujo de la aplicación no se corta mientras se ejecuta
el edit() .¿Como puedo incorporar la instrucción ?
Lo he intentado en el OnPostEdit() del Browse pero se ejecuta antes de la
grabación física del registro y necesito hacerlo después de la grabación
Gracias y espero que se me entienda.

Ayuda con Browse

Publicado: Mar Abr 24, 2007 11:54 am
por ignacio
Juan Jose,
Introduzca la cláusula 'ORDER BY' en su instrucción SELECT.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Juan José García" <correo@jjgsoft.biz> escribió en el mensaje
news:462cd526$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Tengo un browse oDbBrowse cuyo dataset es una Base de datos de la clase
> tSQLQuery .
> Bien .
> La base de datos es el resultado de hacer una select previa que "escoge"
> un CENTRO y CODPERSON especificos
> Lo hago con un metodo
>
> METHOD SetPrgAgen(nCentro,nCodPer) CLASS TProgAge
>
> with object ::oDbfProg
> :lUpdLinked(.f.)
> :Close()
> :cSelect :="Select * from [PROGAGE] WHERE CENTRO = "+str(nCentro,4)+"
> and CODPERSON = "+str(nCodPer,3)
> :Open()
> :lUpdLinked(.t.)
> end with
> ::oDbBrowse:oDataSet:=::oDbfProg
> retu nil
>
> Esto funciona perfectamente .Ah los datos ya vienen ordenados por el campo
> CENTRO + CODPERSON + HORAI
>
> Debo hacer una edición en linea de los datos .
> Para ello me creo un método Add como sigue
>
> METHOD Add( oSender,lRepetir ) CLASS TProgAge
> ::nAlta := 1
> with object ::otSQLProg
> :lUpdLinked(.f.)
> :AddNew()
> :CENTRO := ::oCentro:Value
> :CODPERSON := ::oDbfPrf:CODPERSON
> :LUN := "S"
> :MAR := "S"
> :MIE := "S"
> :JUE := "S"
> :VIE := "S"
> :SAB := "N"
> :DOM := "N"
> :FECHAI := ctod(" - - ")
> :FECHAF := ctod(" - - ")
> :COLOR := 0
> :TAREA := 0
> :HORAI :=" : "
> :Update()
> :lUpdLinked(.t.)
> end with
> ::oDbBRowse:GoBottom()
> ::oDbBrowse:Edit()
> retu nil
> Todo va Ok
> 1º Crea un registro
> 2º Inicializa los campos como se indica
> 3º Graba los datos
> 4º Como el registro queda al final ,fuerzo el foco en el último registro y
> lo edito
>
> El problema es que al salir de la edición , el registro se queda al final
> y no se "recoloca" hasta que ejecuto el método SetPrgAgen
> He probado a colocarlo debajo de la última linea ( ::oDbBrowse:Edit() )
> pero compruebo que el flujo de la aplicación no se corta mientras se
> ejecuta el edit() .¿Como puedo incorporar la instrucción ?
>
> Lo he intentado en el OnPostEdit() del Browse pero se ejecuta antes de la
> grabación física del registro y necesito hacerlo después de la grabación
>
> Gracias y espero que se me entienda.
>
>
>