MarxMenu DataBase Functions

Prev Next Home Home Table Of Contents Index


Well, after talking about it for years, MarxMenu now includes a strong set of database tools. The database is based on Novell's Btrieve interface. Thus it has the reliability of proven database technology. We are pushing Btrieve to the limit and then some in order to get the requirements needed from a database engine.

Btrieve is primarily a fixed length database engine with the ability to add a single variable-length field on the end of a record. When using MarxMenu with Btrieve, we typically store MarxMenu-style variables in the variable-length section and reserve the fixed-length section for key fields only. While we recommend you consider this approach you are free to develop and use any data models you prefer.

You will notice several unusual things about MarxMenu as a database. We decided that the square model or relationally-linked square model is to limiting. You can do square model databases if you want to, but the experience of getting rid of the square model is like an animal being let out of a cage for the first time. It's a little scary at first.

When you create a MarxMenu Btrieve database you may define all your fields, if you want, but you are only required to define the fields that will be used as key fields. You will need to define the fields type, and for key fields the key properties.

When data is written to a file the data is passed as a MarxMenu array. The first elements of the array have to match the fixed portion of your structure, normally your key fields. Any elements after the key fields are written in MarxMenu format to the variable-length section of the record. Thus, after the key fields you can do whatever you want. Here is a list of some of the flexible features.

 1) Records do not have to contain the same fields or the same number of
    fields. You can have 20 fields in one record and 5 fields in the
    next one. There are no rules that the data in one field of a record
    has to be of the same data type as the same field of the previous

2) Records can contain MarxMenu-style arrays. Thus if you are using a phone field as an array of phone numbers you can store as many phone numbers in that field as you want. MarxMenu can support arrays within arrays of up to 30 levels within a single record.

3) Since MarxMenu supports writing MarxMenu-style variable structures to database records, you need not have to specify the type of data, the data size, or the structure of the data before you access the file. If you want to write data you just do it.

Use of the Btrieve commands require that you have Btrieve 5.10 or later. You will need to have the Btrieve NLM running on the server and BRREQUEST.EXE running on the workstation to use this database in client-server mode, or BTRIEVE.EXE running on the workstation if you are not running in client-server mode. All the Btrieve database commands start with the BTRV prefix.

To use BTRIEVE.EXE load it with the /E switch as follows:


Only network versions of MarxMenu contain the BTRV database commands, the single user version is not equipped with this feature.

At the time of printing of this manual the Btrieve database commands are new. For more details, new commands, and examples look in the MARXREAD.ME file and the MarxHelp program.

Prev Next Home Home Table Of Contents Index