4D v16Appel des tables et des méthodes 4D |
||||||||||
|
4D v16
Appel des tables et des méthodes 4D
Appel des tables et des méthodes 4D
Le mode d'accès aux tables 4D référencées dans l’application Wakanda dépend du type d'intégration du catalogue externe, défini sur Wakanda lors de la connexion à l'application distante (cf Intégrer au modèle actif ou utiliser un modèle dédié) :
En cas de fusion au modèle actif, les tables 4D référencées dans l’application Wakanda peuvent être utilisées directement dans le code JavaScript server-side (SSJS) comme propriétés de l’objet ds, tout comme les datastore class locales. Note : L’objet ds contient le datastore courant de l’application Wakanda. Par exemple pour effectuer une recherche parmi les enregistrements de la table [Employees], vous pouvez écrire : var emp = ds.Employees.query("age > :1",30); //récupérer la collection des enregistrements de la table Employees //dont l’âge est supérieur à 30 dans la variable emp Côté client, vous pouvez également bénéficier des mécanismes automatiques des datasources basées sur des datastore class et associées à des widgets. Par exemple, si vous associez la datasource 'employés' à un widget de type 'Grid', vous pouvez afficher automatiquement la liste des employés : Lorsque la table est associée à une datasource, vous pouvez également accéder à ses données via cette datasource. Par exemple pour trier la collection d’enregistrements de la datasource 'employés', vous pouvez écrire : sources.employés.orderBy("age"); //trier la collection d’employés en fonction de l’age Pour plus d’informations sur la manipulation des datastore class, reportez-vous à la documentation de Wakanda. Les tables 4D référencées sont utilisées dans le code JavaScript server-side (SSJS) comme propriétés du catalogue dans lequel elles ont été placées au moment de la création de la liaison. Le nom du catalogue est celui que vous passez dans le paramètre de connexion Remote datastore name (dialogue de connexion de Wakanda Studio) ou nomLocal (méthodes JavaScript). Par exemple, si vous avez créé une liaison appelée "my4Dstore" et souhaitez effectuer une recherche parmi les enregistrements de la table [Employees], vous pouvez écrire : var emp2 = my4Dstore.Employees.query("age > :1", 30); // chercher parmi les enregistrements de la table Employees // dans la liaison nommée "my4Dstore" Note d'implémentation : Côté client, l'utilisation d'un modèle dédié dans la version actuelle de 4D Mobile n'autorise pas pour l'instant l'accès aux classes distantes. Les méthodes 4D référencées dans l’application Wakanda peuvent être utilisées directement dans le code JavaScript comme propriétés des objets datastore class, entity collection ou entity, en fonction de leur portée définie côté 4D (cf. paragraphe Table parente et Portée des méthodes projet). Voici la correspondance entre les objets Wakanda et la portée des méthodes projet :
Note : Les méthodes 4D peuvent également être appelées côté client via des datasources (cf. ci-dessous), dans ce cas toutes les méthodes sont disponibles, la datasource les appliquant automatiquement à la collection courante ou l’entity courante en fonction du contexte. Par exemple, si vous effectuez une recherche avec la méthode query (cf. paragraphe précédent), Wakanda retourne une entity collection. Vous pouvez exécuter sur cette collection toute méthode projet 4D dont la portée déclarée est "sélection courante". Les méthodes 4D peuvent être appelées par du code JavaScript de trois manières :
Le choix d’un emplacement (serveur ou client) et de l’API dépend des besoins de l’application et est détaillé dans la documentation de Wakanda. Comme pour les méthodes standard, vous pouvez passer des paramètres lors de l’appel, ils seront reçus dans l’ordre dans les paramètres $1, $2, etc. De même, la méthode peut retourner un résultat dans la variable $0. Exemple : Vous souhaitez augmenter de 5% les employés dont le salaire est inférieur à 1500.
Vous pouvez également retourner une sélection 4D directement comme une collection Wakanda à l'aide de la commande MOBILE Return selection. Par exemple : //méthode projet FindCountries Lors de l’appel d’une méthode 4D via la liaison Wakanda :
A noter qu’après l’exécution d’une méthode via 4D Mobile, le contexte 4D est réinitialisé :
Vous devez veiller à ce que la portée de la méthode 4D corresponde au type d’objet Wakanda appelant, sinon une erreur "TypeError: 'undefined' is not a function" sera retournée par Wakanda. Par exemple, soit la méthode 4D "getcursel" qui contient le code suivant: $0:=Records in selection([Table_1]) Soit la méthode run côté Wakanda : var tt = ds.Table_1.query("Field_2 = 'a*'").getcursel(); La méthode query( ) retourne une collection. Si la portée de la méthode getcursel a été définie comme "Enregistrement courant", Wakanda retournera l’erreur suivante :
|
PROPRIÉTÉS
Produit : 4D
HISTORIQUE
UTILISATION DE L'ARTICLE
4D Mobile ( 4D v16) |
||||||||