rowset.pdf



Comments



Description

TIPOS DE ACCESO DE BÚFER DE DATOS 1. Clase field 2. Clase record 3. Clase row 4.Clase rowset La relación entre estas 4 clases puede entenderse mejor como sigue. El Field - es un subconjunto de Registros, este es un subconjunto de fila (Row), es un subconjunto de Conjunto de filas (Rowset). No se confunda la "clase record" con un "record" DESCRIPCIÓN DEL ACCESO DE BÚFER DE DATOS Esta sección trata sobre:  Acceso al buffer de datos.  Clases de acceso.  Modelo de búfer de datos y objetos de acceso a datos. ACCESO BUFFER DE DATOS Además de las funciones incorporadas que se utilizan para acceder a la memoria intermedia de componentes, clases de objetos están disponibles que proporcionan acceso a los almacenamientos intermedios de datos estructurados utilizando la sintaxis de objeto PeopleCode. Los buffers de datos accedidos por estas clases suelen ser los buffers de componentes que se cargan cuando se abre un componente. Sin embargo, estas clases también pueden ser utilizados para acceder a los datos de los búferes de datos generales, cargados por un programa de aplicación de motor, una interfaz de componente, y así sucesivamente. Los métodos y las propiedades de estas clases ofrecen una funcionalidad que es similar a lo que ha estado disponible utilizando las funciones integradas. Sin embargo, también proporcionan una mayor consistencia, flexibilidad y nuevas funcionalidades. Clases de acceso Las cuatro clases de búfer de datos son: rowset, row, record y Field. Estas cuatro clases son la base para el acceso a datos del búfer componente a través de la nueva sintaxis de objeto. Un objeto de campo, que se crea una instancia de la clase Field, es una sola instancia de los datos dentro de un registro. Se basa en una definición de campo. Un objeto de registro, que se crea una instancia de la clase Record, es una sola instancia de una de datos dentro de una fila. Se basa en una definición de registro. Un objeto de registro se compone de uno a n campos. Un objeto de fila, que se crea una instancia de la clase de row, es una única fila de datos que consiste de uno a N registros de datos. Una sola fila en un área de desplazamiento de componentes es una fila. Una fila puede tener de uno a n hijos conjuntos de filas. Por ejemplo, una fila en un área de desplazamiento de dos niveles puede tener n nivel de tres conjuntos de filas de hijos. Un objeto Rowset es una estructura de datos que se utiliza para describir los datos jerárquicos. Se compone de una colección de filas. Un área de desplazamiento componente es un rowset. Usted también puede tener un rowset de nivel cero. BUFFER DE DATOS DEL MODELO Y DE ACCESO A DATOS DE CLASES El modelo de datos asumido por las clases de memoria intermedia de datos es la de un componente de PeopleTools, donde se utilizan barras de desplazamiento (scroll) o grids para describir una estructura de datos jerárquica, múltiples ocurrencia. Se puede acceder a estas clases utilizando notación de puntos. Las cuatro clases de memoria intermedia de datos se relacionan entre sí de una manera jerárquica. Los puntos principales para entender estas relaciones son:  Un record contiene uno o más campos.  Una row contiene uno o más registros y cero o más conjuntos de rows hijos.  Un rowset contiene una o más rows. Para buffers componentes, pensar en un rowset como un área de desplazamiento en una página que contiene todos los datos de esa área de desplazamiento. Un rowset de nivel cero contiene todos los datos para todo el componente. Puede usar rowset con los mensajes de aplicación, estructura de ficheros, interrelaciones de negocios, y otras definiciones, además de los componentes. A nivel rowset cero desde un buffer componente sólo contiene un fila: las teclas que el usuario específico para iniciar dicho componente. A nivel de rowset cero a partir de datos que no es un componente, como un mensaje o un diseño de archivo, puede contener más de un nivel de fila cero. CLASE ROWSET Un objeto rowset, es una instancia de la clase rowset, es una coleccion de filas asociadas con un bufer de datos. El componente scroll es un rowset. Puedes tener solo un rowset a nivel cero. Si se crea un objeto rowset se crea una instancia utilizando GetRowset (ya sea la función o uno de los métodos) el objeto rowset se crean instancias y se rellena con datos de acuerdo con el contexto en el que se crea la instancia. Si se crea un objeto rowset se crea una instancia utilizando la función CreateRowset, el objeto rowset es instanciado es un rowset No se puede pasar un objeto rowset en el marco de un método definido por el usuario de interfaz de componente. un objeto rowset es el equivalente de un objeto record que contiene una fila y un solo registro. o acceder a una fila especifica (usando el metodo GetRow) o para encontrar el nombre del record primario asociado con el scroll (la propiedad DBName). Puede rellenar este objeto rowset usando el CopyTo. Por ejemplo. Delete e Insert. Este objeto se puede utilizar en donde quiera que se tenga PeopleCode. el State Record. las siguientes dos líneas de código son equivalentes: &myrow = GetRowset () (5). Esto significa que puede especificar justo el número de fila. ALCANCES DE UN OBJETO ROWSET Un rowset puede ser instanciado por pleoplecode o usando java. es decir. en una clase de aplicación. Puedes usar el objeto rowset y la propiedad ActiveRowCount para iterar sobre las filas del rowset. y no utilizar el método GetRow. es decir. esta actividad en este tipo de rowset no se aplica automaticamente para ahorrar tiempo. Un rowset independiente no esta ligado a un procesador de componente. TIPOS DE DATO DEL OBJETO ROWSET El objeto rowset se declara de tipo rowset: Local Rowset &myrowset.. Todos los records(registros) y fields(campos) creadas por esta función se inicializan con valores nulos. las estructuras de datos jerárquicos componen de filas. &myrow = GetRowset () GetRow (5). Los mensajes tienen la misma estructura que los rowset. FieldDefault). es decir. La clase rowset es una de las clases de acceso de búfer de datos. CONSIDERACIONES DE ACCESO DIRECTO El método por default para la clase Rowset es GetRow. registros y campos. Usar Rowset independientes para trabajar con records. Cuando llenas con datos peoplecode no corre (por ejemplo RowInsert. las estructuras de datos jerárquicos componen de filas. (Rowset no son estructuras de datos comunes fuera de un sistema de PeopleSoft. ellos no contienen ningún dato. Fill. es decir. record field PeopleCode. En un Application Engine.independiente.) Sin embargo. PeopleSoft sugiere utilizar el objeto Record en lugar de un objeto rowset para obtener acceso al State Record. Objetos file pueden tener la misma estructura que los rowset. registros y campos. dentro de un método definido por el usuario para una interfaz de componente puede utilizar objetos rowset. FUNCIONES INCORPORADAS DE LA CLASE ROWSET . o métodos FillAppend. es decir. El procesamiento por default no se realiza en un rowset independiente. Esto significa que si insertas o borras filas.CreateRowset Sintaxis: CreateRowset({RECORD. solo puedes usar solamente:  El método de la clase rowset Fill o FillAppend  Un método record (SelectByKey)  La función SQLExec Si tu especificas un objeto rowset. las filas no serán insertadas o borradas en la base de datos cuando yo guardes la página. Nota: No debes usar los métodos del rowset Select o SelectNew para poblar o llenar rowset creados usando CreateRowset. Si tu no especificas ningún otro parámetro. se creas un rowset conteniendo una fila. Si tu especificas un record en el primer parámetro. Use la instancia Fill o FillAppend. pero no esta ligado a ningún dato (es decir.fieldname. Restricciones usando CreateRowset Los siguientes métodos y propiedades no trabajan cuando creamos rowset usando CreateRowset:  Select  SelectNew  Caulquier método GUI(como HideAllRows)  Cualquier método o propiedades de fecha efectiva(como EFFDT. RECORD.recname | &Rowset}] . . Incluyendo los rowset hijos. se usa el record primario de nivel 0. . los rowset creados usando CreateRowset no están ligados automáticamente a la base de datos. .) Use la función CreateRowset para crear un rowset independiente vacio. Cuando lo llenas con datos. {FIELD. con un registro vacío o despoblado. al buffer de componente o a un mensaje). etc). Un Rowset independiente es un rowset con una estructura especificada. EFFSEQ o GETCURREFFROW) Ademas. usa el método CopyTo o una sentencia SQL. El primer parámetro determina la estructura del rowset que se esta creando.recname | &Rowset Especifica cualquier un nombre de record o un objeto rowset existente. un rowset independiente no esta ligado a un procesador de componente. Tu puedes poblar o llenar este tipo de rowset con datos.recname | &Rowset} [. no hay peoplecode corriendo (como RowInsert. Ademas. Parametros: Record. Si tu quieres llenar o poblar este tipo de rowset con datos. Lo hara no contendiendo ningún dato. FieldDefault. tu estas creando un nuevo rowset basado en la estructura del objeto rowset que estas especificando. &RS. &RS2).QA_INVEST_TRANS.Fill(). El siguiente código crea un rowset con la misma estructura de un rowset específico: &RS2 = CreateRowset(&RS). Este debe ser un rowset existente.QA_INVEST_DTL). mientras RECORD. y retorna el número de filas leidas: &RS = CreateRowset(RECORD. &RS2). El siguiente ejemplo lee todos los registros de QA_MYRECORD dentro del rowset. para hacer dos copias distintas. Ejemplo: El siguiente código crea un rowset simple de un solo registro por fila: &RS = CreateRowset(RECORD. . &RS). RECORD.recname | &Rowset Use FIELD.QA_INVEST_HDR. Si especifica &Rowset. Local Rowset &RS.fieldname. Para hacer un clone de un rowset existente. El siguiente código crea un rowset con una estructura compuesta por 4 records en estructura jerarquica. FIELD. &NUM_READ = &RS.fieldname se refiere al control del campo. es decir.QA_MYRECORD). &RS = CreateRowset(RECORD. &RS2.fieldname. tu debes hacer lo siguiente: &RS2 = CreateRowset(&RS).recname para especificar un registro relacionado en pantalla. va a rowset recién objeto Retornos Un objeto rowset independiente vacio. agregar un objeto secundario al rowset creado.FIELD. RECORD.QA_INVEST_LN.CopyTo(&RS2).QA_MYRECORD).recname se refiere al record relacionado en pantalla. &RS2 = CreateRowset(RECORD. &RS_FINAL. y agregar los niveles superiores. es decir: QA_INVEST_HDR QA_INVEST_LN QA_INVEST_TRANS QA_INVEST_DTL Nota: tiene que comenzar por la parte inferior de la jerarquía. &RS2 = CreateRowset(RECORD. &RS_FINAL = CreateRowset(RECORD. scrollname]) Use la función GetRowset para obtener un objeto rowset basado en el contexto actual. scrollname).El siguiente condigo de ejemplo es usado para crear multiples hijos en un rowset independiente: Local Rowset &rsBOCMRole. Ejemplo En el siguiente ejemplo.BO_CM_ROLE). el rowset se determina a partir de un row que contiene el programa que se está ejecutando.BO_CM_USE). . &rsBOCMRel = CreateRowset(Record. &rsBOCMUse. Parámetro Si se especifica un parámetro.) se convierte en una expresión de objeto por el uso de GetRowset (SCROLL.scrollname. &RS2 = GetRowset(SCROLL. &rsBOCMRole = CreateRowset(Record. Consideraciones de sintaxis de formato Una expresión de la forma RECORD. Retornos Sin parámetros. &rsBOCM = CreateRowset(Record. &rsBOCMUse. Get Rowset Sintasis: GetRowset([SCROLL.method(. &rsBOCMRel).BO_CM. que debe ser el nombre del registro principal para el desplazamiento de que es un hijo del actual contexto. &rsBOCMUse = CreateRowset(Record. &RS1 = GetRowset(). &rsBOCMRole. GetRowset retorna un objeto rowset para el rowset que contiene el programa actualmente en ejecución. Local Rowset &RS1.BO_CM_REL). RS1 es un rowset de nivel 1. Es decir.scrollname debe ser el nombre del registro principal para el desplazamiento.EMPL_CHKLST_ITM). y RS2 es un rowset hijo de RS1. Si se especifica un parámetro.property o RECORD. METODOS DE LA CLASE ROWSET CopyTo: Clonar un Rowset DeleteRow: Eliminar logicamente una Fila (RowCount) Flush: Eliminar Fisicamente todas las filas (RowCount’s) InsertRow: Insertar una Fila al Rowset HideAllRows: Ocultar todas las Filas ShowAllRows: Muestra todas las Filas del Rowset . &rsBOCMRel.scrollname. &RS2. . este devuelve un rowset para este hijo scroll. target_recname1 [. así como las propiedades y MessageNumber MessageSetNumber establecidos. . los nombres de los campos tienen que coincidir para que se copian los datos. Entonces. Este objeto rowset ya debe haber creado una instancia. RECORD. estos se utilizan para emparejar los records y subscrolls antes de la comprobación de los campos de registro-con nombre similar. . después de que los registros se han emparejado. en el objeto de rowset que desea copiar. record_list]) Dónde record_list es una lista de nombres de los registros en la forma: [RECORD.source_recname2. en el objeto rowset de la copia. Parametros &DestRowset Especifica el rowset que sera copiado. este método copia todos los registros con nombres idénticos. después de copiar los pares de registros con nombre.CopyTo Sintaxis CopyTo(&DestRowset [. Esto puede ser diferente de los valores de datos originales si el rowset se recupera de la base de datos y los valores en que se han cambiado ya sea por un usuario final o un programa de PeopleCode Si se dan pares de nombres de origen y de destino de registro. estos valores se copian en el rowset donde está copiando. SourceRecname Especifica un record para ser copiado. El método CopyTo utiliza los datos actuales en el rowset. RECORD. como la copia nombrando campos de registro y subscrolls en los niveles correspondientes. Si especifica record_list. Nota: Este método no funciona para los State Records Application Engine. Descripción El método CopyTo copia del rowset de la ejecución del método para el rowset de destino determinado. Si el rowset que se copia tiene el EditError nivel de campo.target_recname2]].source_recname1. Si no se especifica record_list. DestRecname Retornos: ninguno Especifique un registro para ser copiado. . RECORD. tanto el nombre de registro y el nombre del campo tienen que coincidir exactamente con los datos se copian de un campo de registro a otro. &RS2 = CreateRowset(RECORD. Local String &EMPLID. /* Populate Work Rowset */ = . &SUBNAME). &CHNLNAME.PERSONAL_DATA. /* Get the Message */ &MSG = GetSubContractInstance(&PUBID. The following example copies data from one rowset object to another. you can do the following: &RS2 = CreateRowset(&RS).CopyTo(&RS2).PER_VENDOR_DATA). Only the like-named fields are copied from one rowset to the other: Local Rowset &RS1.PER_VENDOR_DATA). so that an end-user can make corrections to the message data. RECORD. the record names are specified.CopyTo(&RS2. Because no like-named records exist between the two rowsets. /* Get Level 0 */ &WRK_ROWSET0 = GetLevel0().GetRowset(SCROLL. RECORD. then calls the page (using TransferPage) to redraw the page. &EMPLID = "8001".GetRowset(). Instead. &RS2. you have two variables pointing to the same data.PERSONAL_DATA). &MSGNAME. The following example copies data from a message into the Component buffers. &RS1. &WRK_ROWSET0 is the level zero rowset and &WRK_ROWSET1 is where the data is copied to. you haven’t made a copy of the rowset. &RS1 = CreateRowset(RECORD.EN_REVISION_TMP).Ejemplo If you set one rowset equal to another. &PUBNODE. &RS1. &RS. &EMPLID). You could do this to fill a page with message data that is in error. to make two distinct copies. /* Create Work rowset */ &WRK_ROWSET1 GetLevel0()(1). To make a clone of an existing rowset. /* Get the Message Rowset */ &MSG_ROWSET = &MSG.Fill("WHERE EMPLID =: 1". that is. como GetCurrEffRow. TransferPage(). DeleteRow Sintaxis DeleteRow(n) RECORD.&MSG_ROWSET. la segunda fila se convierte en la fila uno). Cuando la fila se marca como eliminado. Sort.EN_REVISION. El metodo DeleteRow borra el row en el rowset identificado por el parametro. Los rowsets creados unsando la función CreateRowset son rowsets independientes.CopyTo(&WRK_ROWSET1. A la hora de guardar el row se elimina definitivamente de la base de datos y borra de la memoria intermedia. seguido por los acontecimientos que normalmente siguen un RowDelete. debe eliminar de abajo hacia arriba y no de arriba hacia abajo. RECORD. es decir. DeleteRow no puede ser ejecutado en el mismo rowset donde la eliminación se lleva a cabo. y así sucesivamente. no están ligadas a la base de datos. como si el usuario hubiera presionado manualmente ALT 8 y ENTER. Cuando se utiliza DeleteRow en un ciclo.EN_REVISION_TMP). Nota: Si tu usas DeleteRow sobre un rowset creado con la function CreateRowset. un evento RowDelete PeopleCode también dispara. Si el programa se ejecuta desde un componente contra el buffer de datos de componentes. SetNextPage("EN_REVISION_MSG"). el row no se borra automaticamente en la base de datos cuando la pagina es guardada. . Esto es necesario porque las filas se numeran después de que se eliminen (si se elimina la fila uno. Actividades Delete e Insert en estos tipos de rowset no se aplican automáticamente a la hora de guardar. o desde un rowset hijo contra el padre. Este metodo inicialmente marca el row como necesidad de ser eliminado. se ignora por otros métodos. tienes que procesar las filas de arriba hacia abajo para lograr los resultados correctos. así que no hay actualizaciones de bases de datos cuando se manipulan. Coloca el PeopleCode en un rowset padre y ejecutarlo en contra de un rowset hijo. Fill Sintaxis Fill([wherestring [. Ejemplo En el siguiente ejemplo DeleteRow es usando en un ciclo For. usando los marcadores de posición de vinculación habituales (: n). there will be one row in the scroll even if you don’t read any records. . Esto asegura que la nueva numeración de las filas no afectan al ciclo.Parametros n Un entero identifica un row dentro del objeto rowset.]) El metodo Fill vacia el rowset entonces lee los registros desde la base de datos en filas sucesivas. Esto debe ser >= 1 y <= el número de filas activas del rowset(ActiveRowCount). incluyendo el uso de -1 en la cláusula del Paso desde la más alta a valores más bajos. End-If. En genera. Tener en cuenta la sintaxis del ciclo For. Los registros se leen las tablas de bases de datos correspondientes al registro de base de datos principal del desplazamiento en ese registro. Note: Because Flush always leaves one row in the scroll. en el que los bindvalues opcionales están sustituidos. este metodo se usa solamente en rowsets que han sido creados usando la function CreateRowset. El ejemplo comprueba un valor en cada fila. End-For. Los registros se seleccionan por la cláusula wherestring de SQL opcional.ActiveRowCount To 1 Step -1 If None(&CHECK_SEQ) Then &RS2. . Retornos Valor booleano opcional: True si se elimina la fila.DeleteRow(&I). elimina de forma condicional la fila. bindvalue] . For &I = &RS2. False en caso contrario. . a continuación. it can be a problem for DB2 UDB for OS/390 and z/OS and Oracle. Note: Fill reads only the primary database record. a rowset that was unpopulated. it does not cause any associated PeopleCode to run as part of reading data into the rowset. however. When this method executes.QA_MYRECORD). Fill is used with a rowset that was created from a message that was just created. &NUM_READ = &RS. nor any subordinate rowset records. To re-use a WHERE clause for the wherestring you can use the SQL repository. The following example reads all of the QA_MYRECORD records that have a MYRECORD field equal to the value of &UVAL into a rowset. and returns the number of rows read: &RS = CreateRowset(RECORD. you cannot use this method in dynamic views.MYWHERE. This is not a problem for SQL server. unlike the Select method. Parameters wherestring Specify a SQL WHERE clause to use for selecting recor or a SQL definition. and a SQL object.Fill("where MYRECORD = :1". For every record read with the Fill method.The actual number of records read into the rowset is an optional return of this method.Fill(). . &UVAL). bindvalue Specify optional bind variables to be used with the WH Returns The number of records read into the rowset. and returns the number of rows read: &NUM_READ = &RS. Example The following example reads all of the QA_MYRECORD records into a rowset. then updates SETID with the value from the page. Note: This method does not work with Application Engine state records. You receive a runtime error if you use the table name as a column prefix instead of the correlation ID. Sorting Considerations Rows come unsorted from the database when using Fill.Fill(SQL. if the set language is not the base language and the record has related language records. that is. &NUM_READ = &RS. the Fill method tries to read the related language record and does related language processing. It does not read any related records. Also. The Fill method uses a correlation ID of FILL for the table it reads. The following example gets all the SET_CNTRL_REC rows related to the row on the page. &UVAL). You must use the correlation ID if you want to refer to the rowset table name as part of the wherestring. %Component). &MSG.SETID.PERSONAL_D00).Fill("where SETCNTRLVALUE =:1 and REC_GROUP_ID =:2". End-For.Fill("WHERE FILL. The following example uses a correlation ID for the table in the Fill SELECT.GetRowset().COUNTRY AND GBL2.MY_ASYNC).ActiveRowCount &MSG_ROWSET. the IsChanged property of each field in a part rowset is not set to true. &EFFDT).GetRow(&I).Publish().CopyTo(&rs). &EMPLID.FILL.COUNTRY = FILL.AUDIT_ACTN. &MSG_ROWSET. such as the usual effective-date subquery: &RSOWNER_NAME = CreateRowset(RECORD.PSCAMA.If FieldChanged(SETID) Then &MSG = CreateMessage(OPERATION. &oprclasscountries. .SCRTY_TBL_GBL). %IntBroker.SET_CNTRL_REC. &trs. When using the Fill method.Fill("where PM_AGENTID >= 12345").OPRCLASS AND GBL2. Because the fields appear to be unchanged. &MSG_ROWSET. &OPRCLASS. SETCNTRLVALUE. &RSOWNER_NAME.Value = SETID. this can create a problem for publication of data from Message rowsets.:3)".SET_CNTRL_REC).OPRCLASS = :1 AND NOT EXISTS (SELECT 'X' FROM PS_SCRTY_SEC_GBL GBL2 WHERE GBL2. REC_GROUP_ID). &oprclasscountries = CreateRowset(Record.Fill("where SETID=:1 AND EMPLID=:2 AND %EffDtCheck(PERSONAL_D00. A technique to avoid this problem is to create a second rowset and use the CopyTo method to copy the changes to the Message rowset as shown in the following example: &a = CreateMessage(Operation.PSPMAGENT). The Fill method implicitly uses Fill as an alias for the Rowset record. End-If. &trs. This is helpful for complex Fill where clauses with subqueries.PNLNAME = :2)". to enable the use of correlated subqueries in the WHERE clause.GetRow(&I).Publish(&a). For &I = 1 To &MSG_ROWSET. &rs = &a. &SETID. &trs = CreateRowset(Record.GetPartRowset(1). &MSG_ROWSET = &MSG.OPRCLASS = FILL.Value = "C". GetRecord(1)).ActiveRowC ount).CopyFieldsTo(&CompRec2RS(&CompRec2RS. &ElemDefnRec." | &pkgRecName)). string &MySqlString. Record &ElemDefnRec.Execute(&ElemDefnRec).In the following example. /* Initialize the SQL string */ &MySqlString = "%SelectByKey(:1 A)". and the values are used as part of the Fill method.Name. Local Local Local Local Local SQL &MySql. . &fldname.Fetch(&ElemDefnRec) &ElemDefnRec. /* Build the record object that is used for building the SQL and executing the select */ &ElemDefnRec = CreateRecord(@("Record." | &fldname)). Function FillRS2(). string &ElemDefnRecName. End-If. &MySql. /* Create the SQL and execute the select */ &MySql = CreateSQL(&MySqlString).GetRecord(@("Record. /* Create a SQL to select a rows based on the key fields. then the following function is called.Value = &CompRec2RS. Rowset &CompRec2RS.FieldCount If &ElemDefnRec.Value. End-While.GetField(@("Field.GetField(&i). */ For &i = 1 To &ElemDefnRec. the necessary key field values are loaded into a rowset.GetRow(1).IsKey Then &fldname = &ElemDefnRec. /* Copy each selected row into the rowset */ While &MySql. End-For. End-Function." | &pkgRecName)).GetField(&i).GetField(&i). that is. a Select. After flushing and repopulating the rowset. Parameters None. This can be managed using methods such as IsUserSorted. Esto significa Flush no se puede utilizar para el rowset que contiene el programa en ejecución. No se puede eliminar el contexto actual del programa en ejecución. Considerations When Initializing New Rows Flush removes all rows and inserts a row. If you want to initialize the row. through a Fill. an Application Engine program. Coloca el PeopleCode en un rowset padre y ejecutarlo en contra de un rowset hijo. Esta función se utiliza a menudo para eliminar un desplazamiento de trabajo antes de utilizar el método Select. el método Flush ejecuta en modo turbo sólo-es decir. Nota: Vaciar siempre deja una fila en el desplazamiento. the rows are flushed but the row that is inserted is not initialized. If the rowset is created from message data. GetFirstUserSortedRow. have the defaults and any RowInit PeopleCode run. your PeopleCode program should re-sort the rowset (that is. and then by setting the TopRowNumber property accordingly. This can be as simple as setting the value of another field on the same page that has a PeopleCode program associated with it. then the user's personalized sort will be reapplied via the PeopleCode sort. Las filas que se vacían no se eliminan de la base de datos. this could invalidate the user's personalized sort and the current row in the user's view unless your PeopleCode program makes arrangements to reapply these user personalizations. Returns . Also. re-sort the grid). el procesamiento se realiza por defecto. o en cualquier rowset hijo y ejecutados contra el rowset padre. See IsUserSorted. or a series of InsertRow calls). it will be important to manage which row is deemed the current row.Flush Syntax Flush() Description Utilice el método Flush para eliminar todas las filas del rowset y liberar su memoria intermedia asociada. pero sólo en que se tiran la fila. and so on. Para los rowset que corresponden a datos del búfer de componentes. MapBufRowToUserSortRow. If the user has a personalized sort. Considerations for User-Sorted Grids If a grid has a user personalized sort defined for it and your PeopleCode program flushes that grid and then repopulates it (for instance. after flushing and repopulating a grid. you must do something to invoke the default value processing. Additional information on turbo mode and non-turbo mode is available in the documentation with the InsertRow PeopleCode built-in function. but only on the row being inserted. Place your PeopleCode in a parent rowset and execute it against a child rowset. InsertRow Syntax InsertRow(n) Description InsertRow InsertRow realiza mediante programación el ALT 7 y ENTER función (RowInsert). the InsertRow method executes in turbo mode only—that is. CHECKLIST_CD).Flush(). default processing is performed.CHECKLIST_ITEM. InsertRow inserta una nuevo row del rowset actual después de la fila especificada por el parámetro si el registro principal para el rowset no es eficaz en fecha o un rowset independiente. Example The following example checks for the value of the field CHECKLIST_CD. InsertRow propaga las llavez de desde e mas alto nivel en los row insertados. Ademas. y todos los valores de la fila actual se copian en la nueva fila. &RS1H. Note: If you use InsertRow on a rowset created using the CreateRowset function. or from a child rowset against a parent. If the program is being run from a component against Component buffer data. "where Checklist_CD = :1 and EffDt = (Select Max(EffDt) from PS_CHECKLIST_ITEM Where CheckList_CD = :2)". See InsertRow. the second level rowset is flushed and new values are selected into it.Select(RECORD. CHECKLIST_CD. If All(CHECKLIST_CD) Then &RS1H. InsertRow propagates the keys from the higher level (if any) into the inserted row. la nueva fila se inserta antes de la fila actual. InsertRow cannot be executed from the same rowset where the insertion will take place. so there are no database updates when they are manipulated. Si el registro primario para el rowset es efectiva con fecha posterior o de un conjunto de filas independiente. End-If. excepto para EFFDT. not tied to the database. the row isn't automatically inserted in the database when the page is saved. . The InsertRow method can be executed against the same rowset where the insertion will take place. followed by the events that normally follow a RowInsert. In addition. For rowsets corresponding to component buffer data. a RowInit PeopleCode event also fires. as if the user had manually pressed ALT+7 and ENTER. Delete and insert activity on these types of rowsets aren't automatically applied at save time. If something exists in this field. Rowsets created using the CreateRowset function are standalone rowsets. que se fija a la corriente fecha.None. Usando este metodo es modificar la propiedad visible de cada row del rowset a False. The code is running from the first level of the scroll. the new row is inserted after the second row in the rowset.InsertRow(2). if that row contains child scrolls. The current date is not used. . Returns None. HideAllRows hides all rows of the rowset. or in any child rowsets and be executed against the parent rowset. Parameters n Returns An integer identifying a row within the rowset object. The effective-date field for this empty row is also empty. as the primary database record isn’t effective-dated. This must be >= 0 a property ActiveRowCount). Local Rowset &RS1. Parameters None. You cannot hide rows in the current context of the executing program. This means HideAllRows cannot hide the rowset containing the executing program. An optional Boolean value: True if the row is inserted. False if the row is not inserted. this method also inserts an empty row for any child scrolls. HideAllRows Syntax HideAllRows() Description HideAllRows oculta todos los rows del rowset. Example The following example hides the second level scroll if a value exists in the NO_COMMENTS field in the first level of the scroll. &RS2. Yo no puedes ocultar roes dentro del context del programa que se esta ejecuntando. Using this method is equivalent to a loop setting the visible property of each row of the rowset to False. Place your PeopleCode in a parent rowset and execute it against a child rowset. &ROWSET. Example In the following example.Effective-Dated Row Considerations When a row is inserted. A value of 0 inserts in front of the first row. Usando este metodo es equivalente a modificar la propiedad visible de cada row en el rowset a True. ShowAllRows cannot be executed from the same rowset you want to display. &RS2 = GetRowset(SCROLL.NO_COMMENTS) Then &RS2. or from a child rowset against a parent.EMPL_CHKLST_ITM). /*other processing */ End-For. ShowAllRows Syntax ShowAllRows() Description ShowAllRows desoculta todas rows del objeto rowset ejecutandose en el metodo. FlushRow Syntax FlushRow(n) Description .EMPLOYEE_CHECKLIST. Example &ROWSET. Using this method is equivalent to a loop setting the visible property of each row of the rowset to True.GetRow(&I).ShowAllRows().HideAllRows().ActiveRowCount If ALL(&RS1.&RS1 = GetRowset(). End-If. Parameters None Returns None. ShowAllRows "unhides" all rows of the rowset object executing the method. For &I = 1 to &RS1. Place your PeopleCode in a parent rowset and execute it against a child rowset. es decir. Este método a continuación.html ClearDeletesChanges Sintaxis ClearDeletesChanges() Use el método ClearDeletesChanges para borrar rows eliminadas y cambiado de rowset independiente. se liberan. es decir. en su caso. Nota: este método trabaja solamente con rowsets independientes. Place your PeopleCode in a parent rowset and execute it against a child rowset. El Metodo FlushRow es especializado y frecuentemente usado. This means FlushRow cannot be used for the rowset containing the executing program. Después de hacer las actualizaciones de . borra las rows modificadas.Use el metodo FlushRow para remover un row en específico del rowset y del buffer de component. You cannot flush the current context of the executing program. Eso significa que los cambios realizados en un row (como valores de campo modificados) o rows recién insertados ahora se propaga a su estado original y los buffers modificados. Los Rows flusheados no son borrados de la base de datos. rowsets creados usando la función CreateRowset.oracle. todas las rows que han sido eliminadas usando DeleteRow que se eliminen del rowset y sus buffers asociados son liberados. tu puedes usar DeleteRow para remover un row del buffer de componente y remover de la base de dato hasta que el componente es guardado. ¿Cómo utilizar este método? Suponga que utiliza un rowset independiente para rastrear los cambios que necesita hacer a algún proceso de negocio o un objeto.com/cd/E41633_01/pt853pbh1/eng/pt/tpcr/langref_R owsetClassMethods-c07c55. http://docs. Después de ejecutar este método en un rowset independiente. El muchas ocaciones. cualquier row que antes era nuevo o modificado ya no tiene ese estado. las rows eliminadas solamente  sólo se aplica a los rowset independientes Este método primero limpia las rows eliminadas. Las propiedades isNew y IsChanged de una fila devuelven false. or in any child rowset and executed against the parent rowset. Este método difiere desde Flush en un numero de maneras:  no elimina todas las rows del rowset. Este método no hace las actualizaciones de base de datos. se llama a este método para limpiar el rowset en preparación para su posterior procesamiento. If Not &rwTMP.Update().IsChanged And Not &rwTMP.IsChanged And Not &rwTMP. Function ProcessDatabaseUpdateforRowset(&rsIn As Rowset) For &i = 1 To &rsIn. REM +-----------------------------------------------+. &rTMP.IsNew And &rwTMP. REM | remove deleted rows |. .Insert() End-If. Sin este método. REM | Function to Update the DB for a Standalone Rowset|.ClearDeletesChanges(). REM +--------------------------------------------------+.GetRecord(1).IsDeleted Then &rTMP = &rwTMP.IsDeleted Then &rTMP = &rwTMP. &rTMP. If &rwIn.Delete(). &rsIn. End-If.las bases de datos apropiadas para reflejar los cambios registrados en el rowset (es decir. los rows recién insertadas y filas modificadas conservan su estado IsNew y IsChanged indefinidamente.GetRecord(1).IsNew And &rwTMP.GetRecord(1). inserciones o eliminaciones o cambios). End-If. REM +-----------------------------------------------+.IsNew Then &rTMP = &rwIn.IsDeleted And Not &rwIn. REM | Now we need to reset the Rowset flags and |.GetRow(&i). lo que complica la lógica del programa y que puede conducir a duplicar las inserciones o eliminaciones. Parámetros: ninguno Retornos: ninguno Ejemplo REM +--------------------------------------------------+. End-For. &rTMP. If &rwTMP.RowCount &rwTMP = &rsIn. .End-Function.
Copyright © 2024 DOKUMEN.SITE Inc.