Alpha Software Mobile Development Tools:   Alpha Anywhere    |   Alpha TransForm subscribe to our YouTube Channel  Follow Us on LinkedIn  Follow Us on Twitter  Follow Us on Facebook



The Alpha Software Forum Participation Guidelines

The Alpha Software Forum is a free forum created for Alpha Software Developer Community to ask for help, exchange ideas, and share solutions. Alpha Software strives to create an environment where all members of the community can feel safe to participate. In order to ensure the Alpha Software Forum is a place where all feel welcome, forum participants are expected to behave as follows:
  • Be professional in your conduct
  • Be kind to others
  • Be constructive when giving feedback
  • Be open to new ideas and suggestions
  • Stay on topic

Be sure all comments and threads you post are respectful. Posts that contain any of the following content will be considered a violation of your agreement as a member of the Alpha Software Forum Community and will be moderated:
  • Spam.
  • Vulgar language.
  • Quotes from private conversations without permission, including pricing and other sales related discussions.
  • Personal attacks, insults, or subtle put-downs.
  • Harassment, bullying, threatening, mocking, shaming, or deriding anyone.
  • Sexist, racist, homophobic, transphobic, ableist, or otherwise discriminatory jokes and language.
  • Sexually explicit or violent material, links, or language.
  • Pirated, hacked, or copyright-infringing material.
  • Encouraging of others to engage in the above behaviors.

If a thread or post is found to contain any of the content outlined above, a moderator may choose to take one of the following actions:
  • Remove the Post or Thread - the content is removed from the forum.
  • Place the User in Moderation - all posts and new threads must be approved by a moderator before they are posted.
  • Temporarily Ban the User - user is banned from forum for a period of time.
  • Permanently Ban the User - user is permanently banned from the forum.

Moderators may also rename posts and threads if they are too generic or do not property reflect the content.

Moderators may move threads if they have been posted in the incorrect forum.

Threads/Posts questioning specific moderator decisions or actions (such as "why was a user banned?") are not allowed and will be removed.

The owners of Alpha Software Corporation (Forum Owner) reserve the right to remove, edit, move, or close any thread for any reason; or ban any forum member without notice, reason, or explanation.

Community members are encouraged to click the "Report Post" icon in the lower left of a given post if they feel the post is in violation of the rules. This will alert the Moderators to take a look.

Alpha Software Corporation may amend the guidelines from time to time and may also vary the procedures it sets out where appropriate in a particular case. Your agreement to comply with the guidelines will be deemed agreement to any changes to it.

Bonus TIPS for Successful Posting

Try a Search First
It is highly recommended that a Search be done on your topic before posting, as many questions have been answered in prior posts. As with any search engine, the shorter the search term, the more "hits" will be returned, but the more specific the search term is, the greater the relevance of those "hits". Searching for "table" might well return every message on the board while "tablesum" would greatly restrict the number of messages returned.

When you do post
First, make sure you are posting your question in the correct forum. For example, if you post an issue regarding Desktop applications on the Mobile & Browser Applications board , not only will your question not be seen by the appropriate audience, it may also be removed or relocated.

The more detail you provide about your problem or question, the more likely someone is to understand your request and be able to help. A sample database with a minimum of records (and its support files, zipped together) will make it much easier to diagnose issues with your application. Screen shots of error messages are especially helpful.

When explaining how to reproduce your problem, please be as detailed as possible. Describe every step, click-by-click and keypress-by-keypress. Otherwise when others try to duplicate your problem, they may do something slightly different and end up with different results.

A note about attachments
You may only attach one file to each message. Attachment file size is limited to 2MB. If you need to include several files, you may do so by zipping them into a single archive.

If you forgot to attach your files to your post, please do NOT create a new thread. Instead, reply to your original message and attach the file there.

When attaching screen shots, it is best to attach an image file (.BMP, .JPG, .GIF, .PNG, etc.) or a zip file of several images, as opposed to a Word document containing the screen shots. Because Word documents are prone to viruses, many message board users will not open your Word file, therefore limiting their ability to help you.

Similarly, if you are uploading a zipped archive, you should simply create a .ZIP file and not a self-extracting .EXE as many users will not run your EXE file.
See more
See less

Alpha5 Index Dictionary Ver 7

  • Filter
  • Time
  • Show
