Actualización condicional de datos en un bd access

Tengo una bd de access 2007, entre otras tablas se encuentra la de tarifas, con los campos, entre otros, articulo e importe.
Por otro lado tengo la tarifa actualizada en excel, cuyo valor coincidente con la bd es el articulo.
¿Cómo puedo actualizar los precios de la bd con los precios que se encuentre en la excel y cuyo articulo sea igual en ambas?
Obs. En la excel no están todos los artículos de que tengo en la bd, ya que son varias excel y algunos artículos ya no existen en 2009. Pero necesito actualizar los precios de los coincidentes.
Gracias de antemano. (Son 9500 lineas y a mano me puedo volver loco).

2 respuestas

Respuesta
2
Lo primero que se tendría que hacer es vincular tu archivo de excel a tu base de datos Access.
Luego puedes ejecutar consultas como si fuese otra tabla (TExcel), y tu consulta seri algo así:
UPDATE TARIFAS INNER JOIN TExcel ON TARIFAS.ARTICULO = TExcel.Articulo Tarifas.importe = TExcel.importe;
Pufff, das por echo que se de que hablas, voy por partes.
Para hacer unas pruebas he creado una tabla excel con dos registros de dos campos cada uno articulo y precio.
Abro la bd de access y vinculo como importar datos la tabla excel a la bd.
"Luego puedes ejecutar consultas como si fuese otra tabla (TExcel), y tu consulta seri algo así:
UPDATE TARIFAS INNER JOIN TExcel ON TARIFAS.ARTICULO = TExcel.Articulo Tarifas.importe = TExcel.importe;" ¿desde donde? podrías ser un poco mas preciso, te doy mas datos para ayudar.
La bd de access tiene una tabla que se llama LINEAS TARIFAS
Dicha tabla tiene un campo que se llama ARTICULO (textox13) y otro que se llama IMPORTE (moneda)
Dos registros de esa tabla serian ARTICULO 10017 e IMPORTE 0,73 y otro ARTICULO 10018 IMPORTE 10,8 (Quiero probar los dos casos, donde cambia y donde no cambia)
La excel se llama PRUEBA.XLSX solo tiene una hoja
a,1 = 10017 b,1 = 1,00
a,2 = 10047 b,2 = 10,8
Me considero profano en este tema, por lo que ruego me detalles como hacerlo o me redirecciones a algún manual para torpes como yo.
Un saludo y gracias.
Rectificación:
La excel se llama PRUEBA.XLSX solo tiene una hoja
a,1 = 10017 b,1 = 1,00 
a,2 = 10018 b,2 = 10,8
He probado hacerlo así:
UPDATE [Lineas Tarifas] INNER JOIN [Hoja1] ON [Lineas Tarifas]![articulo]  = [Hoja1]![F1]  [Lineas Tarifas]![importe]  = [Hoja1]![F2] ;
Error de sintaxis (falta operador) se sitúa donde están la negrita
También he probado
UPDATE Lineas Tarifas
SET [Lineas Tarifas]![importe]  = [Hoja1]![F2]
WHERE [Lineas Tarifas]![articulo]  = [Hoja1]![F1];
Me pide el valor de hoja1! F2
¿Qué hago mal?
Al final me diste el empujón para solucionar el tema.
Lo he realizado de la siguiente manera:
En lugar de vincular la excel a la bd, lo que he echo ha sido importar los datos de la excel a una tabla dentro de la bd que le he llamado Hoja1, que cuando termine con la actualización podre eliminar.
Seguidamente le he enviado la siguiente consulta:
UPDATE [Lineas Tarifas] INNER JOIN Hoja1
ON [Lineas Tarifas].Articulo = Hoja1.articulo
SET Importe=Hoja1.precio;

Solucionado, he actualizado todos los precios.
Gracias.
Respuesta
1
Lo que puedes hacer es vincular en la BD de access, el archivo de excel, así este quedara como una tabla más en tu base de datos, luego creas una consulta de actualización que tome el valor de la tabla de excel y lo ponga en la tabla de access.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas