CLARION SERVICES

Development Services

Clarion V7

Dynamic File Driver


XXThe Dynamic File Driver (DFD) provides developers with an interface to define file structures, on-demand, at runtime. File structures can be defined for any of the supported file systems (ISAM or SQL) using standard property syntax. If the dynamic file is defined using an SQL driver then you can use PROP:SQL and issue either a SELECT statement or a call to a server-side Stored Procedure that returns a result set to automatically define a new file structure.


Here are just a few of the things that can be accomplished using the DFD:

• Dynamically create a FILE structure to match the result set from any SQL SELECT command or from a Stored Procedure.
• Dynamically create In-Memory driver FILE structures for use as "cached recordsets" from any data source (ISAM or SQL).
• Create temporary tables that match a user-defined query
• Remove strict binding to the data dictionary.
• Create and process tables that are not defined in the application’s dictionary.
• Change Database drivers at runtime using Prop:Driver

FAQ

What file drivers does the IPDS support?

You can use any Clarion file driver (ODBC, MS-Sql, Btrieve, Clarion, TopSpeed, Ascii, etc). The Dynamic File driver template also supports caching to In-Memory tables or to physical tables, so you can work with offline tables and detached recordsets.

Does the Dyna driver work with both ABC and Clarion template chains?

Yes absolutely, there are examples shipped that demonstrate integration into Apps using both Template chains, and in hand-coded programs too.

What benefits does it bring to my applications?

Many benefits, but for instance one of the shipping examples demonstrates the effect of local-caching on a report. The example contains 2 report procedures, one cached - one not. The cached report is around 80% faster then the uncached one. In other words the Report using local caching is 5 times faster than the original one. The report is completely unchanged, except for the addition of the Dyna Driver extension template. This technique will also work regardless of the report template used, or if the report is hand-coded.

How long does it take to enable an application to use the Dyna Driver?

In general you only need to add the extension template to each .App file that comprises your application and fill in the prompts, be sure to look at the reference manual for a good explanation of how to work with the driver and templates.

Can I distribute the Dyna driver royalty-free?

Yes, as with all Clarion products there are no royalties on distribution.

Does the DFD support Groups, BLOBs and Memo fields?

Yes, all data types are supported.

What are the advantages of caching result sets?

The caching technique should be particularly effective for SQL users as it reduces the number of SQL instructions (to a single sequential read-pass through the table) - after that individual lookups are done on the client computer.

With both ISAM and SQL this technique has a dual benefit. Not only is the action on this client faster, but the load on the server is dramatically reduced, thus speeding up the server for all other users as well. The speed improvement is proportional to the speed of the data connection. The slower the connection currently, the more dramatic the speed improvement.

Can I use Prop:SQL and stored procedures to create Dyna Files?

Yes, the Dyna Driver has special functionality that allows you to create a new Dynamic File structure from an SQL result set. Any SQL that returns results like SELECT or a Stored Procedure can be used to create a File structure that matches the columns (fields) returned, and the Dyna Class can create a file and fill it with records with just a few lines of code, for example:

MSProducts &= NEW(DynFile)
MEMProducts &= NEW(DynFile)
MSProducts.SetDriver('MSSQL')
!MSProducts.SetOwner('(local),Northwind,sa,sa2000')
MSProducts.SetOwner('(local),Northwind,sa,')
MSProducts.CreateFromSQL('SELECT ProductID, ProductName FROM Products')

creates a new Dynamic File with the two fields (ProductID and ProductName).

MEMProducts.SetCreate(true)
MEMProducts.SetName('MEMProduct')
MEMProducts.SetDriver('MEMORY')
MEMProducts.FillFrom(MSProducts)

and just a few more lines of code will cache the result set into a local table -- in this code we used an In-Memory table but we could have just as easily used a TopSpeed table, or any other driver.

Better yet, the Dyna Driver template will write all of the code for you.


Visit SoftVelocity's website.

If you require further information, please call us free on 0800 652 4050

buy now

Download Centre:

Newsletter Subscription