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_ENTIER LONG($maxTableNumber_l;$currentTable_l)
 C_ENTIER LONG($maxFieldCount_l;$currentField_l)
 C_ENTIER LONG($dontCare_l)&nbsp// pour les valeurs du LIRE PROPRIETES CHAMP qui ne sont pas utilisées
 C_BOOLEEN($dontCare_f;$isIndexed_f;$isUnique_f)
 C_TEXTE($logHeader_t;$logRecord_t;$logfile_t)
 C_TEXTE($delim_t;$lf_t)
 C_HEURE($logfile_h)
 C_TEXTE($tableName_t;$fieldName_t;$note_t)
 
 $delim_t:=Caractere(Tabulation)
 $lf_t:=Caractere(Retour chariot)+Caractere(Retour à la ligne)
 
 $logHeader_t:="Champs uniques sans index :"+$lf_t
 $logfile_t:=Dossier 4D(Dossier Logs)+"UniqueNonIndex.txt"
 $logfile_h:=Creer document($logfile_t)
 Si(OK=1)
    ENVOYER PAQUET($logfile_h;$logHeader_t)
    $maxTableNumber_l:=Lire numero derniere table
    Boucle($currentTable_l;1;$maxTableNumber_l)
       Si(Est un numero de table valide($currentTable_l))
          $maxFieldCount_l:=Lire numero dernier champ(Table($currentTable_l))
          Boucle($currentField_l;1;$maxFieldCount_l)
             Si(Est un numero de champ valide($currentTable_l;$currentField_l))
                LIRE PROPRIETES CHAMP($currentTable_l;$currentField_l;$dontCare_l;\
                $dontCare_l;$isIndexed_f;$isUnique_f;$dontCare_f)
                Si(($isUnique_f)&(Non($isIndexed_f)))
                   $tableName_t:=Nom de la table(Table($currentTable_l))
                   $fieldName_t:=Nom du champ(Champ($currentTable_l;$currentField_l))
                   $logRecord_t:="["+$tableName_t+"]"+$fieldName_t+$lf_t
                   ENVOYER PAQUET($logfile_h;$logRecord_t)
                Fin de si
             Fin de si
          Fin de boucle
       Fin de si
    Fin de boucle
 Fin de si
 FERMER 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_ENTIER LONG($maxTableNumber_l;$currentTable_l)
 C_ENTIER LONG($maxFieldCount_l;$currentField_l)
 C_ENTIER LONG($dontCare_l// pour les valeurs du LIRE PROPRIETES CHAMP qui ne sont pas utilisées
 C_BOOLEEN($dontCare_f;$isIndexed_f;$isUnique_f)
 C_TEXTE($logHeader_t;$logRecord_t;$logfile_t)
 C_TEXTE($delim_t;$lf_t)
 C_TEXTE($tableName_t;$fieldName_t;$note_t)
 
 $maxTableNumber_l:=Lire numero derniere table
 
 Boucle($currentTable_l;1;$maxTableNumber_l)
    Si(Est un numero de table valide($currentTable_l))
       $maxFieldCount_l:=Lire numero dernier champ(Table($currentTable_l))
       boucle($currentField_l;1;$maxFieldCount_l)
          Si(Est un numero de champ valide($currentTable_l;$currentField_l))
             LIRE PROPRIETES CHAMP($currentTable_l;$currentField_l;$dontCare_l;\
             $dontCare_l;$isIndexed_f;$isUnique_f;$dontCare_f)
 
             Si($isUnique_f)&(Non($isIndexed_f))
                $tablePtr:=Table($currentTable_l)
                $fieldPtr:=Champ($currentTable_l;$currentField_l)
                $tableName_t:=Nom de la table($tablePtr)
                $fieldName_t:=Nom du champ($fieldPtr)
                $indexName_t:="["+$tableName_t+"]"+$fieldName_t+" indexé car unicité"
                TABLEAU POINTEUR($fieldsArray_p;1)
                $fieldsArray_p{1}:=$fieldPtr
                CREER INDEX($tablePtr->;$fieldsArray_p;Index BTree standard;$indexName_t;*)
             Fin de si
          Fin de si
       Fin de boucle
    Fin de si
 Fin de boucle

 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_ENTIER LONG($i;$SOA;$RIS;$PictRef)
 C_TEXTE($PictName)
 C_IMAGE($Pict)
  //------------ initialisation tableaux ------------------
 TABLEAU ENTIER LONG($aL_PictRef;0)
 TABLEAU TEXTE($aT_PictName;0)
 TABLEAU TEXTE($at_Codecs;0)
 LISTE IMAGES DANS BIBLIOTHEQUE($aL_PictRef;$aT_PictName)
 $SOA:=Taille tableau($aL_PictRef)
  //------------ conversion des images pict en png ------------------
 Si($SOA>0)
    Boucle($i;1;$SOA)  // pour chaque image
       $PictRef:=$aL_PictRef{$i}
       $PictName:=$aT_PictName{$i}
       LIRE IMAGE DANS BIBLIOTHEQUE($aL_PictRef{$i};$Pict)
       LIRE FORMATS IMAGE($Pict;$at_Codecs)
       Boucle($j;1;Taille tableau($at_Codecs))
          Si($at_Codecs{$j}=".pict")  // si le format est obsolète
             CONVERTIR IMAGE($Pict;".png")  // conversion en png
  // et stockage dans la bibliothèque
             ECRIRE IMAGE DANS BIBLIOTHEQUE($Pict;$PictRef;$PictName)
          Fin de si
       Fin de boucle
    Fin de boucle
 Sinon
    ALERTE("La bibliothèque d'images est vide.")
 Fin de si
  //------------ 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:=Dossier 4D(Dossier 4D actif)+"4D Preferences v17.4DPreferences"
 $ref:=DOM Analyser source XML($UserPreference;Vrai)
 $refElem:=DOM Chercher element XML($ref;"preferences/com.4d/method_editor/options";arrElementRefs)  // On lit la valeur courante
 DOM LIRE ATTRIBUT XML PAR NOM($refElem;"use_localized_language";$attrValue)
 Si($attrValue="false")      // Retour au fonctionnement <v15
    DOM ECRIRE ATTRIBUT XML($refElem;"use_localized_language";"true")
 Fin de si
 DOM EXPORTER VERS FICHIER($ref;$UserPreference)
 DOM FERMER XML($ref)

 
 

 
PROPRIÉTÉS 

Produit : 4D
Thème : Annexe : Méthodes utiles pour la conversion
Nom intl. : Appendix: Useful methods for conversion

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

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