Realizar mantenimiento dbf
Publicado: Sab Mar 26, 2005 3:28 am
Hola,
Estoy preparando un mantenimiento de una dbf a través de dataset y un dbnavigator y me estoy encontrando con algunos problemillas que os quiero comentar.
1.- El mantenimiento tiene una serie de DBCheckbox con atajos de teclado y me he fijado que aunque no esté en modo de edición, si pulso el atajo del teclado, el checkbox se marca y se desmarca. Esto no pasa si intento marcarlo con el ratón. De todas formas, si me muevo a otro registro y vuelvo al anterior, las marcas que he puesto con los atajos desaparecen. No es un problema muy grave, pero sí que puede resultar un tanto confuso.
2.- ¿Cuando estoy editando un campo, hay alguna manera de saber si es un registro nuevo o estoy modificando uno que ya existe?. En mi ejemplo, el campo NIF no se puede repetir y quiero que si estoy en edición lo salte. Para hacerlo he tenido que crear un DATA lInsertar que voy cambiando a mano, pero mejor si me lo dice Xailer.
3.- Para saltarme el campo NIf si estoy editando, el método OnCheckState me devuelve ::lInsertar. Así si estoy añadiendo puedo entrar y si estoy modificando no. Me he dado cuenta de que si lInsertar:= .f. y pulso sobre el campo Nif, el texto se pone en gris (desactivado). ¿Hay alguna forma de que el texto salga en negro? he probado con la propiedad nClrText pero no me hace caso.
4.- Para comprobar si el nif que me introducen ya existe, utilizo el evento OnExit, que por cierto, en la documentación pone que devuelve Nil y realmente devuelve .t. o .f. para indicarnos si pasamos al siguiente control o no.
5.- En el OnExit intento averiguar el valor que me han introducido en el DbEdit a través del método VarGet(), pero me da siempre una cadena vacía. oSender:FieldGet() tampoco me funciona.
6.- Al utilizar OnExit y estar en modo de visualización el programa se empeña en validar el OnExit cada vez que el DBEdit pierde el foco. ¿Hay alguna forma de saber si estoy visualizando o editando?. La idea es que si estoy visualizando, OnExit devuelva siempre .t. y si estoy modificando o añadiendo se procese.
7.- Tengo un DBListbox con una serie de valores cargados y cuando añado un nuevo registro, me mantiene el valor del registro que tenía seleccionado antes de insertar. ¿No se tendría que poner en blanco como el resto de los campos, o en todo caso, con el primer valor de la lista?
8.- Si cambio la propiedad lPushed de un botón desde el IDE, me hace caso, pero la visualiza siempre con el valor .f.
9.- La creación del formulario ha sido muy rápida, pero he notado que se pierde mucho tiempo en asignar a cada DBEdit el valor. Un pequeño cambio en el IDE que lo haría más cómodo es que el combobox de la propiedad oDataField del DBEdit se desplegara por completo porque tal y como está ahora sólo deja ver 8 ó 9 campos de la dbf y hay que estar bajando con la barra de scroll constantemente.
10.- Me he fijado que puedo cambiar la propiedad cVarName de tal manera que le puedo dar el mismo nombre a dos objetos distintos (un label y un edit) ¿No dará problemar esto?.
11.- Me parece que el evento OnChange del dataset se dispara por primera vez antes de estar construidos los DataControl asociados, por lo tanto si intento llamar a algún datacontrol dentro del OnChange me da un error al iniciar el programa.
12.- ¿Cómo se hacía para poder pasar de un campo a otro con Enter en lugar de con Tab?
Bueno, de momento nada más.
Un saludico,
Fredy
---
avast! Antivirus: Saliente mensaje limpio.
Base de datos de Virus (VPS): 0512-1, 25/03/2005
Comprobado en: 26/03/2005 3:26:14
avast! tiene los derechos reservados (c) 1988-2004 ALWIL Software.
http://www.avast.com
Attached files ejemplo.zip (5.1 KB)Â
Estoy preparando un mantenimiento de una dbf a través de dataset y un dbnavigator y me estoy encontrando con algunos problemillas que os quiero comentar.
1.- El mantenimiento tiene una serie de DBCheckbox con atajos de teclado y me he fijado que aunque no esté en modo de edición, si pulso el atajo del teclado, el checkbox se marca y se desmarca. Esto no pasa si intento marcarlo con el ratón. De todas formas, si me muevo a otro registro y vuelvo al anterior, las marcas que he puesto con los atajos desaparecen. No es un problema muy grave, pero sí que puede resultar un tanto confuso.
2.- ¿Cuando estoy editando un campo, hay alguna manera de saber si es un registro nuevo o estoy modificando uno que ya existe?. En mi ejemplo, el campo NIF no se puede repetir y quiero que si estoy en edición lo salte. Para hacerlo he tenido que crear un DATA lInsertar que voy cambiando a mano, pero mejor si me lo dice Xailer.
3.- Para saltarme el campo NIf si estoy editando, el método OnCheckState me devuelve ::lInsertar. Así si estoy añadiendo puedo entrar y si estoy modificando no. Me he dado cuenta de que si lInsertar:= .f. y pulso sobre el campo Nif, el texto se pone en gris (desactivado). ¿Hay alguna forma de que el texto salga en negro? he probado con la propiedad nClrText pero no me hace caso.
4.- Para comprobar si el nif que me introducen ya existe, utilizo el evento OnExit, que por cierto, en la documentación pone que devuelve Nil y realmente devuelve .t. o .f. para indicarnos si pasamos al siguiente control o no.
5.- En el OnExit intento averiguar el valor que me han introducido en el DbEdit a través del método VarGet(), pero me da siempre una cadena vacía. oSender:FieldGet() tampoco me funciona.
6.- Al utilizar OnExit y estar en modo de visualización el programa se empeña en validar el OnExit cada vez que el DBEdit pierde el foco. ¿Hay alguna forma de saber si estoy visualizando o editando?. La idea es que si estoy visualizando, OnExit devuelva siempre .t. y si estoy modificando o añadiendo se procese.
7.- Tengo un DBListbox con una serie de valores cargados y cuando añado un nuevo registro, me mantiene el valor del registro que tenía seleccionado antes de insertar. ¿No se tendría que poner en blanco como el resto de los campos, o en todo caso, con el primer valor de la lista?
8.- Si cambio la propiedad lPushed de un botón desde el IDE, me hace caso, pero la visualiza siempre con el valor .f.
9.- La creación del formulario ha sido muy rápida, pero he notado que se pierde mucho tiempo en asignar a cada DBEdit el valor. Un pequeño cambio en el IDE que lo haría más cómodo es que el combobox de la propiedad oDataField del DBEdit se desplegara por completo porque tal y como está ahora sólo deja ver 8 ó 9 campos de la dbf y hay que estar bajando con la barra de scroll constantemente.
10.- Me he fijado que puedo cambiar la propiedad cVarName de tal manera que le puedo dar el mismo nombre a dos objetos distintos (un label y un edit) ¿No dará problemar esto?.
11.- Me parece que el evento OnChange del dataset se dispara por primera vez antes de estar construidos los DataControl asociados, por lo tanto si intento llamar a algún datacontrol dentro del OnChange me da un error al iniciar el programa.
12.- ¿Cómo se hacía para poder pasar de un campo a otro con Enter en lugar de con Tab?
Bueno, de momento nada más.
Un saludico,
Fredy
---
avast! Antivirus: Saliente mensaje limpio.
Base de datos de Virus (VPS): 0512-1, 25/03/2005
Comprobado en: 26/03/2005 3:26:14
avast! tiene los derechos reservados (c) 1988-2004 ALWIL Software.
http://www.avast.com
Attached files ejemplo.zip (5.1 KB)Â