Página 1 de 1

¿Es correcto esta forma de utilizar el Load?

Publicado: Vie Oct 05, 2007 2:00 pm
por jrcpoli-quitar
Saludos:
Tengo un formulario que se utiliza para meter datos casi de forma
continua, algunos campos de dicho formulario una vez que son
introducidos por primera vez son casi repetitivos, en el formulario he
puesto tres botones uno de ellos es "Nuevo", otro "Grabar" y otro
"Cancelar" de forma que cuando se quiere dar de alta un registro nuevo
pulsamos "Nuevo" y una vez introducido los datos pulsamos "Grabar" o si
queremos anular la opción de alta de registro pulso "Cancelar", el
problema es que cuando pulso "Nuevo" algunos campos pierden el valor
introducido la primera vez y vuelven a presenta la fecha actual por
ejemplo, con lo cual el operador tiene que volver a poner de nuevo los
valores que son los mismos, he encontrado una forma de solucionarlo pero
no se si es correcta y por eso es que pregunto por si hubiera otra forma
mas correcta de hacerlo, hago esto cuando se pulsa el botón "Nuevo".
METHOD NuevaPalomaClick( oSender ) CLASS TFormIndiv
*
::Desactivar() //Desactiva algunos botones mientras está en modo AddNew
*
** Activamos en modo AddNew
WITH OBJECT ::oDbfIndividual
*
:AddNew()
:Load()
*
** Ponemos lAnadir a True porque estamos añadiendo
::lAnadir := :lOnAppend
*
END
*
** Si se puede añadir pone el foco en n_Conc
IF ::lAnadir
::oN_Conc:SetFocus()
ENDIF
*
RETURN Nil
lAnadir es una data que empleo en todo el formulario para saber en que
estado esta.
Según la Ayuda de Load() dice:
Este método es interamente llamado por el TDataSet cada vez que entra en
modo edición a través de los métodos AddNew o Edit. (internamente está
mal escrito en la ayuda)
Pero no me muestra lo último introducido.
Espero que alguien me ilumine o me diga como hacerlo o por el contrario
me diga que es correcto lo que hago.
José Ramón Castro.

¿Es correcto esta forma de utilizar el Load?

Publicado: Vie Oct 05, 2007 8:21 pm
por ignacio
José Ramón,
Es muy extraño que tengas que utilizar el método Load() directamente si
utilizas los métodos AddNew(), Edit() y Replace() ya que los propios métodos
lo hacen internamente. Load() lo único que hace es cargar los buffers de
edición de los TDataField con los valores del registro en curso, y al mismo
tiempo actualiza cualquier Datacontrol que esté vinculado con algún
TDataField. Por lo tanto podrías usarlo sin problemas, pero has de tener en
cuenta que realmente estás cargando la información del registro actual
(Recno()) que a lo mejor no es el que tu quieres. Eso depende de la lógica
de tu programa
Te recomiendo que utilices mejor mejor la propiedad TDataField:DefValue.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"José Ramón Castro Polinio" <jrcpoli-quitarpara_envio]"@terra.es> escribió
en el mensaje news:4706279a$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Saludos:
>
> Tengo un formulario que se utiliza para meter datos casi de forma
> continua, algunos campos de dicho formulario una vez que son introducidos
> por primera vez son casi repetitivos, en el formulario he puesto tres
> botones uno de ellos es "Nuevo", otro "Grabar" y otro "Cancelar" de forma
> que cuando se quiere dar de alta un registro nuevo pulsamos "Nuevo" y una
> vez introducido los datos pulsamos "Grabar" o si queremos anular la opción
> de alta de registro pulso "Cancelar", el problema es que cuando pulso
> "Nuevo" algunos campos pierden el valor introducido la primera vez y
> vuelven a presenta la fecha actual por ejemplo, con lo cual el operador
> tiene que volver a poner de nuevo los valores que son los mismos, he
> encontrado una forma de solucionarlo pero no se si es correcta y por eso
> es que pregunto por si hubiera otra forma mas correcta de hacerlo, hago
> esto cuando se pulsa el botón "Nuevo".
>
> METHOD NuevaPalomaClick( oSender ) CLASS TFormIndiv
> *
> ::Desactivar() //Desactiva algunos botones mientras está en modo AddNew
> *
> ** Activamos en modo AddNew
> WITH OBJECT ::oDbfIndividual
> *
> :AddNew()
> :Load()
> *
> ** Ponemos lAnadir a True porque estamos añadiendo
> ::lAnadir := :lOnAppend
> *
> END
> *
> ** Si se puede añadir pone el foco en n_Conc
> IF ::lAnadir
> ::oN_Conc:SetFocus()
> ENDIF
> *
> RETURN Nil
>
> lAnadir es una data que empleo en todo el formulario para saber en que
> estado esta.
>
> Según la Ayuda de Load() dice:
> Este método es interamente llamado por el TDataSet cada vez que entra en
> modo edición a través de los métodos AddNew o Edit. (internamente está mal
> escrito en la ayuda)
>
> Pero no me muestra lo último introducido.
>
> Espero que alguien me ilumine o me diga como hacerlo o por el contrario me
> diga que es correcto lo que hago.
>
> José Ramón Castro.