Kbase P94657: Can the handle of a static buffer be accessed given its database table name?
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  17/09/2004 |
|
Status: Unverified
GOAL:
Can the handle of a static buffer be accessed given its database table name?
FIX:
There is no Progress native function to access a static buffer handle given the associated database table name. However, one solution is to write a procedure to generate an include file that creates a temp table and store all the database tables and their static buffer handles. Once that is done, a user defined function can be used to access the static database table buffer handle given its name. Here are sample codes for the above solution:
1. The code to generate the include file:
OUTPUT TO StoreTableBuffers.i.
PUT UNFORMATTED "DEFINE TEMP-TABLE ttTableBuffers" SKIP.
PUT UNFORMATTED " FIELD cTableName AS CHARACTER" SKIP.
PUT UNFORMATTED " FIELD hTableHandle AS HANDLE." SKIP.
PUT SKIP(1).
FOR EACH _file where _tbl-type = "T":
PUT UNFORMATTED "CREATE ttTableBuffers." SKIP.
PUT UNFORMATTED "ASSIGN" SKIP.
PUT UNFORMATTED " hTableHandle = BUFFER " + _File-Name + ":HANDLE" SKIP.
PUT UNFORMATTED " cTableName = hTableHandle:TABLE." SKIP.
PUT SKIP(1).
END.
OUTPUT CLOSE.
2. The include file generated by the above code:
DEFINE TEMP-TABLE ttTableBuffers
FIELD cTableName AS CHARACTER
FIELD hTableHandle AS HANDLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER Benefits:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER BillTo:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER Bin:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER Customer:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER Department:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER Employee:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER Family:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER Feedback:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER InventoryTrans:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER Invoice:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER Item:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER LocalDefault:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER Order:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER OrderLine:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER POLine:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER PurchaseOrder:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER RefCall:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER Salesrep:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER ShipTo:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER State:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER Supplier:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER SupplierItemXref:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER TEST_TABLE:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER TimeSheet:HANDLE
cTableName = hTableHandle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER Vacation:HANDLE
cTableName = hTableHa.ndle:TABLE.
CREATE ttTableBuffers.
ASSIGN
hTableHandle = BUFFER Warehouse:HANDLE
cTableName = hTableHandle:TABLE.
3. The User Defined Function that returns the static buffer handle of a database table given its name:
FUNCTION getStaticBufferHandle RETURNS HANDLE (INPUT pcTableName AS CHARACTER):
FIND FIRST ttTableBuffers WHERE cTableName = pcTableName.
RETURN hTableHandle.
END FUNCTION.
4. Sample use of the above function.
MESSAGE getStaticBufferHandle("Customer")
VIEW-AS ALERT-BOX INFO BUTTONS OK..