Página 1 de 1

Edicin de tabla por columnas .Como controlar la edicin ?

Publicado: Lun Dic 12, 2005 6:12 pm
por correo
Estoy editando una tabla de 2 campos con la clase TDBBrowse
Al pulsar un botón se lanza un evento ::ADD(oSender) escrito por mi
En este evento:
1º Creo un registro en blanco AddNew()
2º Hago un GoTop() en el TDBBrowse
3º Lanzo el método Edit()
En la 1º columna he introducido un control de existencia de valor en el
evento ONPostEdit() de la columna.
Me pasa lo siguiente :
- Este evento no se evalua al cambiar la 1ª columna ,sino que se evalua
al editar la 2ª .
- De todas formas se me graba el valor en la Base de datos aunque sea
duplicado
- Al producirse la grabación la fila se me coloca en la posición que le
corresponda en el índice .Si llamo sin más al metodo TDBBrowse:Edit() ,me
edita la fila que ha quedado en la primera posición (esto hasta cierto
punto es lógico)
¿En qué evento debo introducir el control para que no pase de columna si el
resultado es falso ?
Un saludo .Gracias

Edicin de tabla por columnas .Como controlar la edicin ?

Publicado: Mar Dic 13, 2005 8:25 am
por Xevi
Juan José,
Revisa bien que el OnPostEdit() pertenezca a la 1a columna y no a la segunda
o que no sea que pertenezca al TDBBrowse en lugar de alguna columna.
Yo lo estoy utilizando sin ningún problema, respondiendo a la columna que
pertenezca el OnPostEdit.
Un Saludo,
Xevi.
"Juan José García" <correo@jjgsoft.biz> escribió en el mensaje
news:439daf75$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Estoy editando una tabla de 2 campos con la clase TDBBrowse
>
> Al pulsar un botón se lanza un evento ::ADD(oSender) escrito por mi
>
> En este evento:
> 1º Creo un registro en blanco AddNew()
> 2º Hago un GoTop() en el TDBBrowse
> 3º Lanzo el método Edit()
>
> En la 1º columna he introducido un control de existencia de valor en el
> evento ONPostEdit() de la columna.
>
> Me pasa lo siguiente :
> - Este evento no se evalua al cambiar la 1ª columna ,sino que se evalua
> al editar la 2ª .
> - De todas formas se me graba el valor en la Base de datos aunque sea
> duplicado
> - Al producirse la grabación la fila se me coloca en la posición que le
> corresponda en el índice .Si llamo sin más al metodo TDBBrowse:Edit() ,me
> edita la fila que ha quedado en la primera posición (esto hasta cierto
> punto es lógico)
>
> ¿En qué evento debo introducir el control para que no pase de columna si
> el resultado es falso ?
>
> Un saludo .Gracias
>
>
>

Edicin de tabla por columnas .Como controlar la edicin ?

Publicado: Mar Dic 13, 2005 10:12 am
por ignacio
Juan José,
Tenemos un ejemplo muy completo de edición dentro de un Browse en
samplesDbfBuilder. Si después de verlo piensa que el error sigue ahí,
simplemente indiquenos como reproducirlo con ese mismo ejemplo. Gracias por
su colaboración.
Un saludo,
"Juan José García" <correo@jjgsoft.biz> escribió en el mensaje
news:439daf75$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Estoy editando una tabla de 2 campos con la clase TDBBrowse
>
> Al pulsar un botón se lanza un evento ::ADD(oSender) escrito por mi
>
> En este evento:
> 1º Creo un registro en blanco AddNew()
> 2º Hago un GoTop() en el TDBBrowse
> 3º Lanzo el método Edit()
>
> En la 1º columna he introducido un control de existencia de valor en el
> evento ONPostEdit() de la columna.
>
> Me pasa lo siguiente :
> - Este evento no se evalua al cambiar la 1ª columna ,sino que se evalua
> al editar la 2ª .
> - De todas formas se me graba el valor en la Base de datos aunque sea
> duplicado
> - Al producirse la grabación la fila se me coloca en la posición que le
> corresponda en el índice .Si llamo sin más al metodo TDBBrowse:Edit() ,me
> edita la fila que ha quedado en la primera posición (esto hasta cierto
> punto es lógico)
>
> ¿En qué evento debo introducir el control para que no pase de columna si
> el resultado es falso ?
>
> Un saludo .Gracias
>
>

Edicin de tabla por columnas .Como controlar la edicin ?

Publicado: Mar Dic 13, 2005 4:57 pm
por correo
Ignacio,
Efectivamente el ejemplo es clarificador ,pero no resuelve mi cuestión
En el ejemplo no se controla que el usuario pueda llamar a varios campos con
el mismo nombre
En realidad hay un método ,este que te remito que supuestamente lo haría
pero que no se le llama de ningún sitio del programa .
Por lo que conozco de Xailer el Evento EditOnExit no existe en el TBRWCOLUMN
¿Cómo lo hago?
METHOD ColNameGridEditOnExit( oSender, oNextCtl ) CLASS TForm1
Local Value
local nAt
Value := Alltrim( oSender:Value )
if !Empty( Value )
nAt := Ascan( ::oArrayBrowse1:aArrayData, {|v,e| v[ 1 ] == Value } )
if nAt > 0 .and. nAt != ::oArrayBrowse1:nArrayAt
MsgInfo( "Ya existe una columna con dicho nombre" )
oSender:Value := ""
RETURN .f.
else
oSender:Value := Value
endif
endif
RETURN .T.
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:439e909a$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Juan José,
>
> Tenemos un ejemplo muy completo de edición dentro de un Browse en
> samplesDbfBuilder. Si después de verlo piensa que el error sigue ahí,
> simplemente indiquenos como reproducirlo con ese mismo ejemplo. Gracias
> por su colaboración.
>
> Un saludo,
>
> "Juan José García" <correo@jjgsoft.biz> escribió en el mensaje
> news:439daf75$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> Estoy editando una tabla de 2 campos con la clase TDBBrowse
>>
>> Al pulsar un botón se lanza un evento ::ADD(oSender) escrito por mi
>>
>> En este evento:
>> 1º Creo un registro en blanco AddNew()
>> 2º Hago un GoTop() en el TDBBrowse
>> 3º Lanzo el método Edit()
>>
>> En la 1º columna he introducido un control de existencia de valor en el
>> evento ONPostEdit() de la columna.
>>
>> Me pasa lo siguiente :
>> - Este evento no se evalua al cambiar la 1ª columna ,sino que se
>> evalua al editar la 2ª .
>> - De todas formas se me graba el valor en la Base de datos aunque sea
>> duplicado
>> - Al producirse la grabación la fila se me coloca en la posición que
>> le corresponda en el índice .Si llamo sin más al metodo TDBBrowse:Edit()
>> ,me edita la fila que ha quedado en la primera posición (esto hasta
>> cierto punto es lógico)
>>
>> ¿En qué evento debo introducir el control para que no pase de columna si
>> el resultado es falso ?
>>
>> Un saludo .Gracias
>>
>>
>
>

Edicin de tabla por columnas .Como controlar la edicin ?

Publicado: Mié Dic 14, 2005 11:21 am
por ignacio
Juan José,
> En el ejemplo no se controla que el usuario pueda llamar a varios campos
> con el mismo nombre
No te entiendo y lo he releido un montón de veces. Lo siento. Por favor
modifica el ejemplo con lo que desees hacer y me lo mandas.
Un saludo,
"Juan José García" <correo@jjgsoft.biz> escribió en el mensaje
news:439eef85$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Ignacio,
>
> Efectivamente el ejemplo es clarificador ,pero no resuelve mi cuestión
> En el ejemplo no se controla que el usuario pueda llamar a varios campos
> con el mismo nombre
> En realidad hay un método ,este que te remito que supuestamente lo haría
> pero que no se le llama de ningún sitio del programa .
> Por lo que conozco de Xailer el Evento EditOnExit no existe en el
> TBRWCOLUMN
> ¿Cómo lo hago?
>
> METHOD ColNameGridEditOnExit( oSender, oNextCtl ) CLASS TForm1
>
> Local Value
> local nAt
>
> Value := Alltrim( oSender:Value )
>
> if !Empty( Value )
> nAt := Ascan( ::oArrayBrowse1:aArrayData, {|v,e| v[ 1 ] == Value } )
> if nAt > 0 .and. nAt != ::oArrayBrowse1:nArrayAt
> MsgInfo( "Ya existe una columna con dicho nombre" )
> oSender:Value := ""
> RETURN .f.
> else
> oSender:Value := Value
> endif
> endif
>
> RETURN .T.
>
> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
> news:439e909a$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> Juan José,
>>
>> Tenemos un ejemplo muy completo de edición dentro de un Browse en
>> samplesDbfBuilder. Si después de verlo piensa que el error sigue ahí,
>> simplemente indiquenos como reproducirlo con ese mismo ejemplo. Gracias
>> por su colaboración.
>>
>> Un saludo,
>>
>> "Juan José García" <correo@jjgsoft.biz> escribió en el mensaje
>> news:439daf75$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>> Estoy editando una tabla de 2 campos con la clase TDBBrowse
>>>
>>> Al pulsar un botón se lanza un evento ::ADD(oSender) escrito por mi
>>>
>>> En este evento:
>>> 1º Creo un registro en blanco AddNew()
>>> 2º Hago un GoTop() en el TDBBrowse
>>> 3º Lanzo el método Edit()
>>>
>>> En la 1º columna he introducido un control de existencia de valor en el
>>> evento ONPostEdit() de la columna.
>>>
>>> Me pasa lo siguiente :
>>> - Este evento no se evalua al cambiar la 1ª columna ,sino que se
>>> evalua al editar la 2ª .
>>> - De todas formas se me graba el valor en la Base de datos aunque sea
>>> duplicado
>>> - Al producirse la grabación la fila se me coloca en la posición que
>>> le corresponda en el índice .Si llamo sin más al metodo TDBBrowse:Edit()
>>> ,me edita la fila que ha quedado en la primera posición (esto hasta
>>> cierto punto es lógico)
>>>
>>> ¿En qué evento debo introducir el control para que no pase de columna si
>>> el resultado es falso ?
>>>
>>> Un saludo .Gracias
>>>
>>>
>>
>>
>
>