¿Utilizar INSERT con la cláusula VALUE y una subconsulta SELECT en SQL, Access?

Como puedo hacer para que esta sentencia en una tabla con dos campos: INSERT INTO Table1 VALUES (5000, "Empresa1") ¿Se pueda tomar el valor 5000 desde otro campo de otra tabla? ¿Con SELECT?

Respuesta
1

Sí puedes, pero no son un SELECT, sino usando la función DLookUp(), por ejemplo, si el dato 5000 lo tienes en el campo "Salario" de la tabla Trabajadores:

INSERT INTO Table1 VALUES (DLookUp("Salario","Trabajadores"), "Empresa1")

Y si quieres limitar la búsqueda a un registro concreto, por ejemplo el salario del "Trabajador" Pepe:

INSERT INTO Table1 VALUES (DLookUp("Salario","Trabajadores", "Trabajador='Pepe'"), "Empresa1")

Todo esto en una consulta de Access.

Un saludo.


Muy útil tu respuesta, además con valor agregado, gracias. ¿Si quisiera que el criterio no fuese el trabajador (Pépe) sino dos criterios, fecha y código de producto, para que me devuelva el código de producto con la fecha más reciente?

Fácil, le pones los dos criterios al DLookup:

DLookUp("Salario","Trabajadores", "Fecha=#11/01/2017# AND CodProd=2500")

Fíjate que las fechas van entre almohadillas (#), los textos entre comillas simples (') y los números directamente

Hola, de nuevo por aquí, con #11/01/2017# no me devolverá la fecha más reciente, ¿cómo puedo escribir la fecha para que me devuelva la máxima?

Disculpa, no me fijé en que querías la fecha más reciente, y lo que te puse era solo un ejemplo para que vieras cómo sería el uso de dos (o más) criterios.

Para la fecha máxima registrada, puedes usar la función DMax(), que tiene una sintaxis similar a DLookup()

Podría ser algo así:

INSERT INTO Tabla1 ( Precio, Empresa )
VALUES (DLookUp("Precio","TPrecios","CodProd=20 AND Fecha=#" & DMax("Fecha","TPrecios","CodProd=20") & "#"), "Empresa1");

Tendrás que poner los nombres de los campos en los que vas a insertar para que no te de error

¡Gracias! 

¿Puedo seguir preguntándote?

Claro que puedes, pero si no tiene que ver con el tema original de esta pregunta, hazlo en una pregunta nueva.

O puedes hacerlo en el foro que administro: http://nksvaccessolutions.com/Foro/ 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas