FAQ n°24927, publiée le 01/01/2010
Pourquoi l'utilisation d'une rubrique dans une fonction HFSQL retourne "élément inconnu" en compilation dynamique ?
La compilation dans l'éditeur de code se charge de transformer le nom d'une rubrique lorsqu'elle est passée à une fonction HFSQL sans être encadrée des guillemets, afin de permettre son utilisation à l'exécution (mode test GO ou exécutable).

Dans l'éditeur de code on peut donc utiliser indifféremment 
HLitRecherchePremier(COMPOSANT, IDCOMPOSANT, 2)
ou :
HLitRecherchePremier(COMPOSANT, "IDCOMPOSANT", 2)

Mais lorsque le code est compilé dynamiquement, il n'y a pas la compilation de l'éditeur qui se charge de la résolution des noms. L'utilisation d'une rubrique dans une fonction HFSQL doit donc obligatoirement utiliser la syntaxe avec guillemets pour les rubriques :
HLitRecherchePremier(COMPOSANT,"IDCOMPOSANT",2)

Par exemple : 

MonCodeSource est une chaîne = [
Trace(HLitRecherchePremier(COMPOSANT, "IDCOMPOSANT", 2))
]

MaProcédure est une procédure = Compile("Proc_dynamique", MonCodeSource)
MaProcédure()

Sans l'exécution du code compilé dynamiquement va échouer avec le retour :

L'élément 'IDCOMPOSANT' est inconnu.
Code erreur : 1059
Module : wd280vm.dll (01F280094s - 28.0.661.1)