"Operation must use an updatable query".

"Operation must use an updatable query". - SQL/NoSQL - Programmation

Marsh Posté le 27-05-2008 à 17:20:30    

Bonjour à tous,
 
J'ai un petit soucis avec Access aujourd'hui. Mes données sont sous Oracle,  
et sont donc liées à Access.  J'ai 2 tables : CLIENT(id_client, nom_client, id_type_client)  
et TYPE_CLIENT(id_type_client, libelle_type_client). Sous Access, j'ai un  
formulaire avec 2 listes déroulantes : Clients et Types Clients qui sont  
chaqune remplie avec le contenue de ces tables.  
J'aimerai que lorsque je selectionne un client dans la premiere liste, et un  
de client dans la seconde puis que je clique sur ENREGISTRER, l'id_type_client
du CLIENT se mette ç jour avec le nouveau.
 
Voila ce que j'ai fait :
 

Code :
  1. Dim SQL As String
  2. SQL = "UPDATE CLIENT " & _
  3. "SET CLIENT.ID_TYPE_CLIENT = ( " & _
  4. "SELECT DISTINCT ID_TYPE_CLIENT FROM TYPE_CLIENT " & _
  5. "WHERE TYPE_CLIENT.NOM_TYPE_CLIENT = '" & liste_type_client.Value & "') " & _
  6. "WHERE CLIENT.NOM_CLIENT = '" & liste_client.Value & "'"
  7. DoCmd.RunSQL SQL


 
qui correspond à :
 

Code :
  1. UPDATE CLIENT SET CLIENT.ID_TYPE_CLIENT = (SELECT ID_TYPE_CLIENT FROM TYPE_CLIENT WHERE TYPE_CLIENT.NOM_TYPE_CLIENT = 'Charter') WHERE CLIENT.NOM_CLIENT = 'AAF';


 
J'ai essayé cette requête sous Oracle avec SQL*PLUS, elle fonctionne très bien,
malheuresement je ne comprends pas pourquoi elle ne fonctionne pas sous Access,
j'obtiens le message suivant : "Operation must use an updatable query".
 
Merci d'avance à ceux qui pourront m'aider, bonne journée.

Reply

Marsh Posté le 27-05-2008 à 17:20:30   

Reply

Marsh Posté le 27-05-2008 à 17:42:44    

Il manque le point virgule à la fin de la dernière ligne :

"WHERE CLIENT.NOM_CLIENT = '" & liste_client.Value & "';"

Mais ce n'est peut-être pas important.
 
Le problème vient peut-être de la sous-requête. La syntaxe du SQL pour Access est un peu différente de la syntaxe du SQL pour Oracle. Ou bien le problème vient peut-être du lien vers la table. Si ce n'est pas une table Access ordinaire, mais une table Oracle liée à une table Access par le système des "tables attachées" via ODBC, alors ce serait peut-être le driver ODBC qui n'accepterait pas cette syntaxe un peu complexe.

Reply

Marsh Posté le 27-05-2008 à 18:50:28    

Merci pour ta réponse.
Ce n'est pas en effet un problème de ";"
 
Je pense comme toi que c'est Access qui n'accepte pas cette syntaxe.
 
Avez-vous une idée d'une requête qui pourrait fonctionner à la place de celle-ci car je n'y arrive pas ?

Reply

Sujets relatifs:

Leave a Replay

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