4D v18

Appendix: Useful methods for conversion

Página Inicial

 
4D v18
Appendix: Useful methods for conversion

Appendix: Useful methods for conversion    


 

TechTip to generate a disk file listing non-indexed unique fields:

 C_LONGINT($maxTableNumber_l;$currentTable_l)
 C_LONGINT($maxFieldCount_l;$currentField_l)
 C_LONGINT($dontCare_l// For GET FIELD PROPERTIES values that are not used.
 C_BOOLEAN($dontCare_f;$isIndexed_f;$isUnique_f)
 C_TEXT($logHeader_t;$logRecord_t;$logfile_t)
 C_TEXT($delim_t;$lf_t)
 C_TIME($logfile_h)
 C_TEXT($tableName_t;$fieldName_t;$note_t)
 
 $delim_t:=Char(Tab)
 $lf_t:=Char(Carriage return)+Char(Line feed)
 
 $logHeader_t:="Unique fields without index:"+$lf_t
 
 $logfile_t:=Get 4D folder(Logs folder)+"UniqueNotIndexed.txt"
 
 $logfile_h:=Create document($logfile_t)
 
 If(OK=1)
 
    SEND PACKET($logfile_h;$logHeader_t)
 
    $maxTableNumber_l:=Get last table number
 
    For($currentTable_l;1;$maxTableNumber_l)
       If(Is table number valid($currentTable_l))
          $maxFieldCount_l:=Get last field number(Table($currentTable_l))
          For($currentField_l;1;$maxFieldCount_l)
             If(Is field number valid($currentTable_l;$currentField_l))
 
  // Note the following line breaks over two lines in text,
  // it is one statement in the method:
                GET FIELD PROPERTIES($currentTable_l;$currentField_l;$dontCare_l;\
                $dontCare_l;$isIndexed_f;$isUnique_f;$dontCare_f)
 
                If(($isUnique_f) & (Not($isIndexed_f)))
 
                   $tableName_t:=Table name(Table($currentTable_l))
                   $fieldName_t:=Field name(Field($currentTable_l;$currentField_l))
 
                   $logRecord_t:="["+$tableName_t+"]"+$fieldName_t+$lf_t
 
                   SEND PACKET($logfile_h;$logRecord_t)
 
                End if
             End if
          End for
       End if
    End for
 
    CLOSE DOCUMENT($logfile_h)
    SHOW ON DISK($logfile_t)
 End if

TechTip to create missing indexes on fields declared "Unique" but not indexed

 C_LONGINT($maxTableNumber_l;$currentTable_l)
 C_LONGINT($maxFieldCount_l;$currentField_l)
 C_LONGINT($dontCare_l// For GET FIELD PROPERTIES values that are not used.
 C_BOOLEAN($dontCare_f;$isIndexed_f;$isUnique_f)
 C_TEXT($logHeader_t;$logRecord_t;$logfile_t)
 C_TEXT($delim_t;$lf_t)
 C_TIME($logfile_h)
 C_TEXT($tableName_t;$fieldName_t;$note_t)
 
 
 $maxTableNumber_l:=Get last table number
 
 For($currentTable_l;1;$maxTableNumber_l)
    If(Is table number valid($currentTable_l))
       $maxFieldCount_l:=Get last field number(Table($currentTable_l))
       For($currentField_l;1;$maxFieldCount_l)
          If(Is field number valid($currentTable_l;$currentField_l))
 
  // Note the following line breaks over two lines in text,
  // it is one statement in the method:
             GET FIELD PROPERTIES($currentTable_l;$currentField_l;$dontCare_l;\
             $dontCare_l;$isIndexed_f;$isUnique_f;$dontCare_f)
 
             If(($isUnique_f) & (Not($isIndexed_f)))
 
                $tablePtr:=Table($currentTable_l)
                $fieldPtr:=Field($currentTable_l;$currentField_l)
                $tableName_t:=Table name($tablePtr)
                $fieldName_t:=Field name($fieldPtr)
                $indexName_t:="["+$tableName_t+"]"+$fieldName_t+" indexed for uniqueness (kb#77023)"
                ARRAY POINTER($fieldsArray_p;1)
                $fieldsArray_p{1}:=$fieldPtr
                CREATE INDEX($tablePtr->;$fieldsArray_p;Standard BTree Index;$indexName_t;*)
 
             End if
          End if
       End for
    End if
 End for

To be done in 32-bit version (i.e., before moving to 64 bits).

1 - Transfer your static form images to the image library:

2 - Once your images are transferred, convert them to .png or .jpeg :

 C_LONGINT($i;$SOA;$RIS;$PictRef)
 C_TEXT($PictName)
 C_PICTURE($Pict)
  //------------ initialize arrays ------------------
 ARRAY LONGINT($aL_PictRef;0)
 ARRAY TEXT($aT_PictName;0)
 ARRAY TEXT($at_Codecs;0)
 PICTURE LIBRARY LIST($aL_PictRef;$aT_PictName)
 $SOA:=Size of array($aL_PictRef)
  //------------ convert PICT to png ------------------
 If($SOA>0)
    For($i;1;$SOA// for each image
       $PictRef:=$aL_PictRef{$i}
       $PictName:=$aT_PictName{$i}
       GET PICTURE FROM LIBRARY($aL_PictRef{$i};$Pict)
       GET PICTURE FORMATS($Pict;$at_Codecs)
       For($j;1;Size of array($at_Codecs))
          If($at_Codecs{$j}=".pict") // if the format is obsolete
             CONVERT PICTURE($Pict;".png") // conversion to png
  // and store in library
             SET PICTURE TO LIBRARY($Pict;$PictRef;$PictName)
          End if
       End for
    End for
 Else
    ALERT("The image libary is empty.")
 End if
  //------------ end of method ------------------

See Language for commands and constants. In the context of deploying merged applications, to use the regional settings you must edit the contents of 4D v1x preferences file on each local machine and set the "use_localized_language" key to "true". For example:

 $UserPreference:=Get 4D folder(Active 4D Folder)+"4D Preferences v17.4DPreferences"
 $ref:=DOM Parse XML source($UserPreference;True)
 $refElem:=DOM Find XML element($ref;"preferences/com.4d/method_editor/options";arrElementRefs)&NBSP// Read the current value
 DOM GET XML ATTRIBUTE BY NAME($refElem;"use_localized_language";$attrValue)
 if($attrValue="false") // Return to <v15 behavior
    DOM SET XML ATTRIBUTE($refElem;"use_localized_language";"true")
 End if
 DOM EXPORT TO FILE($ref;$UserPreference)
 DOM CLOSE XML($ref)

 
 

 
PROPRIEDADES 

Produto: 4D ODBC Pro
Tema: Appendix: Useful methods for conversion

 
HISTÓRIA 

 
ARTICLE USAGE

Conversão a 4D v18 ( 4D v18)