Power Builder - Ayuda con SetFullState, SetItemStatus

 
Vista:
Imágen de perfil de Leonardo Daniel A.
Val: 821
Oro
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Ayuda con SetFullState, SetItemStatus

Publicado por Leonardo Daniel A. (481 intervenciones) el 10/06/2017 19:17:07
Hola a todos, tengo una ventana en la cual debo consultar los datos de un registro y posteriormente utilizarlos para generar un registro nuevo, el asunto es el autoincremental que es la llave.... es una tabla de viajes... ya se creo un viaje de ida (id_viaje)... luego se crea un viaje de vuelta... por lo que tengo otro campo (id_viaje_ida) donde pongo el id del viaje de ida... y id_viaje viene a ser ahora el id del viaje... claro tengo una columna que me dice que tipo de viaje es (ida_vuelta = I o V)

El problema es que ya logre duplicar los datos, modificar los datos para marcarlo como viaje de vuelta.... pero cuando mando hacer el Update y el Commit no me esta generando el nuevo id_viaje que es autoincremental en sql server...

aqui esta el codigo

EVENTO OPEN
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
blob lblb_datos
 
ll_viaje = Message.doubleparm
 
// Leer encabezado viaje
datastore lds_datos
lds_datos = create datastore
lds_datos.dataobject = "d_viaje"
lds_datos.settransobject( sqlca )
lds_datos.retrieve( ll_viaje )
lds_datos.getfullstate( lblb_datos )
ll_cd_origen = lds_datos.getitemnumber(1, "id_cd_origen")
ll_cd_destino = lds_datos.getitemnumber(1, "id_cd_destino")
 
 
// Duplicar encabezado viaje
dw_datos.setfullstate( lblb_datos )
dw_datos.settransobject( sqlca )
dw_datos.setitemstatus(dw_datos.getrow(), 0, Primary!, New!)
dw_datos.setitem(1, "id_viaje", 0)
dw_datos.setitem(1, "ida_vuelta", "V")
dw_datos.setitem(1, "status_viaje", "R")
dw_datos.setitem(1, "id_viaje_ida", ll_viaje)
dw_datos.setitem(1, "id_cd_origen", ll_cd_destino)
dw_datos.setitem(1, "id_cd_destino", ll_cd_origen)



GUARDAR
Aqui dejo algo de codigo de cuando guardo...... son varias DW y actualizo en cascada

1
2
3
4
5
6
7
8
9
10
if dw_datos.update() then
   commit ;    /// esto para que guarde la tabla principal (viajes.. para que genere el id_viaje)
  wf_llena_claves_subtablas( )   // poner el id:_viaje a las tablas auxiliares
   if dw_choferes.update() then
      if dw_clientes.update() then
          commit;
      end if
           rollback;  estos lo tengo con un boolean para ver si hubo error en alguna actualizacion y cancelo todo
   end if
end if


WF_LLENA_CLAVES_SUBTABLAS
1
2
3
4
5
6
7
8
9
10
11
long ll_viaje, ll_row
dw_datos.accepttext( )
ll_row = dw_datos.getrow()
 
// Aqui no esta funcionando siendo el mismo codigo de la ventana VIAJE_IDA....  supongo que es por el SETITEMSTATUS
ll_viaje = dw_datos.getitemnumber( ll_row, "id_viaje" )  // Obtener el nuevo ID y ponerlo
 
tab_datos.tabpage_1.dw_cte_solicita.setitem( ll_row, "id_viaje", ll_viaje )
tab_datos.tabpage_1.dw_cte_facturar.setitem( ll_row, "id_viaje", ll_viaje )
tab_datos.tabpage_2.dw_choferes.setitem( ll_row, "id_viaje", ll_viaje )
tab_datos.tabpage_2.dw_camion_caja.setitem( ll_row, "id_viaje", ll_viaje )
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
Imágen de perfil de Leonardo Daniel A.
Val: 821
Oro
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Ayuda con SetFullState, SetItemStatus

Publicado por Leonardo Daniel A. (481 intervenciones) el 11/06/2017 00:23:25
Actualizo..... ya me genera el nuevo registro correctamente y en la base de datos aparece su ID de Viaje, de tipo V y en campo ID_VIAJE_IDA con su clave del viaje de ida..... pero no puedo obtener el id del viaje

Por algun motivo no se esta notificando al DW en nuevo valor IDENTITY, no lo esta obteniendo, algo mas me falta de configurar o alguna funcion

ll_row = dw_datos.getrow()

// Aqui no esta funcionando siendo el mismo codigo de la ventana VIAJE_IDA.... supongo que es por el SETITEMSTATUS
ll_viaje = dw_datos.getitemnumber( ll_row, "id_viaje" ) // Obtener el nuevo ID y ponerlo



LO DEL SETITEMSTATUS... va al final de modificar los campos y como tipo New

1
2
3
4
5
6
7
8
9
10
// Duplicar encabezado viaje
dw_datos.setfullstate( lblb_datos )
dw_datos.settransobject( sqlca )
dw_datos.setitem(1, "id_viaje", 0)
dw_datos.setitem(1, "ida_vuelta", "V")
dw_datos.setitem(1, "status_viaje", "R")
dw_datos.setitem(1, "id_viaje_ida", ll_viaje)
dw_datos.setitem(1, "id_cd_origen", ll_cd_destino)
dw_datos.setitem(1, "id_cd_destino", ll_cd_origen)
dw_datos.setitemstatus(dw_datos.getrow(), 0, Primary!, New!)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar