Power Builder - Grabar con DataStore

 
Vista:
sin imagen de perfil
Val: 76
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Grabar con DataStore

Publicado por guido (46 intervenciones) el 11/02/2017 06:12:59
Hola. Estoy importando información de una hoja de excel, lo importo en un dw external y después trato de pasar la información a un DataStore, lo cual lo hace; pero al momento de hacer el update en el DataStore me sale un error:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
long ll_num_filas, ll_filas
string ls_error
 
DataStore ds_afiliados
ds_afiliados=Create DataStore
ds_afiliados.DataObject="d_afiliados"
ds_afiliados.SetTransObject(SQLCA)
ds_afiliados.Retrieve()
 
ll_num_filas = dw_1.rowcount( )
 
for ll_filas = 1 to ll_num_filas - 1
	ds_afiliados.insertrow( 0)
	ds_afiliados.object.sc_number[ll_filas] = string(dw_1.object.sc_number[ll_filas])
	ds_afiliados.object.sc_nombre[ll_filas] = string(dw_1.object.sc_name[ll_filas])
	ds_afiliados.object.cod_pais[ll_filas] = string(dw_1.object.no_code[ll_filas])
	ds_afiliados.object.sp_number[ll_filas] = string(dw_1.object.sp_number[ll_filas])
	ds_afiliados.object.sp_name[ll_filas] = string(dw_1.object.sp_name[ll_filas])
	ds_afiliados.object.sc_estado[ll_filas] = string(dw_1.object.status[ll_filas])
	ds_afiliados.object.sc_fecha_nac[ll_filas] = date(dw_1.object.fecha[ll_filas])
	ds_afiliados.object.cod_comunidad[ll_filas] = string(dw_1.object.c_cod[ll_filas])
	ds_afiliados.object.sc_genero[ll_filas] = string(dw_1.object.sc_gender[ll_filas])
next
 
if ds_afiliados.Update() = 1 then
	commit;
	Destroy ds_afiliados
	messagebox("Mensaje","Registros guardados con exito", Information!)
else
	ls_error = sqlca.sqlerrtext
	rollback;
	Destroy ds_afiliados
	messagebox("Error Guardando","La base de datos retorno el siguiente error y no se guardaron los cambios. " + ls_error,Stopsign!)
end if

Alguna idea?
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

Grabar con DataStore

Publicado por Leopoldo Taylhardat (710 intervenciones) el 11/02/2017 15:12:36
Saludos...
el datastore no te dice los errores...

ponlo en un datawindow (para probar) corriges el error y lo pones otra vez en el datastore...
espero que te sirva...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Leonardo Daniel A.
Val: 858
Oro
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Grabar con DataStore

Publicado por Leonardo Daniel A. (376 intervenciones) el 12/02/2017 06:18:53
hola intenta con

1
2
3
4
5
if ds_afiliados.Update() = 1 then
	commit;
        if sqlca.sqlcode<0 then
           messagebox( sqlca.errText)
       end if
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 76
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Grabar con DataStore

Publicado por guido (46 intervenciones) el 12/02/2017 14:19:08
Gracias por su respuesta, ya logre solucionar el problema. Ahora tengo otro problema, como ven estoy recuperando la data que hay en la bd dentro del datastore, esto para poder hacer validaciones y comparar la información importada al dw_1 con la que tiene el datastore, si existe solo debe actualizar el registro y si no insertar un nuevo registro; pero da error: Row changed between retrieve and update. No changes made to database. Al tratar de hacer update al datastore. Como puedo solucionarlo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Grabar con DataStore

Publicado por Leopoldo Taylhardat (710 intervenciones) el 18/02/2017 14:17:43
Saludos...

No se cual lógica de proceso utilizas... estoy adivinando...

Cuando actualizas estas cambiando los datos fisicamente en la bd... deberias copiar los registros a otro datastore (con el mismo dataobject) y actualizar con el segundo datastore...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar