Página 1 de 1

Ayuda con Duplicado de registros

Publicado: Jue Ene 17, 2008 7:42 pm
por programacion
Hola a todos,
Estoy haciendo un pequeño de prueba y cuando intento copiar
un registro completo de la base de datos en otro nuevo,
lo único que consigo es un error de Xailer.
Quiero copiar todos los campos de un registro de un fichero dbf (abierto con TDbfDataSet)
y hacerlo usando los nombres del TDataSet:aFields[]:cName, para que
así­ siga funcionando aunque se modifique la estructura del fichero.
El trozo de código que realiza la copia es éste:
// coger todos los campos del registro actual
oExStrFILA := ::oDbfDataSet1:GetRecord()
// Añadir un nuevo registro
::oDbfDataSet1:AddNew()
// recorrer todos los campos de la BBDD y copiarlos en el nuevo registro
FOR nInd := 1 TO len(::oDbfDataSet1:aFields)
cNombreCampo := ::oDbfDataSet1:aFields[nInd]:cName
::oDbfDataSet1:&cNombreCampo := oExStrFILA:&cNombreCampo
NEXT
He usado varios LogDebug para probar y la estructura oExStrFILA (de tipo TExStruct)
recoge los datos correctamente. La verdad, no tengo ni idea de por qué falla. Seguramente
hay alguna manera más sencilla de hacer esto, pero no se me ocurre. A ver si alguien puede ayudarme.
Falla en el primer campo que es USUARIO y el valor es "Antonio" (por eso aparece en el error)...
El fallo que me da Xailer es el siguiente: (la lí­nea 910 de código es la de la
asignación ::oDbfDataSet1:&cNombreCampo := oExStrFILA:&cNombreCampo )
----------------------- Información detallada del error -----------------------
Subsistema: BASE
Código de error: 1604
Estado: .F.
Descripción: Argument error
Operación: SWITCH
Argumentos: [ 1] = Tipo: C Valor: Antonio
Fichero:
Código error SO: 0
Pila de llamadas:
TDBFDATASET:USUARIO (1383)
TFORM1:TOOLBARDUPLICAR (910)
TTOOLBUTTON:ONCLICK (0)
(b)XTOOLBUTTON:XTOOLBUTTON (41)
TTOOLBUTTON:CLICK (0)
TTOOLBAR:COMMAND (377)
TPANEL:WMCOMMAND (253)
RUNFORM (0)
TAPPLICATION:RUN (209)
MAIN (34)
------------------ Información detallada de áreas de trabajo ------------------
Area: 1
Alias: USUARIOS
Registro: 7
Filtro:
Relación:
Orden del í­ndice: 1
Clave activa: 1
--

Ayuda con Duplicado de registros

Publicado: Sab Ene 19, 2008 12:11 am
por jrcpoli-quitar
Saludos:
Pues ahora haz ::oDbfDataSet1:SaveFrom(oExStrFILA)
José Ramón Castro
Javier Jiménez escribió:
> Hola a todos,
> Estoy haciendo un pequeño de prueba y cuando intento copiar
> un registro completo de la base de datos en otro nuevo,
> lo único que consigo es un error de Xailer.
> Quiero copiar todos los campos de un registro de un fichero dbf
> (abierto con TDbfDataSet)
> y hacerlo usando los nombres del TDataSet:aFields[]:cName, para que
> así­ siga funcionando aunque se modifique la estructura del fichero.
> El trozo de código que realiza la copia es éste:
>
> /// coger todos los campos del registro actual/
> *oExStrFILA := ::oDbfDataSet1:GetRecord()*
> /// Añadir un nuevo registro/
> *::oDbfDataSet1:AddNew()*
> /// recorrer todos los campos de la BBDD y copiarlos en el nuevo registro
> /*FOR nInd := 1 TO len(::oDbfDataSet1:aFields)
> * *cNombreCampo := ::oDbfDataSet1:aFields[nInd]:cName
> * *::oDbfDataSet1:&cNombreCampo := oExStrFILA:&cNombreCampo
> **NEXT
> *
> He usado varios LogDebug para probar y la estructura oExStrFILA (de tipo
> TExStruct)
> recoge los datos correctamente. La verdad, no tengo ni idea de por qué
> falla. Seguramente
> hay alguna manera más sencilla de hacer esto, pero no se me ocurre. A
> ver si alguien puede ayudarme.
> Falla en el primer campo que es USUARIO y el valor es "Antonio" (por eso
> aparece en el error)...
>
> El fallo que me da Xailer es el siguiente: (la lí­nea 910 de código es la
> de la
> asignación *::oDbfDataSet1:&cNombreCampo := oExStrFILA:&cNombreCampo* )
>
> ----------------------- Información detallada del error
> -----------------------
>
> Subsistema: BASE
> Código de error: 1604
> Estado: .F.
> Descripción: Argument error
> Operación: SWITCH
> Argumentos: [ 1] = Tipo: C Valor: Antonio
> Fichero:
> Código error SO: 0
>
> Pila de llamadas:
> TDBFDATASET:USUARIO (1383)
> TFORM1:TOOLBARDUPLICAR (910)
> TTOOLBUTTON:ONCLICK (0)
> (b)XTOOLBUTTON:XTOOLBUTTON (41)
> TTOOLBUTTON:CLICK (0)
> TTOOLBAR:COMMAND (377)
> TPANEL:WMCOMMAND (253)
> RUNFORM (0)
> TAPPLICATION:RUN (209)
> MAIN (34)
>
> ------------------ Información detallada de áreas de trabajo
> ------------------
>
> Area: 1
> Alias: USUARIOS
> Registro: 7
> Filtro:
> Relación:
> Orden del í­ndice: 1
> Clave activa: 1
>
>