URGENTISIMO AYUDA
Publicado por Edgar (87 intervenciones) el 25/11/2005 18:53:48
Amigos tengo un problema les comento tengo una a funcion de migracion que esta migrando bien pero, e aqui el problema graba bien los 100 primeros registros pero al momento de grabar quiere duplicarse la clave primaria es decir quiere tomar el valor que esta al inicio por fa me pueden ayudar
Esta es la funcion
//Declaracion de variables
string ls_nulo,ls_codfac,ls_codprd
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_aprobaciones_anterior'
adw_destino.dataobject='d_mig_m_migracion_aprobaciones_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,apr_codapr))
INTO :ll_secuencial
FROM dbo.apr_aprobacion 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.apr_codapr[ll_fila] = string(ll_secuencial)
adw_destino.SetItem(ll_fila,'fac_codfacapr',lds_origen.GetItemString(ll_aux,'apr_toperacion'))
adw_destino.SetItem(ll_fila,'apr_numcreapr',lds_origen.GetItemString(ll_aux,'credito_apr'))
adw_destino.SetItem(ll_fila,'apr_numtraapr',lds_origen.GetItemNumber(ll_aux,'apr_tramite'))
adw_destino.SetItem(ll_fila,'apr_numopeapr',lds_origen.GetItemNumber(ll_aux,'apr_operacion'))
adw_destino.SetItem(ll_fila,'apr_numcreant',lds_origen.GetItemString(ll_aux,'modalidad_apr'))
adw_destino.SetItem(ll_fila,'apr_numtraant',lds_origen.GetItemNumber(ll_aux,'tipomodalidad_apr'))
adw_destino.SetItem(ll_fila,'cii_codcii',lds_origen.GetItemString(ll_aux,'ciiu_apr'))
adw_destino.SetItem(ll_fila,'apr_fecapr',lds_origen.GetItemDateTime(ll_aux,'fechaprob_apr'))
adw_destino.SetItem(ll_fila,'mod_codmod',lds_origen.GetItemString(ll_aux,'mecanismo_apr'))
// adw_destino.SetItem(ll_fila,'mon_codmon',String(lds_origen.GetItemNumber(ll_aux,'moneda_apr')))
adw_destino.SetItem(ll_fila,'mon_codmon',uf_mig_auxiliar_moneda(String(lds_origen.GetItemNumber(ll_aux,'moneda_apr'))))
// adw_destino.SetItem(ll_fila,'ofi_codofipro',String(lds_origen.GetItemNumber(ll_aux,'agencia_apr')))
// adw_destino.SetItem(ll_fila,'ofi_codofitra',String(lds_origen.GetItemNumber(ll_aux,'apr_oficina')))
adw_destino.SetItem(ll_fila,'ofi_codofipro',uf_mig_auxiliar_oficina(String(lds_origen.GetItemNumber(ll_aux,'agencia_apr')),gs_codemp))
adw_destino.SetItem(ll_fila,'ofi_codofitra',uf_mig_auxiliar_oficina(String(lds_origen.GetItemNumber(ll_aux,'apr_oficina')),gs_codemp))
// adw_destino.SetItem(ll_fila,'sjc_codigoifi',lds_origen.GetItemNumber(ll_aux,'ifi_apr'))
adw_destino.SetItem(ll_fila,'sjc_codigoifi',uf_mig_auxiliar_cliente(lds_origen.GetItemNumber(ll_aux,'ifi_apr')))
adw_destino.SetItem(ll_fila,'sjc_codigobf',uf_mig_auxiliar_cliente(lds_origen.GetItemNumber(ll_aux,'empresa_apr')))
// adw_destino.SetItem(ll_fila,'sjc_codigobf',lds_origen.GetItemNumber(ll_aux,'empresa_apr'))
adw_destino.SetItem(ll_fila,'pro_codpro',String(lds_origen.GetItemNumber(ll_aux,'codgeo')))
adw_destino.SetItem(ll_fila,'apr_secuen',lds_origen.GetItemNumber(ll_aux,'apr_secuencial'))
adw_destino.SetItem(ll_fila,'apr_numacu',String(lds_origen.GetItemNumber(ll_aux,'acuerdo_apr')))
adw_destino.SetItem(ll_fila,'apr_monto',lds_origen.GetItemNumber(ll_aux,'monto_apr'))
adw_destino.SetItem(ll_fila,'apr_montodol',lds_origen.GetItemNumber(ll_aux,'montodolarizado_apr'))
adw_destino.SetItem(ll_fila,'apr_montosuc',lds_origen.GetItemNumber(ll_aux,'montosucretizado_apr'))
adw_destino.SetItem(ll_fila,'apr_plazo',lds_origen.GetItemNumber(ll_aux,'plazo_apr'))
adw_destino.SetItem(ll_fila,'apr_tascre',lds_origen.GetItemNumber(ll_aux,'tasacredito_apr'))
adw_destino.SetItem(ll_fila,'apr_tasdes',lds_origen.GetItemNumber(ll_aux,'tasadescuento_apr'))
adw_destino.SetItem(ll_fila,'apr_tascresuc',lds_origen.GetItemNumber(ll_aux,'tasacredito_sucres_apr'))
adw_destino.SetItem(ll_fila,'apr_tasdessuc',lds_origen.GetItemNUmber(ll_aux,'tasades_sucres_apr'))
adw_destino.SetItem(ll_fila,'apr_cotiza',lds_origen.GetItemNumber(ll_aux,'cotizacion_apr'))
adw_destino.SetItem(ll_fila,'apr_export',lds_origen.GetItemString(ll_aux,'exportar_apr'))
adw_destino.SetItem(ll_fila,'apr_jerarq',lds_origen.GetItemString(ll_aux,'jerarquia_apr'))
adw_destino.SetItem(ll_fila,'apr_identi',lds_origen.GetItemString(ll_aux,'identidad_apr'))
adw_destino.SetItem(ll_fila,'apr_reprog',lds_origen.GetItemString(ll_aux,'reprogramacion'))
adw_destino.SetItem(ll_fila,'apr_numcresuc',lds_origen.GetItemString(ll_aux,'credito_anterior_apr'))
adw_destino.SetItem(ll_fila,'apr_codfacsisant',lds_origen.GetItemString(ll_aux,'mecanismo_respaldo_apr'))
adw_destino.SetItem(ll_fila,'apr_codmodsisant',lds_origen.GetItemString(ll_aux,'respaldo_modalidad'))
adw_destino.SetItem(ll_fila,'apr_numcresisant',lds_origen.GetItemString(ll_aux,'eis_credito_apr'))
adw_destino.SetItem(ll_fila,'apr_codbfsisant',lds_origen.GetItemString(ll_aux,'eis_empresa_apr'))
adw_destino.SetItem(ll_fila,'apr_codofimecsisant',lds_origen.GetItemString(ll_aux,'eis_agemec_apr'))
adw_destino.SetItem(ll_fila,'apr_numcremig',lds_origen.GetItemString(ll_aux,'apr_migrada'))
// Asignacion de Valores en campos que no tienen relacion la base Anterior con la nueva
adw_destino.SetItem(ll_fila,'fuc_codfucing','nd')
adw_destino.SetItem(ll_fila,'fuc_codfucapr','nd')
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,'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,'apr_fecpro',Datetime(date(String(today(),"yyyy/mm/dd"))))
ls_codprd = lds_origen.GetItemString(ll_aux,'producto_apr')
if isnull(ls_codprd) or ls_codprd = "00000" then ls_codprd = '0'
adw_destino.SetItem(ll_fila,'prd_codprd',ls_codprd)
ls_codfac = lds_origen.GetItemString(ll_aux,'mecanismo_modalidad_apr')
if ls_codfac = '00000' then
ls_codfac = ls_nulo
end if
adw_destino.SetItem(ll_fila,'fac_codfacant',ls_codfac)
//Validaciones en diferentes campos
if lds_origen.GetItemString (ll_aux,'facilidad_apr') = 'F' then
adw_destino.SetItem(ll_aux,'apr_facmod','F')
else
adw_destino.SetItem(ll_aux,'apr_facmod','M')
end if
if isNull (lds_origen.GetItemString(ll_aux,'ciiu_apr')) then
adw_destino.SetItem(ll_aux,'cii_codcii','00000')
end if
if lds_origen.GetItemString(ll_aux,'reprogramacion') = 'R' then
adw_destino.SetItem(ll_aux,'apr_reprog', 'R')
else
adw_destino.SetItem(ll_aux,'apr_reprog', 'N')
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 ""
Esta es la funcion
//Declaracion de variables
string ls_nulo,ls_codfac,ls_codprd
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_aprobaciones_anterior'
adw_destino.dataobject='d_mig_m_migracion_aprobaciones_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,apr_codapr))
INTO :ll_secuencial
FROM dbo.apr_aprobacion 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.apr_codapr[ll_fila] = string(ll_secuencial)
adw_destino.SetItem(ll_fila,'fac_codfacapr',lds_origen.GetItemString(ll_aux,'apr_toperacion'))
adw_destino.SetItem(ll_fila,'apr_numcreapr',lds_origen.GetItemString(ll_aux,'credito_apr'))
adw_destino.SetItem(ll_fila,'apr_numtraapr',lds_origen.GetItemNumber(ll_aux,'apr_tramite'))
adw_destino.SetItem(ll_fila,'apr_numopeapr',lds_origen.GetItemNumber(ll_aux,'apr_operacion'))
adw_destino.SetItem(ll_fila,'apr_numcreant',lds_origen.GetItemString(ll_aux,'modalidad_apr'))
adw_destino.SetItem(ll_fila,'apr_numtraant',lds_origen.GetItemNumber(ll_aux,'tipomodalidad_apr'))
adw_destino.SetItem(ll_fila,'cii_codcii',lds_origen.GetItemString(ll_aux,'ciiu_apr'))
adw_destino.SetItem(ll_fila,'apr_fecapr',lds_origen.GetItemDateTime(ll_aux,'fechaprob_apr'))
adw_destino.SetItem(ll_fila,'mod_codmod',lds_origen.GetItemString(ll_aux,'mecanismo_apr'))
// adw_destino.SetItem(ll_fila,'mon_codmon',String(lds_origen.GetItemNumber(ll_aux,'moneda_apr')))
adw_destino.SetItem(ll_fila,'mon_codmon',uf_mig_auxiliar_moneda(String(lds_origen.GetItemNumber(ll_aux,'moneda_apr'))))
// adw_destino.SetItem(ll_fila,'ofi_codofipro',String(lds_origen.GetItemNumber(ll_aux,'agencia_apr')))
// adw_destino.SetItem(ll_fila,'ofi_codofitra',String(lds_origen.GetItemNumber(ll_aux,'apr_oficina')))
adw_destino.SetItem(ll_fila,'ofi_codofipro',uf_mig_auxiliar_oficina(String(lds_origen.GetItemNumber(ll_aux,'agencia_apr')),gs_codemp))
adw_destino.SetItem(ll_fila,'ofi_codofitra',uf_mig_auxiliar_oficina(String(lds_origen.GetItemNumber(ll_aux,'apr_oficina')),gs_codemp))
// adw_destino.SetItem(ll_fila,'sjc_codigoifi',lds_origen.GetItemNumber(ll_aux,'ifi_apr'))
adw_destino.SetItem(ll_fila,'sjc_codigoifi',uf_mig_auxiliar_cliente(lds_origen.GetItemNumber(ll_aux,'ifi_apr')))
adw_destino.SetItem(ll_fila,'sjc_codigobf',uf_mig_auxiliar_cliente(lds_origen.GetItemNumber(ll_aux,'empresa_apr')))
// adw_destino.SetItem(ll_fila,'sjc_codigobf',lds_origen.GetItemNumber(ll_aux,'empresa_apr'))
adw_destino.SetItem(ll_fila,'pro_codpro',String(lds_origen.GetItemNumber(ll_aux,'codgeo')))
adw_destino.SetItem(ll_fila,'apr_secuen',lds_origen.GetItemNumber(ll_aux,'apr_secuencial'))
adw_destino.SetItem(ll_fila,'apr_numacu',String(lds_origen.GetItemNumber(ll_aux,'acuerdo_apr')))
adw_destino.SetItem(ll_fila,'apr_monto',lds_origen.GetItemNumber(ll_aux,'monto_apr'))
adw_destino.SetItem(ll_fila,'apr_montodol',lds_origen.GetItemNumber(ll_aux,'montodolarizado_apr'))
adw_destino.SetItem(ll_fila,'apr_montosuc',lds_origen.GetItemNumber(ll_aux,'montosucretizado_apr'))
adw_destino.SetItem(ll_fila,'apr_plazo',lds_origen.GetItemNumber(ll_aux,'plazo_apr'))
adw_destino.SetItem(ll_fila,'apr_tascre',lds_origen.GetItemNumber(ll_aux,'tasacredito_apr'))
adw_destino.SetItem(ll_fila,'apr_tasdes',lds_origen.GetItemNumber(ll_aux,'tasadescuento_apr'))
adw_destino.SetItem(ll_fila,'apr_tascresuc',lds_origen.GetItemNumber(ll_aux,'tasacredito_sucres_apr'))
adw_destino.SetItem(ll_fila,'apr_tasdessuc',lds_origen.GetItemNUmber(ll_aux,'tasades_sucres_apr'))
adw_destino.SetItem(ll_fila,'apr_cotiza',lds_origen.GetItemNumber(ll_aux,'cotizacion_apr'))
adw_destino.SetItem(ll_fila,'apr_export',lds_origen.GetItemString(ll_aux,'exportar_apr'))
adw_destino.SetItem(ll_fila,'apr_jerarq',lds_origen.GetItemString(ll_aux,'jerarquia_apr'))
adw_destino.SetItem(ll_fila,'apr_identi',lds_origen.GetItemString(ll_aux,'identidad_apr'))
adw_destino.SetItem(ll_fila,'apr_reprog',lds_origen.GetItemString(ll_aux,'reprogramacion'))
adw_destino.SetItem(ll_fila,'apr_numcresuc',lds_origen.GetItemString(ll_aux,'credito_anterior_apr'))
adw_destino.SetItem(ll_fila,'apr_codfacsisant',lds_origen.GetItemString(ll_aux,'mecanismo_respaldo_apr'))
adw_destino.SetItem(ll_fila,'apr_codmodsisant',lds_origen.GetItemString(ll_aux,'respaldo_modalidad'))
adw_destino.SetItem(ll_fila,'apr_numcresisant',lds_origen.GetItemString(ll_aux,'eis_credito_apr'))
adw_destino.SetItem(ll_fila,'apr_codbfsisant',lds_origen.GetItemString(ll_aux,'eis_empresa_apr'))
adw_destino.SetItem(ll_fila,'apr_codofimecsisant',lds_origen.GetItemString(ll_aux,'eis_agemec_apr'))
adw_destino.SetItem(ll_fila,'apr_numcremig',lds_origen.GetItemString(ll_aux,'apr_migrada'))
// Asignacion de Valores en campos que no tienen relacion la base Anterior con la nueva
adw_destino.SetItem(ll_fila,'fuc_codfucing','nd')
adw_destino.SetItem(ll_fila,'fuc_codfucapr','nd')
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,'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,'apr_fecpro',Datetime(date(String(today(),"yyyy/mm/dd"))))
ls_codprd = lds_origen.GetItemString(ll_aux,'producto_apr')
if isnull(ls_codprd) or ls_codprd = "00000" then ls_codprd = '0'
adw_destino.SetItem(ll_fila,'prd_codprd',ls_codprd)
ls_codfac = lds_origen.GetItemString(ll_aux,'mecanismo_modalidad_apr')
if ls_codfac = '00000' then
ls_codfac = ls_nulo
end if
adw_destino.SetItem(ll_fila,'fac_codfacant',ls_codfac)
//Validaciones en diferentes campos
if lds_origen.GetItemString (ll_aux,'facilidad_apr') = 'F' then
adw_destino.SetItem(ll_aux,'apr_facmod','F')
else
adw_destino.SetItem(ll_aux,'apr_facmod','M')
end if
if isNull (lds_origen.GetItemString(ll_aux,'ciiu_apr')) then
adw_destino.SetItem(ll_aux,'cii_codcii','00000')
end if
if lds_origen.GetItemString(ll_aux,'reprogramacion') = 'R' then
adw_destino.SetItem(ll_aux,'apr_reprog', 'R')
else
adw_destino.SetItem(ll_aux,'apr_reprog', 'N')
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 ""
Valora esta pregunta
0