Blog

Labels
AJAX(112) App Studio(7) 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(183) 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
Tuesday, February 19, 2013PrintSubscribe
Calling a Stored Procedure

SQL business rules allow server-side code to be executed in response to certain conditions. In addition to executing anonymous SQL code blocks, business rules can also be used in order to trigger a stored procedure.

Let’s create a stored procedure in the Northwind database that will calculate the average value of Freight for a specified customer. Then, a business rule will be added that will be triggered before every Update and Insert command in the Orders controller, and will use the stored procedure to verify that the Freight does not exceed the average freight. If it does, a message will be displayed and the command will be canceled.

Creating a Stored Procedure

Start SQL Server Management Studio. In the Object Explorer, right-click on Databases / Northwind node, and press New Query.

Creating a new query for Northwind database.

Insert the following query:

create procedure sp_ValidateFreight
    -- inputted customer
    @CustomerID nvarchar(5),
    -- returned average freight
    @AverageFreight money output
as
begin
   select @AverageFreight = AVG(Freight) 
   from Orders
   where CustomerID = @CustomerID
end
go

On the toolbar, press Execute to create the stored procedure.

Adding the Business Rule

Start the Project Designer. In the Project Explorer, switch to the Controllers tab. Right-click on Orders / Business Rules node, and press New Business Rule.

Creating a new business rule for Orders controller.

Assign the following values:

Property Value
Type SQL
Command Name Update|Insert
Phase Before
Script
declare @AvgFreightOfOrders money
-- execute stored procedure
exec sp_ValidateFreight @CustomerID,
    @AverageFreight = @AvgFreightOfOrders output
-- check the freight
if @AvgFreightOfOrders is not null 
    and @AvgFreightOfOrders < @Freight 
begin
    -- prevent actual Update or Insert from happening
    set @BusinessRules_PreventDefault = 1 
    -- show an alert next to the Freight field
    set @Result_Focus = 'Freight,The freight exceeds the average' 
    + ' of $' + CONVERT(varchar(12), @AvgFreightOfOrders, 1) 
    + ' of previous orders.'
end

Press OK to save the business rule.

Viewing the Results

On the toolbar, press Browse. When generation is complete, navigate to the Customers page, select a customer, and create a new order. Enter a very high value for Freight, and save the record. The save will be canceled and a message will be displayed next to Freight.

The business rule returned the average value from the stored procedure and displayed a message next to the Freight field.

Enter a value below the displayed average and press OK. The order will be saved.

Tuesday, February 19, 2013PrintSubscribe
PostgreSQL Sample Web Application

The PosgreSQL open-source database management system offers several sample databases. One of these samples is Pagila, a conversion of the sakila sample database from MySQL. Let’s use Code On Time generator to create a web app straight from this database.

Installing PostgreSQL and Pagila

First, download the correct version of PostgreSQL for your computer. Run the installer and follow the instructions to complete the installation.

Next, download the Pagila sample database. Follow the README file instructions to install the database.

Registering NpgSQL .NET Data Provider in GAC

We will be using NpgSQL .NET Data Provider to connect to the PostgreSQL database engine. This data provider is designed by the vender to be deployed alongside the binary files of a .NET web application to eliminate any need to install client software. Code On Time generator and produced web apps use a provider-independent model when interacting with the application database. This model of database access requires registration of native data providers in the Global Assembly Cache (GAC). Follow the instructions below to register the Npgsql data provider in GAC.

Download the NpgSQL .NET 4.0 Provider for PostgreSQL. Extract the contents of the zip file.

Run cmd.exe as administrator.

Running the command prompt as administrator.

Use the following command to navigate to the location of “gacutil.exe” tool. The tool will be present if Visual Studio is installed. Otherwise, install the Microsoft SDK for .NET Framework 4.0. The location and version of the SDK may be different on your computer.

cd C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools

Next, run the following line to register the data provider in the Global Assembly Cache. Make sure to use the correct path to the extracted “Npgsql.dll” file.

gacutil.exe /i "[Path]\Npgsql.dll"

If the installation was successful, you will see the text “Assembly successfully added to the cache”.

Installation of Npqsql to the global assembly cache was successful.

Repeat the process to install the second required DLL using the following line.

gacutil.exe /i "[Path]\Mono.Security.dll"

The next step will be to add a reference in the machine.config file for both 32-bit and 64-bit versions of Microsoft.NET.

You must update both configuration files on 64-bit machines.

Run Visual Studio as an administrator.

Running Visual Studio as administrator.

On the toolbar, press File | Open | File.

Opening a file in Visual Studio 2012.

Open the 32-bit machine.config file, located at C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config.

Within the XML file, locate the configuration/system.data/DbProviderFactories section. Add the following line inside the section. Note that your data provider version may be different.

<add name="Npgsql Data Provider" invariant="Npgsql"  support="FF" description=".Net Framework Data Provider for Postgresql Server" type="Npgsql.NpgsqlFactory, Npgsql, Version=2.0.12.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" />
Save the file. 

Open the 64-bit machine.config file, located at C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config. Add the same configuration element inside configuration/system.data/DbProviderFactories.

Save the file. The provider is now configured.

Creating a Web Application

Start Code On Time web application generator. Click on Create new web application. Select Web Site Factory from the list.

Creating a Web Site Factory project.

Assign a name of “PagilaDemo”, select the programming language of your choice, and press Create.

Assigning a name to the project.

Preserve the default Namespace and Framework, and press Next.

On the Database Connection page, select “.Net Framework Data Provider for Posgresql Server” for Data Provider. Then, click on the “…” button next to Connection String field.

Specifying Npgsql Provider as the data provider and activating the connection string configuration screen.

Enter the connection string properties and press Test to confirm.

Successful test of PostgreSQL connection string.

Press OK to use the configured connection string. Press Next until you reach the Reports screen. Check the box to enable reporting.

Enabling reports in the web application.

Press Next until you reach the Theme page. Select “Yoshi” from the list.

Selecting 'Yoshi' theme on the Theme page of the Project Wizard.

Hold down Shift key and press Next to skip to the Summary page. Press Generate and wait for the web app to load in the default browser.

Pagila web app running in Internet Explorer 9.

Wednesday, February 13, 2013PrintSubscribe
Roadmap 2013

Code On Time web app generator has introduced impressive capabilities for rapid application development over the last year.

We will continue introducing new easy-to-use features in the design environment and application framework.

The features will be delivered in three phases followed by an introduction of a new product, http://cloudontime.com.

Phase I

  • Second Generation Data Sheet view with support for hierarchies, horizontal and vertical scrolling, column resizing, reordering and freezing is the industry’s first web grid that rivals features and performance of desktop implementations.
  • Tools for Excel is a new design tool providing an alternative application development environment integrated in Microsoft Excel. Both beginners and power users will benefit from the ability to perform massive rapid changes to the project configuration elements.
  • Mobile Client Library will enable creating a single web app that adapts its presentation on mobile and desktop devices. Existing web apps created with Unlimited edition of Code On Time will automatically take advantage of the new client library. Developers will have an option to introduce desktop-only and mobile-only pages.
  • Multi-User Support in Designer will enable automated merging of designer transaction logs from multiple users.

These features will begin rolling out starting in February of 2013.

Phase II

  • Support for ASP.NET 4.5 will be introduced in the application framework.
  • DotNetNuke Factory will be updated to support DNN 7.
  • BLOB Adapters will enable code-free configuration of binary content processing with externalized storage in the file system with optional image preprocessing. Windows Azure Storage will also be supported as a replacement for the file system.
  • Native Import processor will handle uploaded files in CSV format without the need for Microsoft Access Database Engine to be deployed to the server.

Phase III

  • Map View is a new view type that will enable presentation of data on Google Maps and Bing Maps.
  • Enhanced Lookup Styles will enable “basket” presentation of many-to-many fields with extended item selectors.
  • List View is a new view type that will enable presentation of multi-column lists of data items.
  • Calendar View is a new view type that will enable presentation of data as a generic calendar with drag and drop support.

Cloud On Time

Adding a few extra ingredients to a live web app created with Code On Time can turn an application into a full-fledged Software-as-a-Service solution.

For the past year we have been developing enterprise-level tools to enable code-free implementation of Dynamic Access Control Rules and data controller Virtualization Rules. Both tools require additional tables to be included in the application database.  New view types finally allow us to create high quality administrative user interface for these tools.

One of the required ingredients of a SaaS solution is a content management system. A built-in CMS allows creating and managing virtual pages that can be stored alongside the Virtualization Rules.

Another ingredient is an online data controller designer. Such tool can be used to alter application data controllers at runtime and allow creating new ones. Our experience in developing the Project Designer built into the application generator shows that it can be accomplished with relative ease following the same model.

Combine all four ingredients together (Dynamic Access Control Rules, Virtualization Rules, Content Management System, and Online Data Controller Designer) in an Azure Factory project, and you will have an Online Application Builder hosted in Windows Azure Cloud.

How would one program a hosted web app with the Online Application Builder? Every app will be provided with a private Windows Azure SQL Database. SQL business rules and JavaScript business rules will be the two available programming facilities that will require no changes to the core application. The core application will have an embedded RESTful Application Server component to enable complex one-of-a-kind user interface development when needed.

Management tools for Dynamic Access Control Rules, Virtualization Rules, and Content Management System will be incorporated into the core application framework and become available to Code On Time developers shortly before Cloud On Time goes live.

It will be possible to export a hosted Cloud On Time web app to a private Cloud Factory project that will be supported in Code On Time web application generator.