Consultor Eletrônico



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..