Domanda

Ho un foglio di calcolo che sto convertendo in un DB di Access. Ho una colonna di nomi di clienti digitati che voglio sostituire con il numero di cliente appropriato dal nostro sistema di contabilità.

Ho creato una tabella con le informazioni del cliente e una query che mostra quale ID deve essere inserito nei dati di origine. Quello che sto cercando è:

UPDATE tblStarting_Data
SET CustomerID=x
WHERE TEMPCustomer=y

Da dove provengono X e Y da qryIDPerCustomer.

Posso usare un loop? Come faccio a fare riferimento a un'altra query?

È stato utile?

Soluzione

Un'altra possibilità in MS Access (nomi degli oggetti presi in prestito dalla risposta Tomalak):

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

Altri suggerimenti

Penso che un JOIN ti aiuterà:

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

Questo può essere espresso anche come sottoquery correlata (sebbene sia preferibile la sintassi del join):

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

Non è necessario un ciclo, entrambe le istruzioni aggiorneranno tutti i record in tblStarting_Data in un solo passaggio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top