2010-08-10 21 views
0

Je porte un code VRAIMENT ancien pour utiliser les composants UniDAC. J'ai frappé un mur avec un sql UPDATE spécifique qui change un champ nommé "return". Envelopper simplement le champ entre guillemets ne résout pas le problème, car le dialecte SQL de la base de données est 1, ce qui ne prend pas en charge les délimiteurs de champs de guillemets doubles. Y at-il moyen de contourner cela sans changer de domaine? Je suis sur delphi 7, et je m'éloigne des composants interbase db.IBDAC/UniDAC + interbase 6 ou 7 + un champ de table nommé "return"

Modifier: SQL est comme suit:

update logger set 
returning = :RETURNING 
where locator = :LOCATOR 

renvoie l'erreur suivante en essayant de préparer:

--------------------------- 
Ww 
--------------------------- 

Dynamic SQL Error 
SQL error code = -104 
Token unknown - line 3, char -1 
where. 
--------------------------- 
OK 
--------------------------- 

Cela se produit même quand je mets le dialecte SQL client à 1 dans le code :

query1.Connection.SpecificOptions.Values['SQLDialect'] := '1'; 
+0

Je ne sais pas Interbase trop bien, mais je sais que dans SQL Server, vous pouvez mettre [crochets] autour du nom du champ dans une situation comme celle-ci. Cela fonctionne-t-il aussi chez IB? –

+0

vient d'essayer, ne fonctionne pas. – Stamp

+0

D'où vient cette erreur? Cela provient-il de la base de données ou du composant que vous utilisez? –

Répondre

1

J'ai dû parler au développeur. Il a été adressé à un certain point, mais j'ai besoin de supprimer tous les paramètres de la requête avant de l'exécuter. Très étrange, mais c'est une solution de contournement:/

0

Est-il possible pour vous créer une vue en laissant tout le même à l'exception de ce champ et utiliser cette vue dans votre application?

Est-il possible d'exécuter cette application avec la DLL client d'un Firebird < 2.1 (1.5 par exemple) et un serveur avec la même version?

Je pense que cela est dû à la nouvelle syntaxe où retourner est un mot réservé!