Consulta de actualización desde una consulta de búsqueda
-
05-07-2019 - |
Pregunta
Tengo una hoja de cálculo que estoy convirtiendo en una base de datos de Access. Tengo una columna con los nombres de clientes escritos que deseo reemplazar con el número de cliente apropiado de nuestro sistema de contabilidad.
He creado una tabla con la información del cliente y una consulta que muestra qué ID debe insertarse en los datos de origen. Lo que estoy buscando es:
UPDATE tblStarting_Data
SET CustomerID=x
WHERE TEMPCustomer=y
Donde X e Y provienen de qryIDPerCustomer.
¿Puedo usar un bucle? ¿Cómo puedo hacer referencia a otra consulta?
Solución
Otra posibilidad en MS Access (nombres de objetos tomados de la respuesta de Tomalak):
UPDATE tblStarting_Data, qryIDPerCustomer
SET tblStarting_Data.CustomerID=qryIDPerCustomer.CustomerID
WHERE tblStarting_Data.TEMPCustomer=qryIDPerCustomer.CustomerName
Otros consejos
Creo que una ÚNETE te ayudará:
UPDATE
tblStarting_Data AS sd
INNER JOIN qryIDPerCustomer AS qc ON sd.TEMPCustomer = qc.CustomerName
SET
sd.CustomerID = qc.CustomerID;
Esto también se puede expresar como una subconsulta correlacionada (aunque es preferible la sintaxis de combinación):
UPDATE
tblStarting_Data
SET
CustomerID = (
SELECT CustomerID
FROM qryIDPerCustomer
WHERE CustomerName = tblStarting_Data.TEMPCustomer
)
No es necesario un bucle, ambas declaraciones actualizarán todos los registros en tblStarting_Data
en un solo paso.