RECEVOIR ENREGISTREMENT

4D - Documentation   Français   English   German   Español   Japanese   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant

version 5


RECEVOIR ENREGISTREMENT {(table)}

ParamètreTypeDescription
tableTableTable dans laquelle recevoir l'enregistrement, ou
Table par défaut si omis

Description

RECEVOIR ENREGISTREMENT ajoute dans table un enregistrement reçu par l'intermédiaire du port série ou d'un document ouvert par la commande REGLER SERIE. L'enregistrement doit avoir été envoyé par la commande ENVOYER ENREGISTREMENT. Lorsque vous exécutez RECEVOIR ENREGISTREMENT, un nouvel enregistrement est automatiquement créé dans table. Si l'enregistrement a été correctement reçu, vous pouvez le sauvegarder à l'aide de STOCKER ENREGISTREMENT.

L'enregistrement est reçu en totalité, ce qui signifie que les images et BLOBs stockés dans ou avec l'enregistrement sont également reçus.

Important : Lorsque des enregistrements sont envoyés et reçus par ENVOYER ENREGISTREMENT et RECEVOIR ENREGISTREMENT, la structure de la table source et celle de la table de destination doivent être compatibles. Si ce n'est pas le cas, 4D convertira les valeurs en fonction des définitions des tables lorsque RECEVOIR ENREGISTREMENT sera exécutée.

Notes

1. Si vous recevez un enregistrement provenant d'un document avec cette commande, le document doit avoir été ouvert par la commande REGLER SERIE. Vous ne pouvez pas utiliser RECEVOIR ENREGISTREMENT avec un document ouvert par Ouvrir document, Ajouter a document ou Creer document.

2. Pendant l'exécution d'un RECEVOIR ENREGISTREMENT, l'utilisateur peut interrompre l'opération en appuyant sur les touches Ctrl+Alt+Maj (sous Windows) ou Commande+Option+Maj (sous Mac OS). Cette interruption génère une erreur –9994 que vous pouvez intercepter à l'aide d'une méthode installée par la commande APPELER SUR ERREUR. Généralement, vous devez gérer les interruptions d'une réception uniquement lors d'une communication série.

Exemple

L'utilisation combinée de ENVOYER VARIABLE, ENVOYER ENREGISTREMENT, RECEVOIR VARIABLE et RECEVOIR ENREGISTREMENT est idéale pour archiver des données ou échanger des données entre des bases monopostes identiques utilisées à différents endroits. Certes, vous pouvez échanger des données entre des bases 4D à l'aide des commandes d'import/export telles que IMPORTER TEXTE et EXPORTER TEXTE. Cependant, si vos données contiennent des images, des sous-tables et/ou des tables liées, l'utilisation de ENVOYER ENREGISTREMENT et RECEVOIR ENREGISTREMENT est, de loin, plus pratique.

Par exemple, la documentation que vous êtes en train de lire a été créée à l'aide de 4D et 4D Write. Comme plusieurs rédacteurs basés dans différents pays travaillaient sur ce projet, nous avions besoin d'un système simple pour échanger les données entre les différentes bases. Voici une vue simplifiée de la structure de la base :

La table [Commands] contient la description de chaque commande ou section. Les tables [CM US Params] et [CM FR Params] contiennent respectivement les paramètres de chaque commande en anglais et en français. La table [CM See Also] contient les commandes indiquées en tant que Références pour chaque commande ou section. L'échange de la documentation entre les bases consiste donc à envoyer les enregistrements de [Commands] ainsi que leurs enregistrements liés. Pour cela, nous utilisons ENVOYER ENREGISTREMENT et RECEVOIR ENREGISTREMENT. De plus, nous utilisons ENVOYER VARIABLE et RECEVOIR VARIABLE pour "cocher" les enregistrements importés/exportés.

Voici la méthode projet (simplifiée) d'export de la documentation :

      ` Méthode projet CM_EXPORT_SEL
      ` Cette méthode fonctionne avec la sélection courante de la table [Commands]

   REGLER SERIE(12;"") ` Laissons l'utilisateur créer et ouvrir un document série
   Si (OK=1)
         ` Marquons le document avec une variable décrivant son contenu
         ` Note: la variable process BUILD_LANG indique si des données US (anglaises) 
         ` ou FR (françaises) sont envoyées
      $vsTag:="4DV6COMMAND"+BUILD_LANG
        ENVOYER VARIABLE($vsTag)
         ` Envoyer une variable indiquant combien de [Commands] sont exportées
        $vlNbCmd:=Enregistrements trouves([Commands])
        ENVOYER VARIABLE($vlNbCmd)
        DEBUT SELECTION([Commands])
         ` Pour chaque commande
      Boucle ($vlCmd;1;$vlNbCmd)
            ` Envoyer l'enregistrement [Commands]
         ENVOYER ENREGISTREMENT([Commands])
            ` Sélection de tous les enregistrements liés
         LIEN RETOUR([Commands])
            ` En fonction de la langue, envoyer une variable indiquant
            ` le nombre de paramètres qui va suivre
         Au cas ou 
            : (BUILD_LANG="US")
               $vlNbParm:=Enregistrements trouves([CM US Params])
            : (BUILD_LANG="FR")
               $vlNbParm:=Enregistrements trouves([CM FR Params])
         Fin de cas 
         ENVOYER VARIABLE($vlNbParm)
            ` Envoyer les enregistrements des paramètres (s'il y en a)
         Boucle ($vlParm;1;$vlNbParm)
            Au cas ou 
               : (BUILD_LANG="US")
                  ENVOYER ENREGISTREMENT([CM US Params])
                  ENREGISTREMENT SUIVANT([CM US Params])
               : (BUILD_LANG="FR")
                  ENVOYER ENREGISTREMENT([CM FR Params])
                  ENREGISTREMENT SUIVANT([CM FR Params])
             Fin de cas 
         Fin de boucle 
            ` Envoyer une variable indiquant combien de "Références" vont suivre
         $vlNbSee:=Enregistrements trouves([CM See Also])
         ENVOYER VARIABLE($vlNbSee)
            ` Envoyer les enregistrements [See Also] (s'il y en a)
         Boucle ($vlSee;1;$vlNbSee)
            ENVOYER ENREGISTREMENT([CM See Also])
            ENREGISTREMENT SUIVANT([CM See Also])
         Fin de boucle 
            ` Aller à l'enregistrement [Commands] suivant et continuer l'export
         ENREGISTREMENT SUIVANT([Commands])
      Fin de boucle 
      REGLER SERIE(11) ` Fermer le document
   Fin de si 

Voici la méthode projet (simplifiée) d'import de la documentation :

      ` Méthode projet CM_IMPORT_SEL 

   REGLER SERIE(10;"")   ` Laissons l'utilisateur ouvrir un document existant
   Si (OK=1) ` Si un document a été ouvert
      RECEVOIR VARIABLE($vsTag)   ` Essayons de recevoir la variable marqueur attendue
      Si ($vsTag="4DV6COMMAND@")   ` Avons-nous le bon marqueur ?
         $CurLang:=Sous chaine($vsTag;Longueur($vsTag)-1)   ` Extrayons la langue du marqueur
         Si (($CurLang="US") | ($CurLang="FR"))   ` Avons-nous reçu un langage valide ?
            RECEVOIR VARIABLE($vlNbCmd)   ` Combien de commandes dans ce document?
            Si ($vlNbCmd>0)   ` S'il en existe une au moins
               Boucle ($vlCmd;1;$vlNbCmd)    ` Pour chaque enregistrement [Commands] archivé
                     ` Réception de l'enregistrement
                  RECEVOIR ENREGISTREMENT([Commands])
                     ` Appelons une sous-routine qui sauvegarde le nouvel enregistrement ou le copie
                     ` dans un enregistrement existant
                  CM_IMP_CMD ($CurLang)
                     ` Réception du nombre de paramètres (s'il y en a)
                  RECEVOIR VARIABLE($vlNbParm)
                  Si ($vlNbParm>=0)
                        ` Appelons une sous-routine qui appelle RECEVOIR ENREGISTREMENT puis stocke
                        ` les nouveaux enregistrements ou les copie dans des enregistrements existants
                     CM_IMP_PARM ($vlNbParm;$CurLang)
                  Fin de si
                     ` Réception du nombre de "Références" (s'il y en a)
                  RECEVOIR VARIABLE($vlNbSee)
                  Si ($vlNbSee>0)
                        ` Appelons une sous-routine qui appelle RECEVOIR ENREGISTREMENT puis stocke
                        ` les nouveaux enregistrements ou les copie dans des enregistrements existants
                     CM_IMP_SEEA ($vlNbSee;$CurLang)
                  Fin de si 
               Fin de boucle 
            Sinon 
               ALERTE("Le nombre de commandes dans ce document d'export est invalide.")
            Fin de si 
         Sinon
            ALERTE("Le langage de ce document d'export est inconnu.")
         Fin de si
      Sinon
         ALERTE("Ce document n'est pas un document d'export.")
      Fin de si 
      REGLER SERIE(11)   ` Fermer document
   Fin de si 

Notez que nous n'avons pas testé la variable OK pendant la réception des données, si intercepté les éventuelles erreurs. Cependant, comme nous avons stocké dans le document des variables décrivant le document lui-même, si ces variables, une fois reçues, sont correctes, la probabilité d'erreur est très faible. Si par exemple un utilisateur ouvre un mauvais document, le premier test stoppe l'opération entière.

Référence

ENVOYER ENREGISTREMENT, ENVOYER VARIABLE, RECEVOIR VARIABLE.

Variables et ensembles système

La variable système OK prend la valeur 1 si l'enregistrement est correctement reçu, sinon elle prend la valeur 0.


4D - Documentation   Français   English   German   Español   Japanese   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant