Requêtes

Navigation:  Requêtes et Macros >

Requêtes

Previous pageReturn to chapter overviewNext page

Show/Hide Hidden Text

Pour permettre d'appliquer automatiquement des modifications à tout ou partie du devis courant ou d'une base d'articles, QDV7 dispose d'un langage de requêtes.

Ceci est soumis à un paramètre de sécurité (Macros). Quand la permission n'est pas donnée, on peut encore exécuter des requêtes prédéfinies dans le groupe Boutons macros.  

A l'exécution, QDV7 scanne chaque ligne de minute et y exécute le code.

Le code ressemble en général à

If Minutes.[<nom champ>] = "...." Then

 ...

End If

 

Editeur de requêtes

request_ribbon

S'assurer qu'un devis est ouvert.

Sélectionner Automatismes>Requêtes>Editeur de requêtes.

L'éditeur est une fenêtre redimensionnable qui présente plusieurs volets.

Le volet gauche présente plusieurs onglets :

Fichiers sert à identifier les requêtes : Nom, nom temporaire du devis, chemin du fichier si elles sont externes

Conditions énumère les opérateurs et les mots réservés prêts à être saisis à la souris

Verbes

Champs énumère les champs natifs et les champs libres, avec leur accessibilité et leur type

Variables énumère les variables globales GLV et SYS du devis

Portée montre un arbre de sélection ; la portée sélectionnée est commune à toutes les requêtes présentées.

 

Procédure générale

Pour créer une nouvelle requête, cliquer sur Nouveau. Pour la renommer, faire un clic triple sur la ligne ou un clic droit et sélectionner Renommer requête.

Pour enregistrer l'identité et le code de la requête, cliquer sur Enregistrer. Noter que la portée n'est PAS enregistrée. Alternative : faire un clic droit sur sa ligne et sélectionner Enregistrer requête>Enregistrer dans le devis ; en outre, on peut enregistrer dans un fichier (extension : req) et recharger une telle requête y compris la portée.

Pour ajouter une requête externe, faire un clic droit et sélectionner Importer requête.

Pour supprimer une requête, faire un clic droit sur sa ligne et sélectionner Supprimer requête.

 

Pour créer un bout de code :

1.Dans l'onglet Fichiers, faire un double clic sur la requête désirée ; le symbole de la requête sélectionnée apparaît en bleu et le code apparaît dans le volet droit

2.avec les autres onglets, mettre le curseur à l'endroit désiré du volet droit et faire un double clic sur l'item désiré : l'item apparaît

3.pour saisir un champ, puiser dans l'onglet Champs ; alternative : saisir "Minutes" suivi d'un point ; un "pique-champ" avec les identifiants apparaît dans la ligne ; sinon, vérifier les espaces  

4.cliquer sur Enregistrer ; ceci compile le code pour stocker une image binaire dans le devis, et le teste partiellement (la couleur du carré du bouton Exécuter indique le résultat).  

 

NOTA La chaîne de caractères apparaît en brun entre des apostrophes doubles.

 

Pour exécuter le code :

1.Dans l'onglet Portée, sélectionner la branche/le poste ; la branche ou le poste sélectionné apparaît sous le volet gauche

2.faire un double clic sur la requête désirée ; son code apparaît

3.cliquer sur Exécuter ; ceci compile la requête

4.en cas de succès et que QDV7 a écrit dans des cellules, le nombre de cellules modifiées est affiché ; pour voir les modifications, il peut être nécessaire de quitter l'éditeur

5.en cas d'erreur, le carré du bouton devient grenat et des messages sont affichés. Le volet de debug se remplit automatiquement ; on peut demander de coller le code VB natif dans le presse-papier

6.coller le code dans un éditeur de texte ; dans Notepad, pour repérer la ligne référencée dans la colonne Description du volet de debug, rendre visible la barre d'état.      

 

request_editor

 

NOTA Pour terminer l'exécution, il peut être nécessaire de quitter l'éditeur.

Accès rapide : Automatismes>Requêtes>Exécuter requête. Ceci utilise le code binaire.

Des exemples de requêtes apparaissent dans l'exemple de devis Multi-languages.

 

RECOMMANDATIONS

- Se souvenir que certaines opérations peuvent ne PAS être supprimées ; enregistrer le devis d'abord

- Commencer les commentaires avec une apostrophe simple ; ils apparaissent automatiquement en vert

- Mettre des espaces entre les termes

- Veiller aux formats des constantes

- Si la bordure jaune va au-delà du code, supprimer la partie qui déborde

- Ne pas confondre ces trois termes :

une erreur concerne le code

un avertissement est un message qui attire l'attention sur des champs en lecture seule utilisés dans le code ; le code peut cependant être exécuté, mais n'a pas d'effet

une anomalie concerne le devis ; c'est le résultat négatif d'une condition placée dans le code et le verbe Ajout_Liste_Anomalies

 

Conditions

BOOLEENS

< est vrai si le premier opérande est supérieur au second

<= est vrai si le premier opérande est supérieur ou égal au second

= est vrai si le premier opérande est égal au second ; les opérandes peuvent être des chaînes de caractères

<> est vrai si le premier opérande est différent du second ; les opérandes peuvent être des chaînes de caractères

> est vrai si le premier opérande est inférieur au second

>= est vrai si le premier opérande est inférieur ou égal au second

Contient (<chaîne de caractères>) est vrai si l'opérande contient cette chaîne de caractères

Commence_Par (<chaîne de caractères>) est vrai si l'opérande commence par cette chaîne de caractères

Se_Termine_Par(<chaîne de caractères>) est vrai si l'opérande finit par cette chaîne de caractères

Est_Situation() est vrai si la version est une situation.  

