Power Builder - AYUDA URGENTE GREACION DE REGISTROS

 
Vista:
sin imagen de perfil

AYUDA URGENTE GREACION DE REGISTROS

Publicado por Edgar (87 intervenciones) el 30/11/2005 19:32:49
Amigos del foro necesito su ayuda miren me encuentro migrando 2 tablas de distintos servidores para la cual me pidireon me cree 2 datawindows tipo Grid para obtener la informacion de la tabla 1 origen (datawindow1) y de la tabla 2 en donde se va a migrar destino(datawindow2).
Yo me cree la funcion de migracion considerando el tipo de dato hasta ahi ningun problema.
Eje: ESTE ES EL SCRIPT DE TODO LA FUNCION DE MIGRACION POR FAVOR INDIQUEMEN QUE CAMBIO DEBO PONER Y DONDE VA EL FOR MUCHAS GRACIAS
//Declaracion de variables
string ls_nulo,ls_codfac,ls_codprd,ls_desprog
long ll_aux, ll_fila,ll_secuencial
integer li_indice
//Creacion de un Datastore
datastore lds_origen

setnull (ls_nulo)

lds_origen = create datastore
lds_origen.dataobject='d_mig_l_migracion_recuperacion_anterior'
adw_destino.dataobject='d_mig_m_migracion_recuperacion_nueva'

lds_origen.SetTransObject (sqlca_warehouse)
adw_destino.SetTransObject (sqlca)

lds_origen.Retrieve(adt_fecha_inicial,adt_fecha_final)

li_indice = 0

//Secuencial
SELECT MAX(convert(int,rec_codrec))
INTO :ll_secuencial
FROM dbo.rec_recuperacion using sqlca;

if sqlca.sqlcode <> 0 then
return sqlca.sqlerrtext
end if

IF IsNull(ll_secuencial) THEN ll_secuencial = 0

for ll_aux = 1 to lds_origen.RowCount()
ll_fila= adw_destino.InsertRow(0)
li_indice ++
ll_secuencial ++
adw_destino.object.rec_codrec[ll_fila] = string(ll_secuencial)
adw_destino.SetItem(ll_fila,'fac_codfacrec',lds_origen.GetItemString(ll_aux,'rec_toperacion'))
adw_destino.SetItem(ll_fila,'rec_numcrerec',lds_origen.GetItemString(ll_aux,'credito_rec'))
adw_destino.SetItem(ll_fila,'rec_numtrarec',lds_origen.GetItemNumber(ll_aux,'rec_tramite'))
adw_destino.SetItem(ll_fila,'rec_numoperec',lds_origen.GetItemNumber(ll_aux,'rec_operacion'))
adw_destino.SetItem(ll_fila,'rec_numtraant',lds_origen.GetItemNumber(ll_aux,'tipomodalidad_rec'))
adw_destino.SetItem(ll_fila,'cii_codcii',lds_origen.GetItemString(ll_aux,'ciiu_rec'))
adw_destino.SetItem(ll_fila,'rec_fecrec',lds_origen.GetItemDateTime(ll_aux,'fecha_rec'))
adw_destino.SetItem(ll_fila,'rec_fecapl',lds_origen.GetItemDatetime(ll_aux,'fecha_mov_rec'))
adw_destino.SetItem(ll_fila,'mod_codmod',lds_origen.GetItemString(ll_aux,'mecanismo_rec'))
// adw_destino.SetItem(ll_fila,'mon_codmon',String(lds_origen.GetItemNumber(ll_aux,'moneda_rec')))
adw_destino.SetItem(ll_fila,'mon_codmon',uf_mig_auxiliar_moneda(String(lds_origen.GetItemNumber(ll_aux,'moneda_rec'))))
// adw_destino.SetItem(ll_fila,'ofi_codofipro',String(lds_origen.GetItemNumber(ll_aux,'agencia_rec')))
// adw_destino.SetItem(ll_fila,'ofi_codofitra',String(lds_origen.GetItemNumber(ll_aux,'rec_oficina_tramite')))
adw_destino.SetItem(ll_fila,'ofi_codofipro',uf_mig_auxiliar_oficina(String(lds_origen.GetItemNumber(ll_aux,'agencia_rec')),gs_codemp))
adw_destino.SetItem(ll_fila,'ofi_codofitra',uf_mig_auxiliar_oficina(String(lds_origen.GetItemNumber(ll_aux,'rec_oficina_tramite')),gs_codemp))
adw_destino.SetItem(ll_fila,'pro_codpro',String(lds_origen.GetItemNumber(ll_aux,'codgeo')))
adw_destino.SetItem(ll_fila,'prd_codprd',lds_origen.GetItemString(ll_aux,'producto_rec'))
// adw_destino.SetItem(ll_fila,'sjc_codigoifi',lds_origen.GetItemNumber(ll_aux,'ifi_rec'))
adw_destino.SetItem(ll_fila,'sjc_codigoifi',uf_mig_auxiliar_cliente(lds_origen.GetItemNumber(ll_aux,'ifi_rec')))
// adw_destino.SetItem(ll_fila,'sjc_codigobf',lds_origen.GetItemNumber(ll_aux,'empresa_rec'))
adw_destino.SetItem(ll_fila,'sjc_codigobf',uf_mig_auxiliar_cliente(lds_origen.GetItemNumber(ll_aux,'empresa_rec')))
adw_destino.SetItem(ll_fila,'lir_codlir',lds_origen.GetItemString(ll_aux,'ofi_rec'))
adw_destino.SetItem(ll_fila,'lra_codlra',lds_origen.GetItemString(ll_aux,'ofi1_rec'))
adw_destino.SetItem(ll_fila,'rec_secuen',lds_origen.GetItemNumber(ll_aux,'rec_secuencial'))
adw_destino.SetItem(ll_fila,'rec_cotiza',lds_origen.GetItemNumber(ll_aux,'cotizacion_rec'))
adw_destino.SetItem(ll_fila,'rec_plazo',lds_origen.GetItemNumber(ll_aux,'plazo_rec'))
adw_destino.SetItem(ll_fila,'rec_efecti',lds_origen.GetItemString(ll_aux,'efectivo_rec'))
adw_destino.SetItem(ll_fila,'rec_identi',lds_origen.GetItemString(ll_aux,'identidad_rec'))
adw_destino.SetItem(ll_fila,'rec_numcresuc',lds_origen.GetItemString(ll_aux,'credito_anterior_rec'))
adw_destino.SetItem(ll_fila,'rec_codfacsisant',lds_origen.GetItemString(ll_aux,'mecanismo_respaldo_rec'))
adw_destino.SetItem(ll_fila,'rec_codmodsisant',lds_origen.GetItemString(ll_aux,'respaldo_modalidad'))
adw_destino.SetItem(ll_fila,'rec_numcresisant',lds_origen.GetItemString(ll_aux,'eis_credito_rec'))
adw_destino.SetItem(ll_fila,'rec_codbfsisant',lds_origen.GetItemString(ll_aux,'eis_empresa_rec'))
adw_destino.SetItem(ll_fila,'rec_codofimecsisant',lds_origen.GetItemString(ll_aux,'eis_agemec_rec'))

