Ayuda con SetFullState, SetItemStatus
Publicado por Leonardo Daniel A. (482 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
GUARDAR
Aqui dejo algo de codigo de cuando guardo...... son varias DW y actualizo en cascada
WF_LLENA_CLAVES_SUBTABLAS
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


0