Converts a string representation of a ROWID to a valid ROWID value.
A string representation of a ROWID. Since ROWID values are a variable sequence of hexadecimal digits, rowid-string must be in the form "0xhex-digits", where hex-digits is any string of characters from 0 through 9 and A through F.
The following procedure (r-torwid.p) selects Customer Balance and credit information and displays it in a browse. You can select any number of rows to store and display more information on the selected Customers.
r-torwid.p
DEFINE VARIABLE hcustb AS HANDLE NO-UNDO. DEFINE VARIABLE irow AS INTEGER NO-UNDO. DEFINE QUERY custq FOR Customer. DEFINE BUFFER cust2 FOR Customer. DEFINE TEMP-TABLE rowtab FIELD rowchar AS CHARACTER INDEX rowi IS UNIQUE PRIMARY rowchar ASCENDING. DEFINE BROWSE custb QUERY custq DISPLAY Customer.CustNum Customer.Name Customer.Balance Customer.CreditLimit WITH 10 DOWN MULTIPLE. DEFINE BUTTON bstore LABEL "Store Selections". DEFINE BUTTON bdisplay LABEL "Display Call Selections". DEFINE BUTTON bclear LABEL "Clear Storage". DEFINE FRAME brs-frame custb SKIP bstore bdisplay bclear. DEFINE FRAME dsp-frame cust2.CustNum cust2.Name cust2.Phone WITH 5 DOWN SCROLL 1. ON CHOOSE OF bstore DO: DO irow = 1 TO custb:NUM-SELECTED-ROWS: IF custb:FETCH-SELECTED-ROW(irow) AND NOT CAN-FIND(rowtab WHERE STRING(ROWID(Customer)) = rowchar) THEN DO: CREATE rowtab NO-ERROR. ASSIGN rowchar = STRING(ROWID(Customer)) NO-ERROR. END. END. END. ON CHOOSE OF bdisplay DO: CLEAR FRAME dsp-frame ALL. FOR EACH rowtab WITH FRAME dsp-frame: FIND cust2 WHERE ROWID(cust2) = TO-ROWID(rowchar). DISPLAY cust2.CustNum cust2.Name cust2.Phone. DOWN WITH FRAME dsp-frame. END. END. ON CHOOSE OF bclear DO: IF custb:DESELECT-ROWS() THEN FOR EACH rowtab: DELETE rowtab. END. FRAME dsp-frame:VISIBLE = FALSE. END. OPEN QUERY custq PRESELECT EACH Customer. ENABLE ALL WITH FRAME brs-frame. WAIT-FOR WINDOW-CLOSE OF CURRENT-WINDOW. |
Thus, when you choose the bstore button, r-torwid.p stores the ROWID string values of all selected Customer records in a temp-table. When you choose the bdisplay button, it displays the selected Customer Phone information in a DOWN frame by converting each stored ROWID string to a ROWID value and finding the corresponding Customer record. (The example also allows you to add selections and restart by deleting the existing selections.)