2013-10-07 1 views
0

Je recherche:UniDAC (delphi) question macro

select &macro1 from table1 
where &macro2 

delphi:

macrobyname('macro1').value := 'field1 as test,field2'; 
macrobyname('macro2').value := 'test=1'; 

je suis une erreur comme ceci:

Unknown column test in where clouse 

question 2)

Showmessage (sql.text)

; Le résultat est "sélectionner & macro1 de table1 où & macro2" mais je pense "sélectionnez Champ1 comme test, field2 de table1 où test = 1"

comment puis-je sql.text après macro remplacement.

(Excusez-moi pour un mauvais anglais).

meilleures salutations, Nouri

Répondre

1

Vous ne dites pas ce que la base de données que vous utilisez, mais ceux que je l'ai utilisé (SQL Server et Sybase) ne permet pas d'alias de champ à utiliser dans la clause where. Donc vous devriez dire:

macrobyname('macro2').value := 'field1=1'; 
+0

Oui, je trouve une solution, je dois utiliser ayant clouse au lieu d'où. en fait, je sais que, mais dans la vraie requête, macro1 est ", (sélectionnez sum (filed1) de table2 où table2.code = table1.code) comme test", BTW je dois utiliser ayant. merci pour la réponse. –

1

Le standard SQL interdit les références aux alias de colonne dans une clause WHERE. Cette restriction est imposée car lorsque la clause WHERE est évaluée, la valeur de la colonne n'a peut-être pas encore été déterminée. Un alias de colonne peut être utilisé dans une clause ORDER BY, mais il ne peut pas être utilisé dans une clause WHERE, GROUP BY ou HAVING.

Questions connexes