MINI DATABASE BROWSE PROGRAM

This browse program was written as part of a network management system 
to allow the user to scroll through the alarms database and delete 
records where desired. It displays records in either red, yellow or
normal (black & white) depending on the priority of the alarm. It works 
with the ISAM database system included in VB/DOS Professional 
Edition. It can be easily modified to work with other file formats.

This program was written because I couldn't find anything else, 
commercially or otherwise that satisfied my relatively simple 
requirements. I'm posting it so others can avoid the frustrations
of writing this type of thing from scratch.

A couple notes:

1) It browses the file from the bottom up. I need to display alarms in
the order of most recent first, and there's no sort or descending index
capability in VB/DOS. It should be a fairly easy modification to change
it to scroll from the top of the file down (sorry about this).

2) An ISAM database called "monitor" will be created the first time it is
run that contains 1000 alarm records with random priorities generated to
disply color coded alarms.

3) It's logically impossible to position the current record based on the
position of the vertical scroll bar when a file is indexed or when the 
file system doesn't support record numbers as in the case of ISAM. I get
around this though, read on. Think about it. If the user positions the 
scrollbar to display the middle of the file, if the file is indexed, how 
do you go to the middle of the index? Even if the file is not indexed,
how can you do it without record numbers?

The way I get around this is to move a relative number rather than go to 
a specific location. If I'm at the bottom of the file and I want to go 
to the middle, I calculate how many records to move based on the number
of records in the file and the current position. It's a little slower
because each record must be read as the postion changes, with the 
exception of when moving directly to the first or last record. In that
case I can use the MOVEFIRST and MOVELAST and therefore go direct.

4) It could be modified to support individual fields. I use one label per
row in which I concatenate all of the fields into a string. I don't need
fields for my application. Anyway, you could just add multiple labels per
row. Further, instead of labels you could use text boxes and have the 
ability to edit the data. This would be a lot more work though, because
then you would have to worry about writing the data back out.

5) If you make any neat enhancements to it, please shoot me a note. I'd 
like to have a more general routine, ultimately a dBASE type of browse.

Good luck.

Greg
