Tutorials

Labels
AJAX(112) App Studio(8) Apple(1) Application Builder(245) Application Factory(207) ASP.NET(95) ASP.NET 3.5(45) ASP.NET Code Generator(72) ASP.NET Membership(28) Azure(18) Barcode(2) Barcodes(3) BLOB(18) Business Rules(1) Business Rules/Logic(140) BYOD(13) Caching(2) Calendar(5) Charts(29) Cloud(14) Cloud On Time(2) Cloud On Time for Windows 7(2) Code Generator(54) Collaboration(11) command line(1) Conflict Detection(1) Content Management System(12) COT Tools for Excel(26) CRUD(1) Custom Actions(1) Data Aquarium Framework(122) Data Sheet(9) Data Sources(22) Database Lookups(50) Deployment(22) Designer(177) Device(1) DotNetNuke(12) EASE(20) Email(6) Features(101) Firebird(1) Form Builder(14) Globalization and Localization(6) How To(1) Hypermedia(2) Inline Editing(1) Installation(5) JavaScript(20) Kiosk(1) Low Code(3) Mac(1) Many-To-Many(4) Maps(6) Master/Detail(36) Microservices(4) Mobile(63) Mode Builder(3) Model Builder(3) MySQL(10) Native Apps(5) News(18) OAuth(9) OAuth Scopes(1) OAuth2(13) Offline(20) Offline Apps(4) Offline Sync(5) Oracle(11) PKCE(2) Postgre SQL(1) PostgreSQL(2) PWA(2) QR codes(2) Rapid Application Development(5) Reading Pane(2) Release Notes(184) Reports(48) REST(29) RESTful(29) RESTful Workshop(15) RFID tags(1) SaaS(7) Security(81) SharePoint(12) SPA(6) SQL Anywhere(3) SQL Server(26) SSO(1) Stored Procedure(4) Teamwork(15) Tips and Tricks(87) Tools for Excel(2) Touch UI(93) Transactions(5) Tutorials(183) Universal Windows Platform(3) User Interface(338) Video Tutorial(37) Web 2.0(100) Web App Generator(101) Web Application Generator(607) Web Form Builder(40) Web.Config(9) Workflow(28)
Archive
Blog
Tutorials
Sunday, March 18, 2012PrintSubscribe
Total and Subtotal: Business Rule for Subtotal

The Subtotal field is now present in the application. The field does not reflect changes when new order items are entered. We will add a business rule to the Orders controller and add a code expression for Subtotal. This code expression will use the rule to calculate the subtotal.

In the Project Explorer, switch to Controllers tab. Double-click on the Orders controller. In the Handler field, type:

OrdersBusinessRules

Adding 'OrdersBusinessRules' Handler to 'Orders' Controller

Press OK to save the controller, exit the Designer, and Generate the project. The business rule placeholder file will be created.

When generation is complete, click on the project name in the web application generator and press Develop. Microsoft Visual Studio or Visual Web Developer will open. In the Solution Explorer on the right side of the screen, double-click on App_Code /Rules / OrdersBusinessRules.cs(vb).

OrdersBusinessRules.cs Rule file in OrderForm project

Paste in the following code:

C#:

using MyCompany.Data;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
namespace MyCompany.Rules
{
    public partial class OrdersBusinessRules : MyCompany.Data.BusinessRules
    {
        public decimal CalculateOrderDetailsTotal(int? orderID)
        {
            using (SqlText calc = new SqlText(@"select sum(unitprice * 
                    quantity * (1 - discount)) from 
                    [Order Details] where OrderID= @OrderID"))
            {
                calc.AddParameter("@OrderID", orderID);
                object total = calc.ExecuteScalar();
                if (DBNull.Value.Equals(total))
                    return 0;
                else
                    return Convert.ToDecimal(total);
            }
        }
    }
}

VB:

Imports MyCompany.Data
Imports System
Imports System.Collections.Generic
Imports System.Data
Imports System.Linq
Namespace MyCompany.Rules

