Académique Documents
Professionnel Documents
Culture Documents
El campo FIELDNAME es para indicar a que campo (de tipo XLAT) pertenecen
esos registros.
Cada vez que se quiere introducir cdigo iScript dentro de una pgina Peoplesoft
se debe tener un campo de tipo HTML Area, este campo permite generar cdigo
HTML independiente del COMPONENT BUFFER.
Para lo anterior se debe crear otro record, esta vez de tipo DERIVED/WORK para
introducir un campo de tipo HTML Area.
If &fld_campo.IsEditXlat Then
If &bol_Init Then
&rs_selected = CreateRowset(Record.Q_MULLIST_TBL);
&rs_selected.Fill("WHERE FILL.OPRID = :1 AND FILL.RUN_CNTL_ID = :2 AND FILL.FIELDNAME = :3 AND
FILL.PARAMETERNAME = :4", &str_oprid, &str_run_cntl_id, &str_fieldname, &str_parametername);
&rs_Xlat = CreateRowset(Record.PSXLATITEM);
&rs_Xlat.Fill("WHERE FILL.FIELDNAME = :1 and EFFDT = (select max(EFFDT) from PSXLATITEM B where B.FIELDNAME = :1
and FILL.FIELDVALUE = B.FIELDVALUE and EFFDT <= %CURRENTDATEIN)", &str_fieldname);
&nbr_i = 1;
For &nbr_i = 1 To &rs_Xlat.ActiveRowCount
&fld_campo.Value = &rs_Xlat(&nbr_i).GetRecord(1).GetField(Field.FIELDVALUE).Value;
If &arr_selected.Find(&rs_Xlat(&nbr_i).GetRecord(1).GetField(Field.FIELDVALUE).Value) <> 0 Then
&str_html = &str_html | "<option value='" | &rs_Xlat(&nbr_i).GetRecord(1).GetField(Field.FIELDVALUE).Value | "'
selected='true'>" | &fld_campo.LongTranslateValue | "</option>"
Else
&str_html = &str_html | "<option value='" | &rs_Xlat(&nbr_i).GetRecord(1).GetField(Field.FIELDVALUE).Value | "' >" |
&fld_campo.LongTranslateValue | "</option>"
End-If;
End-For;
&str_html = &str_html | "</select>";
Q_HTML_WRK.HTMLAREA.Value = &str_html;
End-If;
End-Function;
A continuacin se describen los parmetros de la funcin:
&str_oprid: Usuario que est creando los datos
&str_run_cntl_id: Control de ejecucin que se est creando
&str_recordname: Registro en el que se encuentra el campo XLAT para el
cual se va a almacenar la informacin.
&str_fieldname: Campo XLAT para el que se va a almacenar la informacin
&str_parametername: Identificador que se le va a dar al campo
&str_pagename: nombre de la pgina que est ejecutando el control
&str_cntrlfield: es el campo de control, generalmente es TREECTLEVENT
que es el campo que se utiliza para controlar los eventos que ocurrirn en el HTML
Area
&bol_Init: Indica si se est inicializando la lista (Rowinit) o si se est
modificando (fieldchange)
If &fld_campo.IsEditXlat Then
If &bol_Init Then
&rs_selected = CreateRowset(Record.Q_MULLIST_TBL);
&rs_selected.Fill("WHERE FILL.OPRID = :1 AND FILL.RUN_CNTL_ID = :2 AND FILL.FIELDNAME = :3 AND
FILL.PARAMETERNAME = :4", &str_oprid, &str_run_cntl_id, &str_fieldname, &str_parametername);
En el siguiente paso se recorren los valores activos del XLAT, escribirlos dentro de
la lista usando la opcin "<option" y asignar este fragmento de HTML al campo
HTMLAREA para que sea visualizado dentro de la pgina.
&rs_Xlat = CreateRowset(Record.PSXLATITEM);
&rs_Xlat.Fill("WHERE FILL.FIELDNAME = :1 and EFFDT = (select max(EFFDT) from PSXLATITEM B where B.FIELDNAME = :1
and FILL.FIELDVALUE = B.FIELDVALUE and EFFDT <= %CURRENTDATEIN)", &str_fieldname);
&nbr_i = 1;
For &nbr_i = 1 To &rs_Xlat.ActiveRowCount
&fld_campo.Value = &rs_Xlat(&nbr_i).GetRecord(1).GetField(Field.FIELDVALUE).Value;
If &arr_selected.Find(&rs_Xlat(&nbr_i).GetRecord(1).GetField(Field.FIELDVALUE).Value) <> 0 Then
&str_html = &str_html | "<option value='" | &rs_Xlat(&nbr_i).GetRecord(1).GetField(Field.FIELDVALUE).Value | "'
selected='true'>" | &fld_campo.LongTranslateValue | "</option>"
Else
&str_html = &str_html | "<option value='" | &rs_Xlat(&nbr_i).GetRecord(1).GetField(Field.FIELDVALUE).Value | "' >" |
&fld_campo.LongTranslateValue | "</option>"
End-If;
&str_html = &str_html | "</select>";
Q_HTML_WRK.HTMLAREA.Value = &str_html;
La otra funcin que se debe desarrollar es la que permite guardar los datos
seleccionados a la base de datos
&rec_tcf_mullist_tbl.Insert();
End-For;
End-Function;
SQLExec("DELETE FROM PS_TCF_MULLIST_TBL WHERE OPRID = :1 AND RUN_CNTL_ID = :2 AND FIELDNAME = :3 AND
PARAMETERNAME = :4", &str_oprid, &str_run_cntl_id, &str_fieldname, &str_parametername);
&arr_selected = %Request.GetParameterValues(&str_parametername);
&rec_tcf_mullist_tbl.Insert();
End-For;
Hasta este momento se han creado los objetos que se van a reutilizar en cada una de las pginas
donde se haga necesario incluir la lista.
Los pasos para crear una pgina que use este control son los siguientes:
Y listo:
Bueno hasta ac llega la primera entrada de este blog, espero que est informacin les sea de
mucha utilidad en sus proyectos.
Cualquier comentario, sugerencia, duda, pregunta, etc., es bienvenida. Esperen la proxima semana
una nueva entrada que tratar sobre una herramienta introducida en PEOPLESOFT 9.0 que
permite realizar "Customizaciones" dentro de las aplicaciones disminuyendo el impacto de las
mismas y su administracin.