| (+) APEX 4.1 Early Adopter||Features available in Oracle Application Express 4.1 - Early Adopter 1, Released xx-May-2011|
|... (+) Application Builder||Enhancements made to the Application Builder|
|... (+) Charting Engine||Improvements made to charting capabilities|
|... (+) Dynamic Actions||Enhancements to Dynamic Actions|
|... (+) Improved Error Handling||Improve error handling and user-defined exception processing|
|... (+) Interactive Reports||Enhancements to Interactive Reporting|
|... (+) Item Types||Enhancements to Item Types.|
|... (+) Other Features||Other new features in APEX 4.1|
|... (+) Plug-Ins||Add plug-in support for additional components and enhance plug-in definitions.|
|... (-) Tabular Forms||Continue to expand tabular forms validations.|
|...... Add ability to define row headers in reports||EA2||Tabular forms now provide the ability to define a row header to improve accessibility. A row header is used along with the column header to render the labels of tabular form items. A developer can select any column to be the row header. If one column is designated as the row header, then the current row value of that column is used along with the column header as the item label, so the taking the EMP table as an example, the label for the salary field of the empoloyee named "King" would be "Salaray: King"|
|...... Allow for columns that are part of composite PK to be also a FK column||EA2||Tabular forms prior to APEX 4.1 required the selection of one or two primary key columns, neither one could be used as a foreign key in a master-detail form. In APEX 4.1 this is now supported, provided the ROWID column is selected as the primary key column of the tabular form.|
|...... Improved Tabular Form Validation and Processes||EA1||Tabular Forms now support all validation types. Depending on the validation type you can use bind variable syntax, substitution syntax or you just specify the tabular form column name. The validation is executed for each submitted row of the tabular form.
Processes can now be defined for Tabular Forms as well, which allows you to easily process the submitted rows of a tabular form without having to deal with the apex_application.g_f01 - apex_application.g_f50 arrays. Depending on the process type you can use bind variable syntax, substitution syntax or just specify the tabular form column name.
The condition handling of Validations and Process have also been enhanced to better work with Tabular Forms. The new attribute "Execution Scope" allows to define for which rows the validation/process should be executed. The condition can now refer to tabular form columns if the new attribute "Execute Condition" is set to "For Each Row".
Validation and Processes which are assigned to a Tabular Form can also use the built-in Tabular Form column names "APEX$ROW_NUM", "APEX$ROW_STATUS" and "APEX$ROW_SELECTOR" in the validation, process or condition to refer the row number, row status (C=created, U=updated, D=deleted) and row selector checkbox (X=checked, null when not checked) of the currently processed tabular form row.|
|... (+) Use of ROWID||Allow usage of ROWID for Automatic DML processing by selecting ROWID as the primary key for a table or view when creating forms. The feature will allow developers to create forms and use the default DML processing on tables that do not have a natural primary key, as well as forms on views that do not expose the primary key.|
|... (+) Websheets||Improved user interface, new page section types, and enhanced spreadsheet / datagrid integration|