Data Sources

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
Data Sources
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.

Friday, June 15, 2012PrintSubscribe
Working with Picklists

Picklists are commonly used in web applications in order to allow a user to pick one item from a list of available options. These lists prevent duplication of similar values, such as alternate spellings. Picklists are physically different from database lookup fields since there is no foreign key relationship between the tables. The application generator automatically configures lookup fields. Developers can configure a picklist on any field in a web application.

For example, let’s look at the City and Country fields in the Customers edit form. Both fields are simple text boxes – the user can type any value.

City and Country fields rendered as simple text boxes.

Let’s convert both fields to picklists.

Creating Cities and Countries Tables

Start SQL Server Management Studio. In the Object Explorer, right-click on Databases / Northwind / Tables node, and select New Table option.

Create New Table in Northwind database using SQL Server Management Studio.

Give this table the following columns:

Column Name Data Type Allow Nulls
CountryID int No
CountryName nvarchar(50) No

Right-click on the CountryID column, and select Make Primary ID.

Set CountryID column as a primary key of Countries table.

Under Column Properties, change the following setting:

Property Value
(Is Identity) Yes

Press Ctrl+S to save the table. Give the table the name of “Countries”.

Create another table with the following columns:

Column Name Data Type Allow Nulls
CityID int No
CityName nvarchar(50) No

Right-click on the CityID column, and select Make Primary ID.

Set CityID column as a primary key of Cities table.

Under Column Properties, change the following setting:

Property Value
(Is Identity) Yes

Save the table, and give it the name of “Cities”.

Start Code On Time web application generator. Refresh, and add the two new tables to the web application.

Refresh the project to add the Cities and Countries tables.

Finish generating the application.

Populate the Tables

Next, populate the Cities and Countries table using the values currently existing in the Customers table. A full list of values can be found by activating the dropdown on the column header and clicking the “Filter…” option.

List of City values.

Insert all City values in the Cities table, and all Country values in the Countries table.

Populated Countries table using values extracted from Customers.

Converting Country and City fields into a Picklist

Start the Project Designer. In the Project Explorer, switch to the Controllers tab. Double-click on Customers / Fields / City field node.

City field of Customers controller in Project Designer.

Change the following properties:

Property Value
Items Style Lookup
Items Data Controller Cities

Press OK to save the field. Double-click on Customers / Fields / Country field node.

Country field of Customers controller.

Make the following changes:

Property Value
Items Style Lookup
Items Data Controller Countries

Press OK to save the field. On the toolbar, press Browse.

Navigate to the Customers page, and edit a record. The City and Country fields will be rendered as lookup links.

City and Country fields on Customers edit form are rendered as lookups.

Click on the link for City field, and a lookup modal window will display a list of cities.

Clicking on the City lookup link will activate a modal window displaying a list of cities.

Select a lookup item from the list. Save the record, and select the record again. Instead of CityName being inserted into the field, the CityID was inserted.

CityID inserted into the City field.

The same behavior occurs for Country lookup field.

CountryID of the lookup item inserted into the Country field.

This is happening because the primary key of the lookup is automatically used as the value of the selected record.

You can address this in two different ways.

Changing the Primary Key of the Lookup Controller

Switch back to the Project Designer. In the Project Explorer, right-click on Countries / Fields node, and select List option.

Show List of all Fields in the Countries controller.

Change the field properties:

Name Is Primary Key
CountryID No
CountryName Yes

You can repeat this procedure for Cities controller, or configure the lookup properties of the City field as explained next.

Specifying the Data Value Field and Data Text Field

In the Project Explorer, double-click on Customers / Fields / City field node.

City field in the Customers controller.

Make the following changes:

Property Value
Data Value Field CityName
Data Text Field CityName

Press OK to save the field.

The client library always uses Data Value Field and Data Text Field to determine which lookup field represents the key of the selected item, and which field represents the text. When the Data Value Field is not specified, then the value of the primary key field of the selected lookup item will become a lookup value. When the Data Text Field is not specified, the text will be derived from the first visible column.

Trying it Out

On the toolbar, press Browse. Navigate to Customers page and edit a record. Change the City and Country fields, save, and select the record again. The names of City and Country will be the values inserted into the respective fields.

City and Country Name values will be inserted into the fields.

This can be confirmed by checking the record in SQL Server Management Studio.

SQL Server Management Studio query confirms that the names were inserted into the City and Country fields.

Friday, May 11, 2012PrintSubscribe
Improving Efficiency of Output Cache Table

Custom result sets can be produced by stored procedures and web services. A quick look at the sample output cache table and output caching script will give you a few ideas about introducing optimization in the caching.

The datable table CustOrderHist_Cache stores cached output created by concurrent users in the process of interacting with the application. The highlighted columns are the actual output columns produced by the stored procedure.

Sample output cache table designed to work with Northwind.dbo.CustOrderHist stored procedure

The output caching script filters out the data by CacheUserName column to segregate the user-specific result sets. The performance will improve if the column indexed.

The same consideration applies to the column CachExpires.

A single index that includes both CacheUserName and CacheExpires will likely work well in most situations.

The primary key column CacheID is provided to allow selecting data rows in the application user interface. Our sample result set could be changed to use the ProductName  and CustomerID as a compound primary key. It is possible since the stored procedure CustOrderHist produces a list of unique products purchased by a customer. In that case you can delete the CacheID column and simplify the output caching script.

Another area of optimization if the length of time the custom result set remains cached. Most applications will tolerate the data to be “stale” for at least a few minutes if not hours.

The output cache table may end up containing orphan cached data if users are not working with the app on a daily basis. It is a good idea to enhance the caching script with a simple delete statement that wipes out any cached data rows with the cache expiration overdue by a few days.