4D v17.1

Annexe : Méthodes utiles pour la conversion

Accueil

 
4D v17.1
Annexe : Méthodes utiles pour la conversion

Annexe : Méthodes utiles pour la conversion    


 

Techtip pour générer un fichier disque listant les champs uniques non-indexés : http://kb.4d.com/assetid=77024, (en anglais) ou ci-dessous code en français :

 C_LONGINT($maxTableNumber_l;$currentTable_l)
 C_LONGINT($maxFieldCount_l;$currentField_l)
 C_LONGINT($dontCare_l)&nbsp// pour les valeurs du LIRE PROPRIETES CHAMP qui ne sont pas utilisées
 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:="Champs uniques sans index :"+$lf_t
 $logfile_t:=Get 4D folder(Logs folder)+"UniqueNonIndex.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))
                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
 End if
 CLOSE DOCUMENT($logfile_h)

TechTip pour créer les index manquants sur les champs déclarés "Unique" mais non-indexés : http://kb.4d.com/assetid=77023 (en anglais), ou ci-dessous code en français :

 C_LONGINT($maxTableNumber_l;$currentTable_l)
 C_LONGINT($maxFieldCount_l;$currentField_l)
 C_LONGINT($dontCare_l// pour les valeurs du LIRE PROPRIETES CHAMP qui ne sont pas utilisées
 C_BOOLEAN($dontCare_f;$isIndexed_f;$isUnique_f)
 C_TEXT($logHeader_t;$logRecord_t;$logfile_t)
 C_TEXT($delim_t;$lf_t)
 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))
       boucle($currentField_l;1;$maxFieldCount_l)
       If(Is field number valid($currentTable_l;$currentField_l))
          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+" indexé car unicité"
             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

 A faire en version 32-bit (donc avant passage en 64 bits).

1 - transférer vos images statiques sur les formulaires dans la bibliothèque d'images :

2 - une fois vos images tranférées, convertissez-les en .png ou .jpeg :

 C_LONGINT($i;$SOA;$RIS;$PictRef)
 C_TEXT($PictName)
 C_PICTURE($Pict)
  //------------ initialisation tableaux ------------------
 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)
  //------------ conversion des images pict en png ------------------
 If($SOA>0)
    For($i;1;$SOA)  // pour chaque 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")  // si le format est obsolète
             CONVERT PICTURE($Pict;".png")  // conversion en png
  // et stockage dans la bibliothèque
             SET PICTURE TO LIBRARY($Pict;$PictRef;$PictName)
          End if
       End for
    End for
 Else
    ALERT("La bibliothèque d'images est vide.")
 End if
  //------------ fin de la méthode ------------------

Voir Langue des commandes et des constantes. Dans le contexte du déploiement d'applications fusionnées, pour utiliser les paramètres régionaux vous pouvez éditer le contenu du fichier de préférences de 4D v1x sur chaque machine locale et fixer la clé "use_localized_language" à "true". Par exemple :

 $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)  // On lit la valeur courante
 DOM GET XML ATTRIBUTE BY NAME($refElem;"use_localized_language";$attrValue)
 If($attrValue="false")      // Retour au fonctionnement <v15
    DOM SET XML ATTRIBUTE($refElem;"use_localized_language";"true")
 End if
 DOM EXPORT TO FILE($ref;$UserPreference)
 DOM CLOSE XML($ref)

 
 

 
PROPRIÉTÉS 

Produit : 4D
Thème : Annexe : Méthodes utiles pour la conversion

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

Conversion en 4D v17 ( 4D v17)
Conversion en 4D v17 ( 4D v17.1)