Clear All
new posts

    Alpha5 Index Dictionary Ver 7

    This is a much-updated version of some code first published in 2019. Sorry, I couldn't figure out how to update the original posting.

    Alpha5 DBF database structures are known to lose indexes from time to time. One of the reasons for lost indexes is discussed later in this document. Lost indexes cause issues for Alpha5 applications that use and expect specific index files to be present.

    This package provides an Index dictionary for your application. It allows the end user to rebuild missing indexes. It enables your application to intelligently deal with indexes that may be missing, allowing the end user to rebuild them without your intervention.

    This package also assists the developer in keeping track of the indexes required and the frequency of their use. The IDX dictionary will even scan your code to verify index usage.

    This software has only been tested in version 12 of Alpha Anywhere. Most of it should work in the earlier version, but I suspect the progress() class used for the status bar during IDXrebuild may fail. Some stuff was changed with classes between Alpha 5 versions 10, 11 and 12. Sorry if you run into problems with the status bar, you are on your own, but it should not be that hard to remove the dependence on the progress() class.


    The ZIP consists of a single text file idx_XX.txt file, where XX is the version number. The idx_XX.txt file contains four functions and a single class. The ZIP file also includes this readme file.

    Right, Click on an empty area of the Code Tab to deselect any selected script and select Import from the pop-up menu.
    Import the IDX.txt file, selecting 4 Functions and Class listed below.

    From the Interactive Window, enter the following to build the required table, form an object, and open the IDX form used to administer the Index Dictionary.

    Most of the time, the function will create the table and form without issue. You may need to try the IDX() function a second time when it does not. In the worst case, delete the IDX.DDF from the Table tab of the control panel. Exit Alpha Fice and delete any remaining IDX.* support files from the database folder. Then restart Alpha Five and try again.

    When the form is first displayed, a blank record will be created. It should be deleted after populating the dictionary using the <Build Dictionary> button.

    After initially building the dictionary, use the <Update Dictionary> to keep all indexes from the dictionary that may have gone missing since the last rebuild.

    IDX form is not intended for use by the developer; I would not recommend you give the end user access to it. However, the end user should be given access to the IDXrebuild() function.


    IDX() is a single function that provides all the code run from the buttons on the IDX form. IDX() also builds the DBF table and form.

    IDXPUT() is a function that should be used when selecting an index in your code. It works with the Index Dictionary (IDX.DBF) to accomplish the following;
    - Selects the index using the full name specified, unlike the equivalent A5 methods for index selection
    - If the index is missing, build a temporary sort order if possible and return a pointer to it
    - Flag tables that require index rebuild if an index is missing. These tables are pre-selected when the IDXREBUILD() function is used.
    - Gather statistics on the index's usage.

    See the comments in the IDXPUT() function for details on its use.

    IDXREBUILD() will rebuild indexes. It can be called from your application and used by the end user. See the comments at the start of this function for details on its use.

    IDXSET() is a function to set the primary index for a table or browse. It uses IDXPUT() and will display any error messages.

    PROGRESS() is a Class that provides a progress dialogue used by the Reindex function.

    A5 Index Issues

    The introduction indicates that Alpha5 can lose indexes all on its own. One cause of this is indexing expressions that cannot be evaluated. When Alpha5 saves a change to a record, it next has to update indexes for that table. Suppose an index expression cannot be evaluated. In that case, Alpha5 cannot back out of the save operation (it can't do Atomic transactions), and the index is no longer valid, so it is dropped. The index MAY reappear on the subsequent table opening if the expression is valid once again.

    The issue is easily demonstrated by defining a global variable with a value and using it in an indexing expression. Update some records that use the index. Next, delete the Global variable and update a record in the table, and you will see the index be deleted.

    Alpha Five will build many indexes on its own. Their names are easily recognized, and some are not added to the Index Dictionary. Look at the IDX() function to see a list of indices excluded from the Index Dictionary.
    Other indices built by Alpha Five are required for linking tables in sets. These will have unique names based on the fields involved, and these will be included in the index dictionary.

    Alpha Five will, at times, build indexes that contain commas in the Index Name. The Alpha Five routines this package uses will build indexes named with commas. Some of the index functions provided by Alpha Five will not accept Index names with commas. Indexes can be renamed in the index dictionary, removing the commas. The indexs can then be rebuilt using <Rebuild Index> button on the IDX form, removing the indexs names with commas.

    Before building an index for its internal use, Alpha5 will see if an index with the correct definition exists. If one does, it will be used. So, if an index that Alpha5 would build with commas in the name is created or recreated under a different name, it will be used, and the issue of index names with commas will be avoided.‚Äč
    Attached Files
    Last edited by pboomwork; 12-28-2023, 04:30 PM.

    Sorry wrong file was uploaded let's try this again.
    Attached Files


      The newer version addresses issues when rebuilding indexes from a shadow installation. Indexes are now specifically rebuilt in the Master database.
      Attached Files