// Llamada a la funcion auxiliar que obtiene el codigo de una forma de pago
ls_desprog = uf_mig_auxiliar_cod_fpago(lds_origen.GetitemNumber(ll_aux,'moneda_des'),lds_origen.GetitemString(ll_aux,'forma_pago_des'))
adw_destino.Setitem(ll_fila,'fpa_codfpa',ls_desprog)
if ls_desprog = 'VAC0' or ls_desprog = 'VACE1' Then
adw_destino.Setitem(ll_fila,'des_reprog','R')
else
adw_destino.Setitem(ll_fila,'des_reprog','N')
end if

// Asignacion de Valores en campos que no tienen relacion la base Anterior con la nueva
adw_destino.SetItem(ll_fila,'rec_facmod','T')
adw_destino.SetItem(ll_fila,'fui_codfui','04')
adw_destino.SetItem(ll_fila,'pai_codpai','EC')
adw_destino.SetItem(ll_fila,'emp_codemp',gs_codemp)
adw_destino.Setitem(ll_fila,'etc_codetc','98')
adw_destino.Setitem(ll_fila,'rec_numdiv',1)
adw_destino.Setitem(ll_fila,'codusu',gs_codusu)
adw_destino.Setitem(ll_fila,'fecult',today())
adw_destino.Setitem(ll_fila,'estado','VIG')
adw_destino.Setitem(ll_fila,'status','I')
adw_destino.Setitem(ll_fila,'rec_fecpro',Datetime(date(String(today(),"yyyy/mm/dd"))))

ls_codprd = lds_origen.GetItemString(ll_aux,'producto_rec')
if isnull(ls_codprd) or ls_codprd = "00000" then ls_codprd = '0'
adw_destino.SetItem(ll_fila,'prd_codprd',ls_codprd)

//Validaciones en diferentes campos
if isNull (lds_origen.GetItemString(ll_aux,'ciiu_rec')) then
adw_destino.SetItem(ll_aux,'cii_codcii','00000')
end if

// Actualizacion por cada 100 Registros
If mod( li_indice,100) = 0 Then
if adw_destino.Update() <> 1 Then
Rollback using sqlca;
Return "Error al actualizar la importacion de datos "
else
commit using sqlca;
end if
end if
next
If adw_destino.Update () <> 1 Then
Rollback using sqlca;
Return "Error al actualizar la importacion de datos "
else
commit using sqlca;
End if
return ""
Ahora me piden:
Pregunta:
Se debe considerar que por cada registro recuperado en el datawindow 1 se deben crear 4 registros en el datawindow 2: 1 registro para capital, 1 registro para el interes, 1 registro para el interes por mora y 1 registro para el total de la transaccion; donde se considere los siguientes valores para los campos.
Para el registro del Capital:
En el campo con_codcon ingresar el valor 'CAP'
En el campo rec_secuen2 ingresar el valor 2
En el campo rec_monto ingresar el valor principal_rec
En el campo rec_montodol si el valor del campo moneda_rec es 1 entonces ingresar el valor principal_rec, y si el valor del campo moneda_rec es 0 entonces ingresar el valor principal_rec/cotizacion_rec
En el campo rec_montosuc si el valor del campo moneda_rec es 0 entonces ingresar el valor principal_rec, y si el valor del campo moneda_rec es 1 entonces ingresar el valor principal_rec*cotizacion_rec

Amigos necesito me ayuden de manera muy urgente
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder