KNOWLEDGE BASE
Log In    |    Knowledge Base    |    4D Home
Tech Tip: Utility Method to List Tables Log Status
PRODUCT: 4D | VERSION: 15.3 | PLATFORM: Mac & Win
Published On: May 31, 2017

Below is a Utility Method that can be used to find which tables are being logged or not.

// Util_Get_Logged_List
//
// Details:
//  Utility Method to Return Arrays of Tables related to whether it is logged or not
//
// Parameters:
//  $1 - Pointer to Text Array to Contain Resulting Table Names
//  $2 - Pointer to Longint Array to Contain Resulting Table Numbers
//  $3 - Pointer to Boolean Array to Contain Resulting Log Status of Tables
//  $4 - Optional Selector to Filter Results
//    0 - All Tables (Default)
//    1 - List Only Tables That are Logged
//   -1 - List Only Tables That are NOT Logged
//

C_POINTER($1)
ARRAY TEXT($tableName_at;0)

C_POINTER($2)
ARRAY LONGINT($tableNum_al;0)

C_POINTER($3)
ARRAY BOOLEAN($isLogged_ab;0)

C_LONGINT($4)            // 0 - All (Default
C_LONGINT($selector_l)   // 1 - True
                         // -1 - False

If (Count parameters>=3)
  If(Count parameters=3)
    $selector_l:=0
  Else
    $selector_l:=$4
  End if

  Case of
    :($selector_l=0)
      Begin SQL
        SELECT TABLE_ID, TABLE_NAME, LOGGED
        FROM _USER_TABLES
        INTO :$tableNum_al, :$tableName_at, :$isLogged_ab;

      End SQL

    :($selector_l=1)
      Begin SQL
        SELECT TABLE_ID, TABLE_NAME, LOGGED
        FROM _USER_TABLES
        WHERE LOGGED=TRUE
        INTO :$tableNum_al, :$tableName_at, :$isLogged_ab;

      End SQL

    :($selector_l=-1)
      Begin SQL
        SELECT TABLE_ID, TABLE_NAME, LOGGED
        FROM _USER_TABLES
        WHERE LOGGED=FALSE
        INTO :$tableNum_al, :$tableName_at, :$isLogged_ab;

      End SQL
  End case

  COPY ARRAY($tableName_at;$1->)
  COPY ARRAY($tableNum_al;$2->)
  COPY ARRAY($isLogged_ab;$3->)
End if


To use the method create three arrays for the table name, table number, and log status and pass a selector to filter the results if desired:

ARRAY TEXT($tblName;0)
ARRAY LONGINT($tblNum;0)
ARRAY BOOLEAN($log;0)

//All Tables
Util_Get_Logged_List (->$tblName;->$tblNum;->$log)

//Only Tables that are Logged
Util_Get_Logged_List (->$tblName;->$tblNum;->$log;1)

//Only Tables that are not Logged
Util_Get_Logged_List (->$tblName;->$tblNum;->$log;-1)