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.

Copiar TODO un registro

Foro de Xailer profesional en español
Responder
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Copiar TODO un registro

Mensaje por Xevi »

Hay alguna manera de poder copiar todos los campos de un registro de una DBF
a otra DBF con la misma estructura...
Yo lo hago de la siguiente manera...
While ASSENTAMENTS2->( !Eof() )
ASSENTAMENTS->( DbAppend() )
ASSENTAMENTS->ASSENT := ASSENTAMENTS2->ASSENT + nAssent
ASSENTAMENTS->DATAA := ASSENTAMENTS2->DATAA
ASSENTAMENTS->COMENTARI := ASSENTAMENTS2->COMENTARI
ASSENTAMENTS->IMPORT := ASSENTAMENTS2->IMPORT
ASSENTAMENTS->DEBE := ASSENTAMENTS2->DEBE
ASSENTAMENTS->HABER := ASSENTAMENTS2->HABER
ASSENTAMENTS->ORDRE := ASSENTAMENTS2->ORDRE
ASSENTAMENTS->IVA := ASSENTAMENTS2->IVA
ASSENTAMENTS->USUARI := ASSENTAMENTS2->USUARI
ASSENTAMENTS->DOCUMENT := ASSENTAMENTS2->DOCUMENT
ASSENTAMENTS->MOV1 := ASSENTAMENTS2->MOV1
ASSENTAMENTS->MOV2 := ASSENTAMENTS2->MOV2
ASSENTAMENTS->MOV3 := ASSENTAMENTS2->MOV3
ASSENTAMENTS2->( DbSkip() )
EndDo
Pero no se si existe alguna funcion propia de xHarbour que sirva para este
menester y me evite de algun error si modifico la estructura de las DBFs y
no añado o saco el campo en este bucle.
Algo como...
While ASSENTAMENTS2->( !Eof() )
ASSENTAMENTS->( DbAppend() )
ASSENTAMENTS->Field := ASSENTAMENTS2->Field
ASSENTAMENTS2->( DbSkip() )
EndDo
Gracias.
Un Saludo,
Xevi.
Avatar de Usuario
jasm
Mensajes: 447
Registrado: Mar Jul 08, 2008 8:12 pm

Copiar TODO un registro

Mensaje por jasm »

Xevi,
Mirate las funciones FieldGet() y FieldPut()
Saludos
Jose A. Suarez
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Copiar TODO un registro

Mensaje por Xevi »

José Alfonso,
No veo en la ayuda de xHarbour esas funciones.
He visto la ayuda de Xailer, pero esas funciones creo entender que hacen
referencia a la Clase TDataField.
Yo lo necesito si se puede hacer directamente sobre un USE.
He probado...
While ASSENTAMENTS2->( !Eof() )
ASSENTAMENTS->( DbAppend() )
ASSENTAMENTS->( FieldPut() ) := ASSENTAMENTS2->( FieldGet() )
ASSENTAMENTS2->( DbSkip() )
EndDo
Un Saludo,
Xevi.
"José Alfonso Suárez Moreno" <jasm@tpvsoft.com> escribió en el mensaje de
noticias news:4727ac0e$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Xevi,
>
> Mirate las funciones FieldGet() y FieldPut()
>
> Saludos
>
> Jose A. Suarez
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

Copiar TODO un registro

Mensaje por zeasoftware »

> While ASSENTAMENTS2->( !Eof() )
> ASSENTAMENTS->( DbAppend() )
For i := 1 To ASSENTAMENTS->( FCount() )
> ASSENTAMENTS->( FieldPut(i, ASSENTAMENTS2->( FieldGet(i) ) ) )
Next
> ASSENTAMENTS2->( DbSkip(1) )
> EndDo
--
Ramón Zea
01.993.231-62-29
http://www.paginasprodigy.com/zeasoftware/
zeasoftware@prodigy.net.mx
zeasoftware@hotmail.com
ramonzea@yahoo.com
zeasoft.movil@hotmail.com
"Xevi" <xevicomas@gmail.com> escribió en el mensaje news:[email=4727b092@ozsrv2.ozlan.local...]4727b092@ozsrv2.ozlan.local...[/email]
> José Alfonso,
>
> No veo en la ayuda de xHarbour esas funciones.
> He visto la ayuda de Xailer, pero esas funciones creo entender que hacen
> referencia a la Clase TDataField.
> Yo lo necesito si se puede hacer directamente sobre un USE.
>
> He probado...
>
> While ASSENTAMENTS2->( !Eof() )
> ASSENTAMENTS->( DbAppend() )
> ASSENTAMENTS->( FieldPut() ) := ASSENTAMENTS2->( FieldGet() )
> ASSENTAMENTS2->( DbSkip() )
> EndDo
>
>
> Un Saludo,
> Xevi.
>
>
> "José Alfonso Suárez Moreno" <jasm@tpvsoft.com> escribió en el mensaje de
> noticias news:4727ac0e$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>> Xevi,
>>
>> Mirate las funciones FieldGet() y FieldPut()
>>
>> Saludos
>>
>> Jose A. Suarez
>
--
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

Copiar TODO un registro

Mensaje por zeasoftware »

igual si vas a copiar todo, puedes usar el comando
Append From .....
--
Ramón Zea
01.993.231-62-29
http://www.paginasprodigy.com/zeasoftware/
zeasoftware@prodigy.net.mx
zeasoftware@hotmail.com
ramonzea@yahoo.com
zeasoft.movil@hotmail.com
"Xevi" <xevicomas@gmail.com> escribió en el mensaje news:[email=4727b092@ozsrv2.ozlan.local...]4727b092@ozsrv2.ozlan.local...[/email]
> José Alfonso,
>
> No veo en la ayuda de xHarbour esas funciones.
> He visto la ayuda de Xailer, pero esas funciones creo entender que hacen
> referencia a la Clase TDataField.
> Yo lo necesito si se puede hacer directamente sobre un USE.
>
> He probado...
>
> While ASSENTAMENTS2->( !Eof() )
> ASSENTAMENTS->( DbAppend() )
> ASSENTAMENTS->( FieldPut() ) := ASSENTAMENTS2->( FieldGet() )
> ASSENTAMENTS2->( DbSkip() )
> EndDo
>
>
> Un Saludo,
> Xevi.
>
>
> "José Alfonso Suárez Moreno" <jasm@tpvsoft.com> escribió en el mensaje de
> noticias news:4727ac0e$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>> Xevi,
>>
>> Mirate las funciones FieldGet() y FieldPut()
>>
>> Saludos
>>
>> Jose A. Suarez
>
--
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Copiar TODO un registro

Mensaje por Xevi »

Ramón,
Gracias, funciona perfecto!!!
No puedo utilizar Append From... un campo "ASSENT" varí­a de valor para no coincidir con los que ya posee el fichero receptor.
Un Saludo,
Xevi.
"Ramón Zea" <zeasoftware@hotmail.com> escribió en el mensaje de noticias news:[email=4727c186@ozsrv2.ozlan.local...]4727c186@ozsrv2.ozlan.local...[/email]
igual si vas a copiar todo, puedes usar el comando
Append From .....
--
Ramón Zea
01.993.231-62-29
http://www.paginasprodigy.com/zeasoftware/
zeasoftware@prodigy.net.mx
zeasoftware@hotmail.com
ramonzea@yahoo.com
zeasoft.movil@hotmail.com
"Xevi" <xevicomas@gmail.com> escribió en el mensaje news:[email=4727b092@ozsrv2.ozlan.local...]4727b092@ozsrv2.ozlan.local...[/email]
> José Alfonso,
>
> No veo en la ayuda de xHarbour esas funciones.
> He visto la ayuda de Xailer, pero esas funciones creo entender que hacen
> referencia a la Clase TDataField.
> Yo lo necesito si se puede hacer directamente sobre un USE.
>
> He probado...
>
> While ASSENTAMENTS2->( !Eof() )
> ASSENTAMENTS->( DbAppend() )
> ASSENTAMENTS->( FieldPut() ) := ASSENTAMENTS2->( FieldGet() )
> ASSENTAMENTS2->( DbSkip() )
> EndDo
>
>
> Un Saludo,
> Xevi.
>
>
> "José Alfonso Suárez Moreno" <jasm@tpvsoft.com> escribió en el mensaje de
> noticias news:4727ac0e$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>> Xevi,
>>
>> Mirate las funciones FieldGet() y FieldPut()
>>
>> Saludos
>>
>> Jose A. Suarez
>
--
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Copiar TODO un registro

Mensaje por Bingen Ugaldebere »

No los he usado pero tienes en la clase tDataset dos métodos que son
TDataSet:GetRecord
Devuelve un objeto TExStruct con toda la información del registro
actual e la tabla. Un objeto TExStruc es como una matriz pero con la
ventaja de que se puede acceder a cada uno de sus miembros por su nombre
en vez de por su ordinal. En este caso los nombres de los miembros
correspondes con los nombres de los campos de la tabla.
TDataSet:SaveFrom
Salva el actual registro con la información procedente de otro DataSet.
TDataSet origen de los datos u objeto TExStruct recuperado con el método
GetRecord
que te deberí­an de servir para hacer todo ello en un solo paso.
Salu2.
Responder