Página 1 de 1

Como duplicar un registro con el metodo oTDataSet:Clone()

Publicado: Mié Mar 29, 2006 5:38 pm
por correo
Me gustaría incorporar una opción de duplicado de registros
Que orden debo seguir con los métodos
Esto no parece funcionar
oNewDataSet := oDbfData:Clone()
oDbfData:New()
oDbfData:SaveFrom(oNewDataSet)
oDbfData:Update()
No se deberia crear un nuevo registro identico ?
Muchas Gracias
Juan José García

Como duplicar un registro con el metodo oTDataSet:Clone()

Publicado: Mié Mar 29, 2006 6:15 pm
por ignacio
Juan Jose,
Me temo que no:
1) oDbfData:New()
Esto no tiene ningún sentido. Supongo que lo querias hacer es
oDbfData:AddNew()
2) oDbfData:SaveFrom() no esta pensado para ser utilizado en operaciones de
edición a través de AddNew | Edit.
Siguiendo tu esquema de crear dos datasets:
WITH OBJECT oDbfData
oNewDataSet := :Clone()
IF :Append()
:SaveFrom( oNewDataSet )
:RecUnlock()
ENDIF
oNewDataSet:End()
END WITH
No obstante a mi no me gusta este sisema ya que supone una apertura
innecesaria de la tabla dos veces y además tienes el problema adicional de
que en el nuevo DataSet es muy probable que no veas los cambios
inmediatamente.
Yo lo habría hecho utilizando el método GetRecord que te devuelve en un
objeto TExStruct los datos del registro actual y luego habría añadido con
dicha información. Es cierto que el método SaveFrom() no admite como
parametro más que un TDataSet, para ya está modificado para que admita
también un objeto TexStruct. Estará en la próxima actualización.
Un saludo,
"Juan José García" <correo@jjgsoft.biz> escribió en el mensaje
news:442aa9df$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Me gustaría incorporar una opción de duplicado de registros
> Que orden debo seguir con los métodos
>
> Esto no parece funcionar
>
> oNewDataSet := oDbfData:Clone()
> oDbfData:New()
> oDbfData:SaveFrom(oNewDataSet)
> oDbfData:Update()
>
> No se deberia crear un nuevo registro identico ?
>
> Muchas Gracias
>
> Juan José García
>

Como duplicar un registro con el metodo oTDataSet:Clone()

Publicado: Mié Mar 29, 2006 6:46 pm
por correo
Gracias por la aclaración .El ejemplo me sirció
"Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
news:442ab289$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Juan Jose,
>
> Me temo que no:
>
> 1) oDbfData:New()
>
> Esto no tiene ningún sentido. Supongo que lo querias hacer es
> oDbfData:AddNew()
>
> 2) oDbfData:SaveFrom() no esta pensado para ser utilizado en operaciones
> de edición a través de AddNew | Edit.
>
> Siguiendo tu esquema de crear dos datasets:
>
> WITH OBJECT oDbfData
> oNewDataSet := :Clone()
> IF :Append()
> :SaveFrom( oNewDataSet )
> :RecUnlock()
> ENDIF
> oNewDataSet:End()
> END WITH
>
> No obstante a mi no me gusta este sisema ya que supone una apertura
> innecesaria de la tabla dos veces y además tienes el problema adicional de
> que en el nuevo DataSet es muy probable que no veas los cambios
> inmediatamente.
>
> Yo lo habría hecho utilizando el método GetRecord que te devuelve en un
> objeto TExStruct los datos del registro actual y luego habría añadido con
> dicha información. Es cierto que el método SaveFrom() no admite como
> parametro más que un TDataSet, para ya está modificado para que admita
> también un objeto TexStruct. Estará en la próxima actualización.
>
> Un saludo,
>
> "Juan José García" <correo@jjgsoft.biz> escribió en el mensaje
> news:442aa9df$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> Me gustaría incorporar una opción de duplicado de registros
>> Que orden debo seguir con los métodos
>>
>> Esto no parece funcionar
>>
>> oNewDataSet := oDbfData:Clone()
>> oDbfData:New()
>> oDbfData:SaveFrom(oNewDataSet)
>> oDbfData:Update()
>>
>> No se deberia crear un nuevo registro identico ?
>>
>> Muchas Gracias
>>
>> Juan José García
>>
>
>