Nota : Contient, Commence_Par et Se_Termine_Par doivent être précédés d'un champ et éventuellement d'un domaine (Minutes, ...).

 

NOMS RESERVES

Ils apparaissent en bleu dans le volet droit.

Si précède une expression conditionnelle

Et sert à combiner jusqu'à 4 conditions

Ou sert à combiner jusqu'à 4 conditions

Alors ; facultatif après Si ; mettre un saut de ligne après

Sinon précède un verbe

SinonSi précède une autre expression conditionnelle

Fin Si clôt une condition

Fin termine le code.

 

OPERATEURS DE BASE : +, -, *, /

OPERATEURS POUR CHAINES

SupprEspaces(<chaîne de caractères>) retire les espaces de tête et de queue ; c'est recommandé avant de faire une comparison

SousChaîne(<chaîne de caractères>, <position de départ>, <longueur>) génère une sous-chaîne à partir d'une chaîne

Position(<chaîne de caractères>, <chaîne à trouver>) génère la position d'une chaîne à l'intérieur d'une autre

Longueur(<chaîne de caractères>) génère le nombre de caractères

Majuscules(<chaîne de caractères>) régénère la chaîne avec seulement des majuscules

Minuscules(<chaîne de caractères>) régénère la chaîne avec seulement des minuscules

Convertir_en_Date("1/1/2014") génère les date et heure saisies dans le format des champs AlterDate (Date de modification), Date d'article, Date de fin Gantt, ...

& permet la concaténation  

 

Par défaut, le langage de requête est sensible à la casse. Utiliser les deux dernières fonctions pour ignorer la casse dans un test.

EXEMPLES

'Ce code teste la valeur Unité indépendamment de la casse et met la description au pluriel

Si Minuscules(Minutes.[Unit]) = "u" Alors

 Minutes.[Description] = Minutes.[Description] & "s" 

Fin Si

 

Si Minutes.[AlterDate] = Convertir_en_Date("30/05/2014 20:46:01"Alors 

 ...

Fin Si

Verbes

Certains verbes nécessite des arguments.

Ajout_Liste_Anomalies(<Message>) permet d'afficher une liste d'anomalies et d'écrire ce message dans la colonne Message ; on peut cliquer sur les lignes de la liste ; on peut même mélanger les déclarations avec des fonctions qui écrivent dans la base  

Recalculer_Tout(<Forcer le calcul>, <Synchroniser avec gestion>), en général placé en fin de requête :

+ajouter arguments 1 et 0 pour calculer coûts et prix (ceci remplace un clic sur l'icône dans le coin inférieur droit : sans quitter l'éditeur, les marques #N/A disparaissent du WBS et de la vue des Minutes)

+ajouter arguments 0 et 1 pour se synchroniser avec une base de gestion ; voir Mettre à jour un devis

+ajouter arguments 1 et 1 pour les deux actions ; pour des détails sur ce que QDV7 fait, voir Renvoi de coefficients

Recalculer_Coûts_Seulement() : sert à calculer les coûts sur une requête ; bien plus rapide que Recalculer_Tout

Afficher_Message(<Message>, <Icône>) Numéro d'icône : voir table ci-dessous ; un son spécifique retentit

Rafraîchir_Vue_Courante() sert, à l'intérieur d'une boucle, à actualiser les minutes sur-le-champ, en particulier avant d'accuser réception du message de l'Editeur QDV indiquant le nombre d'écritures

Terminer_Requête() sert à quitter une boucle, par exemple dès qu'une première anomalie est trouvée

Effacer_Valeurs_Ligne() sert à remettre toutes les valeurs de la ligne courante à leur valeur par défaut

Aller_à_Colonne(<Identifiant de colonne>) déplace le curseur dans la colonne indiquée de la minute courante.

 

Numéro d'icône

0

1

2

3

autre

Valeur

Information

Warning

Stop

Question

autre

Pictogramme dans le message

info

warning

delete

help

néant

 

METHODE

La méthode show peut s'appliquer à l'objet MessageBox ; les arguments permettent de personnaliser la fenêtre qui apparaît au test et à l'exécution.

Syntaxe : MessageBox.show("<Message à afficher>", "<Titre fenêtre>", MessageBoxButtons.OK, MessageBoxIcon.<Valeur>)

"OK" est la légende du bouton d'accusé de réception.

Le pictogramme incrusté (et le son émis) dépend de la valeur saisie selon la table ci-avant.

 

Exemple :

Si Minutes.[Quantity] > 10 Alors

 MessageBox.show(Minutes.[Description], "Fin de requête", MessageBoxButtons.OK, MessageBoxIcon.Stop)
           Exit_Request()
Fin Si

 

Champs

Syntaxe générale : Minutes.[<identifiant du champ>]

Pour lire un identifiant dans la vue des minutes, faire un clic droit sur la colonne et sélectionner Propriétés.

Certains champs sont en lecture seule soit parce que le profil utilisateur stipule qu'ils ne sont pas modifiables ou de façon intrinsèque s'ils sont :

des résultats de calculs

des dates

des booléens, GUID, numéro de ligne, valeur cible de ligne, etc

définis dans le classeur d'environnement

champs dont la saisie est permise "dans le WBS seulement".

 

ico_tipUne requête qui modifie le champ Databasesource et inclut le verbe Recalculer_Tout est utile dans les contrats au bordereau ou à commande (Définition) Marchés au bordereau : contrats basés sur un devis de référence ou une base d'articles imposant les prix. pour pointer vers diverses bases l'une après l'autre.

 

Variables

Accès comme dans le gestionnaire de nom.

Toutes les variables SYS sont en lecture seule. Les variables GLV sont en lecture seule si la cellule où elles sont définies est verrouillée (par exemple, comme résultat de sélection par des objets).

L'éditeur remplacera GLV_. par [GLV_____