requête SQL qui ne passe pas sous Acces mais sous Oracle et MSSQL

requête SQL qui ne passe pas sous Acces mais sous Oracle et MSSQL - SQL/NoSQL - Programmation

Marsh Posté le 20-01-2004 à 08:53:51    

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.

Reply

Marsh Posté le 20-01-2004 à 08:53:51   

Reply

Marsh Posté le 20-01-2004 à 09:00:54    

j'ajoute que j'ai les droits d'écriture sur la BD et il n'y a aucune contrainte d'intégrité sur les champs mis à jour, si je tape une requête plus simple du genre :
"UPDATE INTERVENTION AS i SET i.DATEMAJIMPCPA = 01/01/2003, i.VERSIONIMPCPA = 1 WHERE i.NTCLEUNIK=1 And i.WRITELOCK Is Null" alors ça passe sans prob...

Reply

Marsh Posté le 20-01-2004 à 09:12:03    

access c'est pas un sgbd c'est un gestionnaire de fiches ^^

Reply

Marsh Posté le 20-01-2004 à 10:52:19    

+1

Reply

Marsh Posté le 20-01-2004 à 10:57:10    

merci pour vos réponses super constructives ;) enfin à priori il s'agit bien d'une limitation d'accès...

Reply

Marsh Posté le 20-01-2004 à 18:27:47    

Oui, Access est très très limité mais pour un usage bureautique monoposte, ça convient.
J'avais rencontré cette erreur sur un Access 97, et je me souviens que la mise en place d'une clé primaire sur la table à updater avait résolu le problème. Essaie d'en ajouter une.
Access a des problèmes sur les update et delete avec jointure.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed