version 6.0
Nous vous proposons de suivre quelques exemples qui illustrent le fonctionnement de 4D en tant que client DDE. Avant de débuter nos exemples, il est une règle à laquelle il ne faut jamais déroger. En effet, toute communication doit débuter par une initialisation et être refermée en fin d'échange. Les fonctions qui vous permettront d'accomplir ces deux actions sont respectivement :
Note : Il existe également la commande DDE_TERMINEALL qui ferme toutes les connexions établies.
Recevoir des données
Nous souhaitons connaître le contenu de la cellule nommée "Ventes" dans le document SPREAD.XLS et l'attribuer à la variable vVentes. Avant toute chose, vérifiez que l'application Excel est lancée et que le document SPREAD.XLS est ouvert. Il est indispensable de refermer le canal à la fin de vos échanges à l'aide de la fonction DDE_Terminate.
Ces quelques lignes de code pourront être saisies, par exemple, dans la méthode d'un bouton :
Canal:=DDE_Initiate("Excel";"C:\SPREAD.XLS")
Err:=DDE_Request(Canal;"Ventes";vVentes)
Err:=DDE_Terminate (Canal)
ALERTE("Ventes lues dans Excel : "+vVentes)
Note : La cellule Ventes doit bien entendu exister dans le document. Pour désigner une cellule quelconque, utilisez par exemple la forme "L2C3" (deuxième ligne de la troisième colonne).
Envoyer des données
Nous allons maintenant non plus lire mais écrire la valeur lue précédemment dans la cellule "Ventes" de Excel.
Canal:=DDE_Initiate("Excel";"C:\SPREAD.XLS")
vVentes:=Demander("Ventes à envoyer à Excel ?")
Err:=DDE_Poke(Canal;"Ventes";vVentes)
Err:=DDE_Terminate (Canal)
Demander l'exécution d'une commande
Nous allons maintenant demander à Excel de créer un nouveau document :
Note : Le protocole DDE spécifie que les commandes sont à envoyer entre crochets. Vous pouvez inclure plusieurs commandes dans la même requête.
Référence
4e Dimension en tant que serveur DDE.