Power Builder - FRANCISCO

   
Vista:

FRANCISCO

Publicado por Edgar (87 intervenciones) el 17/06/2010 23:18:14
Amigo Panchito buenas tardes tengo este problema espero me puedas ayudar, mira tengo una ventana triple:
1. Cabecera …… Código del mes , Tipo Rol, Estado
a. En esta ventana se indica en que mes quiero hacer el rol
2. Detalle de acuerdo al tipo del Rol seleccionado se pasan todos los empleados que pertenezcan a este tipo de rol
3. Pie….. de acuerdo al empleado buscamos el tipo de contrato y los rubros que tiene asignado ese empleado.
Yo tengo la programación pero resulta que por cada empleado que es nuevo en este rol me presenta:
- mensaje de que existe nuevos empleados para este rol
- mensaje de que se van a eliminar los rubros y se importaran nuevamente etc…..

Programación evento click botón actualizar empleados.

string ls_codtrol,ls_empleado,ls_empl,ls_caro,ls_codmes
long ll_fila,ll_empleado,ll_i,ll_emplrol,ll_j,ll_existe,ll_elimina
long ll_mensaje,ll_insert
date ld_finicio,ld_final,ld_fingreso

dw_1.AcceptText()
ll_fila=dw_1.getrow()
ls_codtrol=dw_1.getitemstring(ll_fila,"codigo_tiro")
ls_caro=dw_1.getitemstring(ll_fila,"codigo_caro")

//Crea datastore para obtener los empleados de acuerto al tipo de rol
u_ds_general lds_empleado
lds_empleado = create u_ds_general
lds_empleado.dataobject="ds_empleado_rol"
lds_empleado.settransobject( gnv_base.itr_transacc )
lds_empleado.of_retrieve( ls_codtrol)

//Total empleados por tipo de rol
ll_empleado=lds_empleado.rowcount( )

//Crea datastore para obtener los empleados de la tabla nom_emplaedo_rol
u_ds_general lds_emplrol
lds_emplrol = create u_ds_general
lds_emplrol.dataobject="ds_nom_empleado_rol"
lds_emplrol.settransobject( gnv_base.itr_transacc )
lds_emplrol.of_retrieve( ls_caro)

//Total empleados en la tabla nom_empleado_rol
ll_emplrol=lds_emplrol.rowcount()

for ll_i=1 to ll_empleado
ls_empleado=lds_empleado.getitemstring(ll_i,"codigo_empl")
ld_fingreso =lds_empleado.getitemdate(ll_i,"fecha_ingreso_empl")
ll_existe=lds_emplrol.find("codigo_empl= '" +ls_empleado + "'",1,lds_emplrol.rowcount())

if ll_existe = 0 then
//if ll_mensaje=1 then
//Verificar que el empleado no este fuera de la fecha del rol
ls_codmes=dw_1.getitemstring(ll_fila,"codigo_mes")
// Obtengo las fecha del Rol
select gen_mes.fecha_inicial_mes,gen_mes.fecha_final_mes
into :ld_finicio, :ld_final
from gen_mes
where gen_mes.codigo_mes= :ls_codmes
using gnv_base.itr_transacc;

if ld_finicio<ld_fingreso then
if ld_final >ld_fingreso then
ll_mensaje=Messagebox("Atención","Existen nuevos empleados en este rol,desea Agregarlos",Question!,YesNo!)
if ll_mensaje = 1 then
ll_elimina=messagebox("Atención","Se eliminaran todos los datos de este Rol e importar nuevamente,los empleados y Rubros",Question!,YesNo!)
if ll_elimina=1 then
delete
from nom_emplado_rol
where nom_empleado_rol.codigo_caro= :ls_caro and
nom_empleado_rol.codigo_empl= :ls_empleado
using gnv_base.itr_transacc;
end if
ll_insert=dw_2.insertrow(0)
dw_2.setitem(ll_insert,"codigo_empl",ls_empleado)
end if
end if
else
messagebox("","Ingreso Despues del Cierre de Rol")
end if
end if
next
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

RE:FRANCISCO

Publicado por EDGAR (1 intervención) el 17/06/2010 23:54:19
Mira
1.- Es rapido en recuperar toda la informacion,

si es asi lo que aria fuera primero verificar ese estado que verificas , es decir primero verifico si todos cumplene ese estado. y cada que cumplen le pondria un contador o alguna variable que me indique que si estan

for.....
lb=correcto
next

y si lb es correcto hago el paso de la pregunta y si es afirmativa inserto..

eso haria si es rapido en recuperar

si no es rapido lo que hiciera fuera darle a selecionar al usuario que indique cuales si quiere pasar osea con un check

empl1
empl2
emp3

si el seleciona cual desea ya no deberias hacer la pregunta
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