TableLayer64 Functionality

The TableLayer will have the VFP functionality and more. The below described TableLayer is fully independant of the VFP9 Runtime and besides it is truly cross platform.

Special capabilities already available:

  • Wish # 11. More than 1000 fields. Check the sample TestDBCommands_CreateBigTable.prg, which creates a table with 1300 fields and adds several records. Put some data and then display the info.
  • Wish # 3. Good bye to the 2 Gb barrier. Now the tables supports up to 64 bits offset, so the theorical limit for TableSize is 16 exabytes. This is 16,000,000,000 GB.
  • Cross platform. The TableLayer works in Windows with the .NET Framework or Mono. We'll put a Linux version a few days later and then in a couple of weeks a Windows Mobile version. The reason to delay the Windows Mobile version is to have some GUI functionality in place using pure VFP forms and controls.
  • Very fast Data Access for Big tables, those that can't fit in the main memory and so VFP can't cache. If the table is small VFP puts all the table in memory for cache.
  • Fully object oriented, the Tables are objects (implemented in VFP language of course and compiled to .NET), Fields are objects, Database are objects. So you have full OOP support for your tables like allways wished. See some samples for using this OOP functionality.

Installation

To run your .NET apps using the TableLayer64, just put the vfp.runtime*.dll(s), CLI.Table64Layer.dll together with your exe and run your exe. If you receive the error Exception from HRESULT: 0x800736B1, this means you need to install vcredist_x86.exe available here, this exe contains C runtime libraries needed in this alpha preview.

Implemented functionality

In the debuting version only free tables are supported. Tables in Database containers are opened but treated as if they were independant, in particular long field names are ignored and instead the short field name is used.

We expect to have the Database containers functionality more implemented for the next revision in about a month, and it should be completed when the compile enters in beta.

Useful commands

The following commands are functional

SET ORDER TO TAG [ASCENDING | DESCENDING]

REPLACE cField with expression FOR AnyExpression (including user defined functions) .

LOCATE FOR

SCAN FOR

SET FILTER TO SomeExpression (including user defined functions) see the sample test_DBCommands02.prg and step on the fly in your own function!

CREATE TABLE | DBF FROM ARRAY. See the sample Test_DBCommandsCreateBigTable.prg

USE

INDEX ON ...

And more commands, check the included samples (Test_DBCommands....prg) to see Data Manipulation Language in pure .NET.

Data Types

The following data types are supported

  • Character
  • Double
  • Numeric
  • Date
  • Float
  • Logical
  • Integer
  • Memo
  • Currency
  • Blob (translated as memo in table creation)

Indexes

Indexes are fully supported including indexes based on complex expressions as UPPER(MyField)+" "+LOWER(myField2). Only Functions available in the runtime are available for now as we still don't support things as SET PROCEDURE and SET CLASSLIB that are needed for full support for User Defined functions in indexes.