    Partial Public Class OrdersBusinessRules
        Inherits MyCompany.Data.BusinessRules
        Public Function CalculateOrderDetailsTotal(
                            ByRef orderID As Nullable(Of Integer)) As Decimal
            Using calc As SqlText = New SqlText(
                    "select sum(unitprice * quantity * (1 - discount)) " +
                    "from [Order Details] where OrderID=@OrderID")
                calc.AddParameter("@OrderID", orderID)
                Dim total As Object = calc.ExecuteScalar()
                If DBNull.Value.Equals(total) Then
                    Return 0
                Else
                    Return Convert.ToDecimal(total)
                End If
            End Using
        End Function
    End Class
End Namespace

This function uses SqlText utility class to create an instance of a query connected to the project’s database.
This simple query selects a sum of UnitPrice multiplied by Quantity multiplied by one minus the
Discount.

Note that SqlText utility class is generated as a part of the code base of your application. It uses the
default database connection string and ADO.NET to execute the query.

Save the file, and switch back to the application generator. Select the project name, and press Design. In the Project Explorer, switch to Controllers. Double-click on Orders / Fields / Subtotal. Make the following changes:

Property Text
The value of this field is calculated by a business rule expression True
Code Formula
CalculateOrderDetailsTotal(orderID)
Context Fields OrderDetails

Code Formula for 'Subtotal' field
'Context Fields' property of Orders / Fields / Subtotal

Press OK to save the field. The Subtotal field on the Order Form will now update to reflect any changes made to the order details.

Saturday, March 17, 2012PrintSubscribe
Total and Subtotal: Creating Order Total Field

Let’s add a Total field to the Orders controller. This field will add Subtotal and Freight together to show the final cost of the whole order.

In the Project Explorer, select the Orders controller, and right-click on Fields. Press New Field.

Add New Field in 'Orders' Controller

Give this new field the following settings:

Property Value
Name Total
Type Currency
The value of this field is computed at run-time by SQL Expression
(select sum(unitprice*quantity*(1-discount)) 
from "order details" 
where "Order Details".OrderID = Orders.OrderID) + Orders.Freight
The value of this field is calculated by a business rule expression
CalculateOrderDetailsTotal(orderID) + freight
Label Total
Data Format String c
Values of this field cannot be edited True
Context Fields OrderDetails, Freight

New 'Total' Field properties, Part 1
New 'Total' Field properties, Part 2
New 'Total' Field properties, Part 3

Press OK to save this field.

We’ll need to bind this field to the data views. In the Project Designer, switch to Data Fields tab. On the action bar, press New | New Data Field. Use the following settings:

Properties Value
View editForm1
Category Orders

'Total' data field in 'editForm1' View

Press OK to save the data field. Double-click on Total field again, and create another data field with the following settings:

Properties Value
View grid1
Category N/A

'Total' data field in 'grid1' View

Save the data field, and regenerate the application. Navigate to the Order Form page, and select any order. You will see a Total field that sums up Subtotal and Freight.

New 'Total' field in the Order Form of the web application

Friday, March 16, 2012PrintSubscribe
Total and Subtotal: Creating Subtotal Field

Let’s add a Subtotal field to the order. This field will sum up the extended prices of all order details.

In the Project Explorer, switch to Controllers tab. Right-click on Orders / Fields, and press New Field.

Creating a new field for Orders controller

The new field’s settings will be:

Property Text
Field Name Subtotal
Type Currency
The value of this field is computed at run-time by SQL Expression True
SQL
select sum(unitprice*quantity*(1-discount)) from "order details"
where "Order Details".OrderID = Orders.OrderID
Label Subtotal
Values of this field cannot be edited True
Data Format String c

New 'Subtotal' field settings in Code On Time Designer

Press OK to save the field.

Your application will incorporate this SQL Formula in the SELECT statements composed at runtime. This statement will look similar to:

select *, 
   (
   select sum(unitprice*quantity*(1-discount)) from "order details"
   where "Order Details".OrderID = Orders.OrderID
   ) Subtotal
from 
   "Orders" Orders

This is the output produced when the statement is executed in SQL Management Studio. The actual statement will look more complex, and may include user-defined sorting, filtering, and paging parameters.

Simplified statement of 'Subtotal' SQL Formula calculation in SQL Management Studio

We’ll need to bind this field to views, so that the end user can see the field value.

On the field’s page, switch to the Data Fields tab. On the action bar, press New | New Data Field. Enter the following settings:

Property Text
View editForm1
Category Orders

New 'Subtotal' Data Field in editForm1

Press OK to save the data field. Double-click on the field in the Project Explorer to go back to the list of data fields. Create another data field with the following settings:

Property Text
View createForm1
Category New Orders

New 'Subtotal' Data Field in createForm1

Regenerate the application, and select any order on the Order Form page. You will see the Subtotal field showing the sum of extended prices.

'Subtotal' Field displayed in Order Form page of web application