J'écrit une application en delphi utilisant de nombreuses requêtes, et qui doit-être "compatible" avec les SGBD Oracle, MSSQL et Access. Pour le moment je m'étais toujours débrouillé pour faire des requêtes SQL qui passaient sur toutes les SGBD, mais dernièrement je bute sur l'une d'entre elles. J'ai déjà dû la rendre un peu plus compliqué qu'au départ à cause de la syntaxe d'oracle (étant parti de la SGBD MSSQL) mais sous Access pas moyen de trouver la syntaxe correcte.
Voici la requête incriminée :
"UPDATE INTERVENTION AS i SET i.DATEMAJIMPCPA = ( Select pr.DATEMAJ From PREOP pr Inner Join ( Select Max(pr2.PREOPCLEUNIK) As LASTPREOPCLEUNIK From PREOP pr2 Inner Join ( Select ii.NTCLEUNIK From INTERVENTION ii Where ii.NTCLEUNIK = 1 ) iii On pr2.NTCLEUNIK = iii.NTCLEUNIK Group by pr2.NTCLEUNIK ) sel On pr.PREOPCLEUNIK = sel.LASTPREOPCLEUNIK ), i.VERSIONIMPCPA = ( Select iii.VERSIONIMPCPA+1 From INTERVENTION iii Where iii.NTCLEUNIK = 1 ) WHERE i.NTCLEUNIK=1 And i.WRITELOCK Is Null"
elle n'est franchement pas très compliqué, j'ai l'impression que le "SET XXX = (Select...)" n'est pas supporté sous Access d'après kk essais que j'ai pû faire, il me semblait pourtant bien que c'était supporté ! le "(Select...)" ne retourne évidemment qu'un seul résultat.
Différentes précisions : il s'agit d'une BD Access 2000 (les autres c MSSQL2000 et Oracle 8/9). Le message d'erreur retourné est "l'opération doit utilisé une requête qui peut-être mise à jour"
Any ideas ? merci.