Bonjour,
Je reposte une question déjà posée mais sous une autre forme, car je pense qu’elle concerne la syntaxe utilisée dans ma requête et non le logiciel BASE.
J’ai un problème avec une requête SQL contenant une variable dans LibreOffice-Base (Version: 6.0.7.3 sur Ubuntu 18.04 Type de BDD : HSQLDB)
Quelque soit la manière d’intégrer ma variable dans la requête (avec ou sans les “:” MaVariable ou :MaVariable), j’ai systématiquement une erreur. J’ai tenté plusieurs syntaxes (j’utilise le mode “requête en mode SQL”)
Voici, ci-dessous, un exemple du type de requête que je voudrais utliser.
MaVariable
SET MaVariable=1
SELECT "Champ1", "Champ2", "Champ3" FROM "MaBase" WHERE "Champ2" = MaVAriable,
Message d’erreur :
->Impossible de charger le contenu des données.
→ Statut SQL: 00000
Code d’erreur: -155
Statement does not generate a result set
Bizarrement lorsque j’entre la requête suivante (avec les “:” avant le nom de la variable, ça ne fonctionne pas sans),elle me renvoie les champs appelés dans la requête mais sans aucun enregistrement
SELECT "Champ1", "Champ2", "Champ3" FROM "MaBase" WHERE "Champ2" = :MaVAriable
Je précise que la valeur donnée en exemple (MaVariable=1) donne bien des résultats car lorsque j’entre la même requête sans variable (SELECT “Champ1”, “Champ2”, “Champ3” FROM “MaBase” WHERE “Champ2” = 1) les enregistrements correspondant à la requête s’affichent bien.
J’ai beau chercher je ne trouve pas de solution.
Merci pour votre aide.
La variable est MaVAriable à laquelle je veux affecter la valeur 1. L’échantillon que vous avez fourni s’applique très bien à ma question et à la réponse que je vous ai faite précédemment. Or dans l’échantillon comme je vous l’ai dit je dois affecter la valeur de MAVAriable via une boite de dialogue et je ne peux pas l’intégrer directement dans ma requête. Donc la question est : comment affecter une valeur à une variable dans une requête SQL. Quelle est la bonne syntaxe? SET, DECLARE… ne fonctionnent pas.La requête que vous fournissez n’utilise pas de variable, elle ne fait que rechercher les enregistrements pour lesquels le Champ2 a pour valeur 1.L’utilité de la variable est qu’elle permet de stocker une valeur pour la récupérer dans une autre requête ou sous requête et qu’elle est modifiable. J’espère que c’est un peu plus clair 
