table.INDEX_PRIMARY_PUT Function
Syntax
as P = Index_Primary_Put([C tagname|P index])
as P = Index_Primary_Put( index_object_pointer as P )
Arguments
- index_object_pointer
Pointer to an index.
- tagname|P
The name of an index or a query.
Description
Set the primary index for the table, using either name or Index object.
Discussion
The .INDEX_PRIMARY_PUT() method sets the primary index for a table referenced by to the specified index tag or query list. You can specify the index tag name, or the query list using either a pointer, or the tag/query list name. For example, the following statements are identical:
dim tbl as P tbl.index_primary_put("Lastname") indx = tbl.index_get("Lastname") tbl.index_primary_put(indx)
To set the primary index to record number order, you can use the .INDEX_PRIMARY_PUT() method without any arguments (e.g., TABLE.INDEX_PRIMARY_PUT(), or you can use the <TBL>.INDEX_RECORD_GET() method. If a query list and an index have the same name, this method will choose the index, not the query list. If you specify a Tag_Name that does not exist, Alpha Anywhere will choose the closest matching Tag_Name that has the same first letter as the Tag_Name you specified. If there is no Tag_Name with the same first letter, Alpha Anywhere will generate an error message. Note : If you set the index with .INDEX_PRIMARY_PUT()
tp = table.open("MyTable") tp.index_primary_put("Last_name_")
but there is no index named Last_name_ and there is an index named Labor_ID_ (same first letter), the system will set the index to Labor_ID_ without warning you.
Example
This statement sets the primary index of the current table to record number order:
dim tbl as P tbl = table.current() indx = tbl.index_primary_put()
This script can be attached to a FIND button on a form to find a customer by last name.
dim tbl as P tbl = table.current() find_name = ui_get_text("Find","Enter person's last name:") indx = tbl.index_primary_put("Lastname") tbl.fetch_find(find_name) parent.resynch()
The following commands in the Interactive window indicate how Alpha Anywhere behaves if an index and query have the same name
dim t as P dim i as P t = table.open("customer") i = t.index_primary_put("customer") ? i.type_get() = 2.000000 'indicates that an index is active. query.description = "customer" query.filter = ".T." i = t.query_create() ? i.type_get() = 6.000000 'indicates that a query list is active i = t.index_primary_put("customer") ? i.type_get() = 2.000000 'indicates that an index is active
Assume that a table has tags called customer_id, lastname and zip.
i = t.index_primary_put("Customer_Id") ? i.name_get() = "Customer_Id" i = t.index_primary_put("Firstname") ERROR: Tagname not found. (because no index tag has name starting with "F") i = t.index_primary_put("L") ? i.name_get() = "Lastname" (because first letter matches "lastname" tagname) i = t.index_primary_put("zop") ? i.name_get() = "Zip" (because first letter of "zop" matches "zip" tagname)
The following example finds the maximum field value in a character field.
dim idx as P dim tbl as P dim last_city as C tbl = table.open("customer") table.index_create_begin("City", "ship_city") table.index_add("city", "ship_city") idx = table.index_create_end("city") table.index_primary_put("city") tbl.fetch_last() last_city = tbl.Ship_city ? last_city = "Newburyport"
See Also