Accueil CanalOpenSource
SourceServer
Langage xShell
BasicBrick
tcp OpenClient
tcp_OpenServer

DesignServer

openSource Shop Gallery
Main Street
freeway Avenue

Liens :

ifs_GettingStarted
OffreFormationxShell
OpenSyncPresentation
ssf_Mail-13122002
tcp_GettingStarted
tcp_Samples
tcp_ServerGettingStarted
xShell2003Novembre2003

 

Mot entier Recherche dans la sélection


| Retour

tcp OpenClient - Exemples de code
Exemples de code source
  
xShell utilise principalement la librairie tcp OpenClient pour les synchronisations de données. Vous trouverez de nombreux exemples de code dans la librairie syn_.
  
Voici quelques idées de code simple pour apprendre à utiliser cette librairie :
  
Faire une recherche sur le serveur et ramener la sélection sur le client :
  
La recherche se fait avec la méthode tcp_Search . Pour ramener la sélection sur le client, utilisez la méthode tcp_LoadSelection . Ceux sont des tableaux qui vont être renseignés.
  
tcp_OnStartUpProcess
  
Si (tcp_CreateBind =0) `création du bind
  $err:=tcp_SetSearch (10;Vers sélection courante ) `recherche limitée à 10 enregistrement
  $nbFound:=tcp_Search (5;4;"Dupont") `recherche dans la table 5, champ 4 (nom client)
  $err:=tcp_SetSearch (0;Vers sélection courante )
  Au cas ou
    : (tcp_LoadSelection (5;4;"arrt_ClientLastName")#0)`les noms des clients sont placés dans le tableau arrt_ClientLastName
    : (tcp_LoadSelection (5;5;"arrt_ClientFirstName")#0)
    : (tcp_LoadSelection (5;6;"arrt_ClientPhone")#0)
    Sinon
      tcp_DeleteBind
        `affichage de la selection
  Fin de cas
Fin de si
  
La méthode tcp_LoadSelection utilise un tableau dont le nom est passé entre guillemet. Ce tableau doit exister sur le serveur et sur le client. Cette méthode accepte deux paramètres supplémentaires qui sont utilisés pour réaliser une selection limitée vers tableau. Les deux paramètres détermine le début et la fin de la sous selection.
  
Créer une selection sur le serveur et faire une boucle sur cette sélection en appliquant un traitement :
  
Dans le code ci-dessous, nous cherchons les clients qui n'ont de numéro de téléphone. Puis nous faisons une boucle sur les enregsitrements trouvés et nous ramenons sur le poste client l'identifiant unique du client pour chercher dans notre fichier de donnés local le numéro de téléphone. Le champ est renseigné sur le serveur et l'enregistrement est stocké.
  
tcp_OnStartUpProcess
  
Si (tcp_CreateBind =0)
  $nbFound:=tcp_Search (5;6;"")
  $err:=tcp_StartSelection (5)
  Boucle ($i;1;$nbFound)
    $err:=tcp_LoadField (5;1;->vtIDClient) `l'identifiant du client est ramené en local
    CHERCHER( [Client] ; [Client]ID =vtIDClient)
    $err:=tcp_SendField (5;6;"5;6")
    $err:=tcp_SaveRecord (5)
    $err:=tcp_NextRecord (5)
  Fin de boucle
  tcp_DeleteBind
Fin de si
  
La méthode tcp_SendField a une syntaxe particulière. Les deux premiers paramètres indique le numéro de la table et du champ local. Le troisième paramètre indique sous la forme d'une chaine concaténée le numéro de la table et du champ, chacun séparé par un point virgule. Tous les types de champ sont acceptés sauf les champs racines.
  
  
Créer un enregistrement sur le serveur et envoyer l'enregistrement local :
  
Supposons que nous venons de créer un nouveau client, voici ce qu'il faut écrire pour l'envoyer sur le serveur :
  
Si (tcp_CreateBind =0)
  Au cas ou
    : (tcp_CreateRecord (5)=0)
    : (tcp_SendRecord (5)=0)
    : (tcp_SaveRecord (5)=0)
  Fin de cas
  tcp_DeleteBind
Fin de si
La méthode tcp_CreateRecord dispose d'une autre syntaxe qui permet de tester avant la création si l'identifiant unique de l'enregistrement local existe déjà sur le serveur, si tel est le cas, tcp_CreateRecord renvoie -1.
  
$err:=tcp_CreateRecord (5;1;[Client]ID)
  
Pour completer le traitement des données, vous disposez dans tcp OpenClient d'un jeux de méthodes qui traite toutes les manipulations sur les ensembles.
  
  
Focus sur quelques méthodes
  
Voici quelques méthodes qui peuvent être utiles :
  
Lire et écrire une variable sur le serveur
  
La méthode tcp_GetVariable vous permet de rapatrier en local une variable valorisée sur le serveur. Le premier paramètre est le nom de la variable sur le serveur et le deuxième paramètre est un pointeur sur la variable locale.
  
$err:=tcp_GetVariable ("vBlob";->vBlob)
  
Après execution, la variable vBlob contient le blob "vBlob".
  
Un troisième paramètre de type entier long permet de préciser un numéro de process. Ainsi, ce n'est pas le contenu de la variable vBlob du process serveur qui va être lue mais la variable vBlob du process dont le numéro est passé en 3ème paramètre. La méthode tcp_GetProcessList vous permet d'obtenir la liste des process du serveur avec leurs informations.
  
La méthode tcp_SetVariable affecte la variable distante avec la valeur de la variable locale.
  
$err:=tcp_SetVariable ("vBlob";->vBlob)
  
Tout comme tcp_GetVariable, tcp_SetVariable accepte un numéro de process en troisième paramètre.
  
  
Faire executer une méthode ou du code par le serveur :
  
Que se soit une commande 4D, une méthode ou un bloc de code, vous pouvez en demander l'execution par le serveur avec la méthode tcp_SendMethod. Le bloc de code sera traité par la méthode exe_ . Il y a un impératif, il ne peut contenir de variable locale ou de variable inconnue du compilateur.
  
$err:=tcp_SendMethod ("MiseAJourComptesClients")
  
Vous reprenez la main immédiatement. Le code d'erreur renvoyé par la méthode traite de la communication, pas du bon déroulement de l'execution sur le serveur. Le process de requête sera occupé jusqu'à la fin du traitement que vous lui demandez de réaliser et vous ne reprendrez votre communication avec lui qu'à la fin du traitement.
  
Obtenir des informations sur l'environnement du serveur :
  
La méthode tcp_GetInfo interroge le serveur sur son environnement.
La syntaxe $SrvHeureCourante:=heure(tcp_GetInfo("heure courante")) vous donne l'heure du serveur.
C'est la méthode tcp_SendInfo qui répond à la requête du client. Vous pouvez la regarder pour connaître les autres syntaxes possible et la compléter selon vos besoins.
  
  
  
  
  




 | Haut de page | Retour