In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Edicin de tabla por columnas .Como controlar la edicin ?

Foro público de Xailer en español
Responder
correo
Mensajes: 109
Registrado: Mar Nov 22, 2005 7:15 pm

Edicin de tabla por columnas .Como controlar la edicin ?

Mensaje 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
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Edicin de tabla por columnas .Como controlar la edicin ?

Mensaje 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
>
>
>
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9463
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Edicin de tabla por columnas .Como controlar la edicin ?

Mensaje 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
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
correo
Mensajes: 109
Registrado: Mar Nov 22, 2005 7:15 pm

Edicin de tabla por columnas .Como controlar la edicin ?

Mensaje 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
>>
>>
>
>
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9463
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Edicin de tabla por columnas .Como controlar la edicin ?

Mensaje 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
>>>
>>>
>>
>>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder