JeinnerH
Publicado por Función para insertar un registro de un DW a Otro (646 intervenciones) el 19/07/2011 23:32:50
Compañeros, aquí les dejo un código que hice para insertar un registro de un DW a otro. El código está interesante.
Se ejecuta de la siguiente forma:
f_agregar_registro_dw_campos({'Campo1', 'Campo2=Campo4', 'Campo3'}, dw_Origen, <Número Registro Origen>, dw_Destino, ls_Error)
$PBExportHeader$f_agregar_registro_dw_campos.srf
global type f_agregar_registro_dw_campos from function_object
end type
forward prototypes
global function integer f_agregar_registro_dw_campos (string asa_lista_campos[], datawindow adw_fuente, integer ai_registro_fuente, datawindow adw_destino, ref string as_error)
end prototypes
global function integer f_agregar_registro_dw_campos (string asa_lista_campos[], datawindow adw_fuente, integer ai_registro_fuente, datawindow adw_destino, ref string as_error);Any lany_Valor_Origen
Integer li_Campo, li_Posicion, li_Registro_Agregado
String ls_Campo_Origen, ls_Campo_Destino
li_Registro_Agregado=0
For li_Campo=1 to UpperBound(asa_Lista_Campos)
// Verificar si el Nombre en el DW Destino es Otro.
li_Posicion=Pos(asa_Lista_Campos[li_Campo], '=')
If li_Posicion > 0 Then
// Recuperar Nombre Del Campo Origen.
ls_Campo_Origen=Left(asa_Lista_Campos[li_Campo], li_Posicion-1)
// Recuperar Nombre Del Campo Destino.
ls_Campo_Destino=Right(asa_Lista_Campos[li_Campo], li_Posicion+1)
Else
// El Nombre Del Campo en el DW Destino es el Mismo Que el Del Origen.
ls_Campo_Origen=asa_Lista_Campos[li_Campo]
ls_Campo_Destino=ls_Campo_Origen
End If
// Verificar Campo Origen Válido.
If adw_fuente.Describe(ls_Campo_Origen+'.ID') = '!' Then
as_Error='No es posible localizar el Campo('+asa_Lista_Campos[li_Campo]+') en la información de Origen'
RETURN -1
End If
// Verificar Campo Destino Válido.
If adw_destino.Describe(ls_Campo_Destino+'.ID') = '!' Then
as_Error='No es posible localizar el Campo('+asa_Lista_Campos[li_Campo]+') en la información Destino'
RETURN -1
End If
// Obtener Valor Origen.
li_Posicion=Integer(adw_fuente.Describe(ls_Campo_Origen+'.ID'))
lany_Valor_Origen=adw_fuente.Object.Data[ai_registro_fuente, li_Posicion]
If li_Registro_Agregado = 0 Then &
li_Registro_Agregado=adw_destino.InsertRow(0)
If li_Registro_Agregado <= 0 Then
as_Error='Se ha producido ERROR al agregar el registro a la información Destino'
RETURN -1
End If
// Asignar el Valor en el DW Destino.
If adw_destino.SetItem(li_Registro_Agregado, ls_Campo_Destino, lany_Valor_Origen) <= 0 Then
as_Error='No fue posible asignar el Campo('+ls_Campo_Destino+') en la información Destino'
RETURN -1
End If
Next
RETURN li_Registro_Agregado
end function
Se ejecuta de la siguiente forma:
f_agregar_registro_dw_campos({'Campo1', 'Campo2=Campo4', 'Campo3'}, dw_Origen, <Número Registro Origen>, dw_Destino, ls_Error)
$PBExportHeader$f_agregar_registro_dw_campos.srf
global type f_agregar_registro_dw_campos from function_object
end type
forward prototypes
global function integer f_agregar_registro_dw_campos (string asa_lista_campos[], datawindow adw_fuente, integer ai_registro_fuente, datawindow adw_destino, ref string as_error)
end prototypes
global function integer f_agregar_registro_dw_campos (string asa_lista_campos[], datawindow adw_fuente, integer ai_registro_fuente, datawindow adw_destino, ref string as_error);Any lany_Valor_Origen
Integer li_Campo, li_Posicion, li_Registro_Agregado
String ls_Campo_Origen, ls_Campo_Destino
li_Registro_Agregado=0
For li_Campo=1 to UpperBound(asa_Lista_Campos)
// Verificar si el Nombre en el DW Destino es Otro.
li_Posicion=Pos(asa_Lista_Campos[li_Campo], '=')
If li_Posicion > 0 Then
// Recuperar Nombre Del Campo Origen.
ls_Campo_Origen=Left(asa_Lista_Campos[li_Campo], li_Posicion-1)
// Recuperar Nombre Del Campo Destino.
ls_Campo_Destino=Right(asa_Lista_Campos[li_Campo], li_Posicion+1)
Else
// El Nombre Del Campo en el DW Destino es el Mismo Que el Del Origen.
ls_Campo_Origen=asa_Lista_Campos[li_Campo]
ls_Campo_Destino=ls_Campo_Origen
End If
// Verificar Campo Origen Válido.
If adw_fuente.Describe(ls_Campo_Origen+'.ID') = '!' Then
as_Error='No es posible localizar el Campo('+asa_Lista_Campos[li_Campo]+') en la información de Origen'
RETURN -1
End If
// Verificar Campo Destino Válido.
If adw_destino.Describe(ls_Campo_Destino+'.ID') = '!' Then
as_Error='No es posible localizar el Campo('+asa_Lista_Campos[li_Campo]+') en la información Destino'
RETURN -1
End If
// Obtener Valor Origen.
li_Posicion=Integer(adw_fuente.Describe(ls_Campo_Origen+'.ID'))
lany_Valor_Origen=adw_fuente.Object.Data[ai_registro_fuente, li_Posicion]
If li_Registro_Agregado = 0 Then &
li_Registro_Agregado=adw_destino.InsertRow(0)
If li_Registro_Agregado <= 0 Then
as_Error='Se ha producido ERROR al agregar el registro a la información Destino'
RETURN -1
End If
// Asignar el Valor en el DW Destino.
If adw_destino.SetItem(li_Registro_Agregado, ls_Campo_Destino, lany_Valor_Origen) <= 0 Then
as_Error='No fue posible asignar el Campo('+ls_Campo_Destino+') en la información Destino'
RETURN -1
End If
Next
RETURN li_Registro_Agregado
end function
Valora esta pregunta
0