IMPORTAR ARCHIVO Y ACTUALIZAR BASE DE DATOS
Publicado por Piero (51 intervenciones) el 21/11/2007 15:36:55
SEÑORES FORISTAS
TENGO UN PEQUEÑO INCONVENIENTE AL REALZIAR UN PROCESO CON MI SISTEMA QUE ESTOY TRABAJANDO EN POWER 9
LO QUE QUIERO ES IMPORTAR UN ARCHIVO .DBF, PERO QUE ANTES DE IMPORTAR Y ACTUALIZAR LOS DATOS DE MI TABLA CAMBIE EL ESTADO DE UNO DE LOS CAMPOS PARA MI EJEMPLO DE NACIONAL A INTERNO ( '0' A '1' RESPECTIVAMENTE)
PERO NO SE COMO HACERLO PORQUE NO ME SALE
1.DEBO CAMBIAR EL ESTADO UN CAMPO PARA TODOS LOS REGISTROS
2.ACTUALIZAR O INGRESAR REGISTROS SEGUN SEA EL CASO QUE HAYA EN EL ARCHIVO QUE IMPORTO
MI CODIGO ES EL SIGUIENTE:
string ls_archivo
string ls_codigo,ls_descripcion
long ln_i,ln_rowcount,ln_find,ln_contador,ln_total_registros,ln_inicial
datastore lds_lista
if not gf_openfile(ls_archivo,'*.txt','*.Dbf') then return
dw_lista.setfilter("")
dw_lista.filter()
lds_lista = create datastore
lds_lista.dataobject = dw_lista.dataobject
lds_lista.settransobject(sqlca)
ln_rowcount = lds_lista.importfile(ls_archivo)
If ln_rowcount <= 0 Then
messagebox('No hay registros a procesar',ln_rowcount)
destroy lds_lista
return
end if
ln_total_registros = dw_lista.rowcount()
//****CAMBIO TODOS LOS REGISTROS DE ESTADO
for ln_inicial = 1 to ln_total_registros
dw_lista.object.tipo_destino[ln_inicial] = '1'
next
For ln_i = 1 To ln_rowcount
ln_find = dw_lista.find("lower(trim(codigo)) = '"+lower(trim(lds_lista.object.codigo[ln_i]))+"'",1,ln_total_registros )
If ln_find = 0 then
ln_contador ++
lds_lista.rowscopy(ln_i,ln_i,primary!,dw_lista,9999,primary!)
Else
dw_lista.object.cod_pais[ln_find] = lds_lista.object.cod_pais[ln_i]
dw_lista.object.cod_departamento[ln_find] = lds_lista.object.cod_departamento[ln_i]
dw_lista.object.cod_provincia[ln_find] = lds_lista.object.cod_provincia[ln_i]
dw_lista.object.tipo_destino[ln_find] = lds_lista.object.tipo_destino[ln_i]
end if
Next
IF Dw_Lista.Update() = -1 Then
RollBack using sqlca;
Messagebox('Error','Los registros no se han guardado ~nPuede intentarlo otra vez')
Else
Commit Using Sqlca ;
messagebox('Importación','se procesaron ('+string(ln_rowcount)+') registros y se importaron ('+string(ln_contador)+') nuevos registros.')
End IF
dw_lista.Retrieve()
Destroy lds_lista
ESPERO SUS RESPUESTAS Y ME PUEDAN AYUDAR CON ESTO
ME DESPIDO
GRACIAS DE ANTEMANO
TENGO UN PEQUEÑO INCONVENIENTE AL REALZIAR UN PROCESO CON MI SISTEMA QUE ESTOY TRABAJANDO EN POWER 9
LO QUE QUIERO ES IMPORTAR UN ARCHIVO .DBF, PERO QUE ANTES DE IMPORTAR Y ACTUALIZAR LOS DATOS DE MI TABLA CAMBIE EL ESTADO DE UNO DE LOS CAMPOS PARA MI EJEMPLO DE NACIONAL A INTERNO ( '0' A '1' RESPECTIVAMENTE)
PERO NO SE COMO HACERLO PORQUE NO ME SALE
1.DEBO CAMBIAR EL ESTADO UN CAMPO PARA TODOS LOS REGISTROS
2.ACTUALIZAR O INGRESAR REGISTROS SEGUN SEA EL CASO QUE HAYA EN EL ARCHIVO QUE IMPORTO
MI CODIGO ES EL SIGUIENTE:
string ls_archivo
string ls_codigo,ls_descripcion
long ln_i,ln_rowcount,ln_find,ln_contador,ln_total_registros,ln_inicial
datastore lds_lista
if not gf_openfile(ls_archivo,'*.txt','*.Dbf') then return
dw_lista.setfilter("")
dw_lista.filter()
lds_lista = create datastore
lds_lista.dataobject = dw_lista.dataobject
lds_lista.settransobject(sqlca)
ln_rowcount = lds_lista.importfile(ls_archivo)
If ln_rowcount <= 0 Then
messagebox('No hay registros a procesar',ln_rowcount)
destroy lds_lista
return
end if
ln_total_registros = dw_lista.rowcount()
//****CAMBIO TODOS LOS REGISTROS DE ESTADO
for ln_inicial = 1 to ln_total_registros
dw_lista.object.tipo_destino[ln_inicial] = '1'
next
For ln_i = 1 To ln_rowcount
ln_find = dw_lista.find("lower(trim(codigo)) = '"+lower(trim(lds_lista.object.codigo[ln_i]))+"'",1,ln_total_registros )
If ln_find = 0 then
ln_contador ++
lds_lista.rowscopy(ln_i,ln_i,primary!,dw_lista,9999,primary!)
Else
dw_lista.object.cod_pais[ln_find] = lds_lista.object.cod_pais[ln_i]
dw_lista.object.cod_departamento[ln_find] = lds_lista.object.cod_departamento[ln_i]
dw_lista.object.cod_provincia[ln_find] = lds_lista.object.cod_provincia[ln_i]
dw_lista.object.tipo_destino[ln_find] = lds_lista.object.tipo_destino[ln_i]
end if
Next
IF Dw_Lista.Update() = -1 Then
RollBack using sqlca;
Messagebox('Error','Los registros no se han guardado ~nPuede intentarlo otra vez')
Else
Commit Using Sqlca ;
messagebox('Importación','se procesaron ('+string(ln_rowcount)+') registros y se importaron ('+string(ln_contador)+') nuevos registros.')
End IF
dw_lista.Retrieve()
Destroy lds_lista
ESPERO SUS RESPUESTAS Y ME PUEDAN AYUDAR CON ESTO
ME DESPIDO
GRACIAS DE ANTEMANO
Valora esta pregunta
0