Question

J'ai converti une feuille de calcul en une base de données Access. J'ai une colonne de noms de clients dactylographiés que je souhaite remplacer par le numéro de client approprié de notre système de comptabilité.

J'ai créé une table avec les informations client et une requête indiquant quel ID doit être inséré dans les données source. Ce que je cherche, c'est:

UPDATE tblStarting_Data
SET CustomerID=x
WHERE TEMPCustomer=y

D'où proviennent X et Y de qryIDPerCustomer.

Puis-je utiliser une boucle? Comment référencer une autre requête?

Était-ce utile?

La solution

Autre possibilité dans MS Access (noms d’objets empruntés à Tomalak answer):

UPDATE tblStarting_Data, qryIDPerCustomer
SET tblStarting_Data.CustomerID=qryIDPerCustomer.CustomerID
WHERE tblStarting_Data.TEMPCustomer=qryIDPerCustomer.CustomerName

Autres conseils

Je pense qu'un JOIN vous aidera:

UPDATE 
  tblStarting_Data AS sd 
  INNER JOIN qryIDPerCustomer AS qc ON sd.TEMPCustomer = qc.CustomerName
SET 
  sd.CustomerID = qc.CustomerID;

Ceci peut également être exprimé comme une sous-requête corrélée (bien que la syntaxe de la jointure soit préférable):

UPDATE 
  tblStarting_Data
SET 
  CustomerID = (
    SELECT  CustomerID 
    FROM    qryIDPerCustomer
    WHERE   CustomerName = tblStarting_Data.TEMPCustomer
  )

Plus besoin de boucle, les deux instructions mettront à jour tous les enregistrements de tblStarting_Data en une seule étape.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top