Página 1 de 1
Copiar TODO un registro
Publicado: Mar Oct 30, 2007 11:03 pm
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.
Copiar TODO un registro
Publicado: Mar Oct 30, 2007 11:11 pm
por jasm
Xevi,
Mirate las funciones FieldGet() y FieldPut()
Saludos
Jose A. Suarez
Copiar TODO un registro
Publicado: Mar Oct 30, 2007 11:30 pm
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
Copiar TODO un registro
Publicado: Mié Oct 31, 2007 12:41 am
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
>
--
Copiar TODO un registro
Publicado: Mié Oct 31, 2007 12:42 am
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
>
--
Copiar TODO un registro
Publicado: Mié Oct 31, 2007 8:11 am
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
>
--
Copiar TODO un registro
Publicado: Mié Oct 31, 2007 8:51 am
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.