Forms, Reports, Apps

Build and deploy rapidly. Use offline, online, on-premises.

  Blog

Blog
Tuesday, November 13, 2018PrintSubscribe
Release 8.7.6.0 Hot Fix 1

The following features and bug fixes are included in release 8.7.6.0:

  • It is now possible to manually connect  1-to-1 entities in the model builder even when the foreign keys are not defined in the database.
  • Legacy ASPX page implementation does not reveal static content in Touch UI.
  • Unlimited Edition Trial  now supports cultures other than en-US.
  • Method BusinessRules.PreventDefault now accepts optional "cancelSelectedValues" argument. If set to "true" then processing of multiple values is immediately interrupted. This may be useful to avoid iteration over each selected row when the business rule has performed processing of Arguments.SelectedValues array on the first selected value
  • (Classic UI) Bootstrap pages are correctly "sized" for "lg" screen with the expected container width of 970 pixels.
  • (Classic UI) Fixed "match not defined" in _registerSpecialAction method of DataView.
  • "Left join" to "inner join" optimization is now disabled when selecting data if “Quick Find” or “Is Null” filters are detected.
  • (Touch UI) If a new lookup item is created in a from then the parent form in "edit" mode will not lose its selected key value.
  • Fixed incorrect exception reporting from forms. Exceptions were not delivered to the client if there was no transaction on the server.
  • Distinct requests to get values will override the model-defined Order By statement when creating a Group By expression.
  • (Touch UI) Import process correctly starts after the mapping of fields has been completed.
  • Fixed the error with view-level sort expression being ignored.
  • Fixed compilation issue in Standard edition apps caused by new Business Rule Builder available in Site Content.

Model Builder has been enhanced in this release with additional support for 1-to-1 entities. Borrowed/inherited required columns are displayed as bold. The legend in the Spec displays both “W” and “B” letters signifying that the field is writeable and borrowed. If a developer is manually connecting primary key of one entity to another then the 1-to-1 relationship is established.

This is a simplified model of HumanResources.Employee2 table from Adventure Works sample database. The table inherits columns from Person.Person2 and Person.BusinessEntity.

1-to-1 entity in the Model Builder of Code On Time.

The form of Employee will display writable columns from all tables of the 1-to-1 relationship and persist them in a context of a transaction.

Entering a 1-to-1 entity in the app created with Code On Time app builder.

Please note that “rowguid” and “ModifiedDate” columns were also marked as hidden in this sample.

Monday, November 5, 2018PrintSubscribe
Native Apps, 1-to-1 Entities, Unlimited Edition Trial

It is our pleasure to announce release 8.7.5.0. The highlight of this release is the ability to create Native Apps for iOS, Mac OS, and Windows 10. Any app created with the new release will work on mobile devices.

For the first time we are also introducing framework support for 1-to-1 database entities. Model Builder automatically recognizes one-to-one relationships in your database and creates a singles editable entity with full transactional support when updating, inserting, and deleting records. See examples from Adventure Works database below:

Person 1-to-1 Entity Model

image

Employee 1-to-1 Entity Model

image

Model Builder configures the new lookup style “1-to-1” on the primary keys of entities. Borrowed fields are configured as virtual to enable data input. The framework treats all fields as if they belong to a single record. Saving data will distribute information to the right tables in the context of a transaction.

Transactional support has been extended to “Many-To-Many” fields. For example, if the master with a many-to-many field fails to delete due to database constraints then the linked delete many-to-many items will be rolled back.

Linked-In OAuth provider is now available to allow authentication and single sign-on.

New robust implemention of GEO location detection is available in mobile and web apps.

App generator now uses “var” keyword whenever possible for a cleaner code.

Also for the first time we make the full power of Unlimited Edition available at no charge on the trial basis. The code framework of Unlimited Edition apps is incorporated in the single FreeTrial.dll included in the apps. Unlimited Edition Trial makes possible testing of the full featured applications.

Friday, November 2, 2018PrintSubscribe
Increasing Command Timeout

Commands issued by the application framework use a default timeout of 30 seconds. When necessary, this timeout can be changed to fit application requirements.

Let’s change the default command timeout to 5 minutes.

Start Code On Time web application generator, and click on the project name. Then, click on Develop option. The project will be opened in Visual Studio.

In the Solution Explorer, right-click on ~\App_Code folder and press Add | Add New Item.

Adding a new item under 'App_Code' folder in the project.

Select Class from the list and press Add to create the file. Replace the code with the following:

C#:

using System;
using System.Data.Common;

namespace MyCompany.Data
{
    public partial class Controller
    {
        protected override DbCommand CreateCommand(DataConnection connection)
        {
            DbCommand command = base.CreateCommand(connection);
            command.CommandTimeout = 60 * 5;
            return command;
        }
    }
}

Visual Basic:

Imports Microsoft.VisualBasic
Imports System
Imports System.Data.Common

Namespace MyCompany.Data
    Partial Public Class Controller
        Protected Overrides Function CreateCommand(connection As DataConnection) As DbCommand
            Dim command As DbCommand = MyBase.CreateCommand(connection)
            command.CommandTimeout = 60 * 5
            Return command
        End Function
    End Class
End Namespace

Save the file.

Let’s make sure that the application uses the new command timeout. Place a breakpoint at the last line in the method, and press F5 key to run the web app.

Placing a breakpoint in the class.

Navigate to any page that has a data view. The application will stop at the breakpoint. Mouse over the command timeout property – the value will now be “300”.

The value of 'CommandTimeout' property has been changed.

Continue to Cloud On Time of OSX