Access - Ayuda con Update desde un select

 
Vista:
sin imagen de perfil

Ayuda con Update desde un select

Publicado por Alekx (1 intervención) el 01/04/2014 01:55:23
Hola Buenas Tardes.

Quisiera ver si me pudieran ayudar con una consulta, quisiera actualizar una tabla de access que se Llama inventarioinicial que tiene de campos id_med, medicamento, existencia y Compras.
Esta tabla ya tiene informacion excepto el dato de compras ke es el que quiero actualizar con esta select :
SELECT Sum(CM.Cantidad) AS Compras
FROM FactMedicamentos FM, CompraMed CM
where FM.Compra = CM.Compra_med
and FM.fecha between #2014/02/01# and #2014/02/28#
GROUP BY CM.id_Med

El campo que los unira este select con la tabla de inventarioinicial es el campo de id_med

Espero me hayan entendido y me ayuden.

Salu 2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Ayuda con Update desde un select

Publicado por Neckkito (1157 intervenciones) el 01/04/2014 22:55:31
Hola!

Lo podrías hacer de la siguiente manera:

1.- En tu SELECT debes añadir id_med, de manera que la primera línea te quede

SELECT CM.id_med, Sum(CM.Cantidad) AS Compras

Guardas esa SQL como un objeto consulta. Supongamos que la llamas C1.

Insertas un módulo estándar (ALT+F11 te abrirá el VBE -> Menú Insertar -> Módulo). Bajo la línea o líneas "Option" escribes este código (si utilizas Access 2003 deberás registrar la librería "Microsoft DAO 3.6 Object Library"):

...
Public Sub rellenoCompras()
Dim miSql As String
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("C1")
With rst
.MoveFirst
Do Until .EOF
miSql = "UPDATE inventarioinicial SET compras="
miSql = miSql & .Fields(1).Value & " WHERE inventarioinicial.id_med=" & .Fields(0).Value
CurrentDb.Execute miSql
miSql = ""
.MoveNext
Loop
End With
MsgBox "Hecho"
rst.close
Set rst=nothing
End Sub
...

Con el cursor dentro del bloque de código pulsas F5 y te debería rellenar los datos. Evidentemente te recomiendo que hagas la prueba en una copia de tu BD, por si las moscas.

Lógicamente, si tienes un formulario podrías añadir un botón de comando y en su evento "Al hacer clic" asignarle un código de llamada al procedimiento del módulo. Algo así como:

...
Private Sub comando_click()
Call rellenoCompras
End sub
...

A ver si te funciona.

Saludos,

http://neckkito.siliconproject.com.ar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar