Tech Tips – Les 4 conseils d’avril sont là !

Traduit automatiquement de Deepl

par Add Komoncharoensiri, directeur des services techniques de 4D Inc.

En tant que développeur 4D, vous devez vous tenir au courant des nouvelles avancées que 4D diffuse en permanence. Outre les conseils et astuces fournis par l’équipe produit, les Tech Tips sont une autre référence pour apprendre certains concepts de 4D.

Cet article couvre 4 astuces :

  • Comment traiter les caractères génériques SQL comme une chaîne littérale.
  • Obtenir programmatiquement le nom du projet
  • Les méthodes préemptives dans la même chaîne d’appel doivent également être préemptives.
  • Créer un nouveau document View Pro basé sur une feuille

Comment traiter les caractères génériques SQL comme une chaîne littérale ?

Contrairement à 4D, qui ne dispose que d’un seul caractère générique (« @ »), SQL en possède plusieurs (par exemple « % »,  » ? », « _ », « # », etc.). SQL utilise les caractères génériques pour substituer un ou plusieurs caractères dans une chaîne. Voir ici la liste des caractères de remplacement SQL. Les caractères génériques SQL sont principalement utilisés avec l’opérateur LIKE et la clause WHERE pour rechercher un motif spécifique dans une colonne.

Lors de l’interrogation de chaînes de caractères contenant des caractères génériques SQL à l’aide de l’opérateur WHERE/LIKE dans 4D SQL, les caractères génériques doivent être échappés pour être traités comme des caractères littéraux. La clause ESCAPE est prise en charge dans l’opérateur LIKE pour indiquer le caractère d’échappement.

Par exemple, disons que les données à interroger contiennent « Client_1 », « Client_11 », « Employé_1 » et « Employé_11 ». L’objectif est de rechercher toutes les chaînes de caractères qui se terminent par « _1 ».

Comme le trait de soulignement (« _ ») est l’un des caractères génériques du langage SQL, il doit être échappé pour être traité comme un caractère littéral. On peut l’écrire comme tel.

ARRAY TEXT($results; 0)
Begin SQL
   SELECT ID from Table_1
   WHERE Field_2 LIKE '%\_1' ESCAPE '\'
   INTO : $results
End SQL

Une barre oblique inverse (« \ ») est placée devant le trait de soulignement (« _ »), puis la barre oblique inverse est définie comme le caractère d’échappement. Le caractère d’échappement fait que SQL traite le caractère suivant comme un caractère littéral.

Obtenir programmatiquement le nom du projet.

Lorsque vous travaillez en mode projet, vous avez parfois besoin du nom de l’application du projet. Pour obtenir le nom du projet de manière programmatique, utilisez la commande Folder avec la constante fk database folder. La propriété « name » de l’objet dossier retourné est le nom du projet. Par exemple, étant donné qu’un projet est créé avec le nom « projet exemple », dans la ligne suivante :

$projectName:=Folder(fk database folder).name

$projectName retournera « projet exemple » dans l’application du projet.

Les méthodes préemptives de la même chaîne d’appel doivent également être préemptives.

Toutes les méthodes de la même chaîne d’appel doivent également être préemptives / thread-safe lorsqu’elles utilisent une méthode préemptive. Cela inclut les méthodes typiques d’un projet et les méthodes au sein d’une classe, comme collection.sort(), où le premier argument est un nom de méthode.

En outre, les méthodes thread-safe comprendront des conditions telles que :

  • La propriété « Peut être exécuté dans des processus préemptifs » ou « indifférent » doit être activée.
  • Ne doit pas inclure de plugins non sécurisés par les threads
  • Il ne doit pas utiliser de variables interprocessus.
  • Il ne doit pas appeler de commandes liées à l’interface (par exemple, DIALOG).

Création d’un nouveau document VP basé sur une feuille

Il est possible de créer un nouveau document 4D View Pro à partir d’une feuille spécifique d’un autre document 4D View Pro.

Vous trouverez ci-dessous une méthode utilitaire qui prendra le nom de la zone View Pro comme premier paramètre et le numéro d’index de la feuille souhaitée pour créer un nouveau document contenant uniquement la feuille comme objet :


// VP_Extract_Sheet
#DECLARE($vpAreaName_t : Text; \
$sheetIdx_l : Integer)\
->$newVP_ob : Object

var $srcVP_ob : Object

$srcVP_ob:=VP Export to object($vpAreaName_t)

$newVP_ob:=OB Copy($srcVP_ob)

$newVP_ob.spreadJS.sheets:=New object( \
VP Get sheet name($vpAreaName_t; $sheetIdx_l); \
$newVP_ob.spreadJS.sheets[VP Get sheet name($vpAreaName_t; $sheetIdx_l)])

$newVP_ob.spreadJS.activeSheetIndex:=0
$newVP_ob.spreadJS.sheetCount:=1

Ceci permet d’extraire des feuilles spécifiques d’un document VP ou de tout document importé dans une zone VP comme son propre document VP.

Récapitulation

Voilà, nos 4 trucs et astuces du mois d’avril ! J’espère que vous avez appris quelque chose de nouveau et que vous les appliquerez dans votre codage quotidien.

Si vous avez aimé les conseils ci-dessus, vous en trouverez d’autres dans la base de connaissances 4D, une bibliothèque d’informations sur la technologie 4D où des conseils techniques hebdomadaires et des technotes mensuelles sont constamment publiés. Depuis des années, elle aide les clients à trouver des réponses à leurs problèmes et continuera à le faire dans les années à venir.

Add Komoncharoensiri
Add Komoncharoensiri est un membre clé de l'équipe de support technique depuis 2000. Il a commencé sa carrière dans l'entreprise en tant qu'ingénieur d'assistance technique, avant de devenir évangéliste 4D en 2003, puis gestionnaire des applications internes en 2006 et enfin directeur des services techniques en 2007.Add a obtenu une licence en informatique de l'université d'État de San Jose en 2000. Il est passionné par l'expérience utilisateur (UX) et la programmation des interfaces utilisateur. Il a participé au développement et à la gestion des sites Web 4D Knowledgebase et 4D Partner Central.