Access. Calcular y actualizar precio medio.

Tengo una tabla (Estudio_Mercado) con el precio m2 de inmuebles. Se especifica, entre otros, el Barrio, Población, Estado, Ascensor (si/no) y el precio m2 del inmueble.

Hay un campo en cada registro, que indica el PRECIO MEDIO M2 para el Barrio/Población/Estado/Ascensor. Que hay que calcularlo. Hago una consulta que agrupando los conceptos descritos (Barrio/Población/Estado/Ascensor), procede con el cálculo del precio medio m2. Pero luego no consigo pasar ese dato a cada uno de los registros que cumplan los criterios descritos.

Respuesta
1

Es de suponer que los datos los metes a través de un formulario. Vamos a suponer que la consulta( aunque yo no la usaría, pero...) se llama CalculoPrecio, donde tienes esos campos que citas y el campo PrecioMedio. En vista diseño del formulario selecciona el control PrecioMedio, y en sus propiedades- Eventos- Al recibir el enfoque crea un procedimiento de evento y entre Private Sub.... y End sub pon

Preciomedio=Dlookup("preciomedio","CalculoPrecio","Barrio='" & me.barrio & "' and Poblacion='" & me.poblacion & "' and Estado='" & me.estado & "' and ascensor=" & me.ascensor & "")

Me explico. Cuando en el formulario escribas( o elijas) un barrio, en población escribas una( o elijas), en estado escribas uno( o elijas) y en ascensor marques o no la casilla, cuando pongas el cursor en el control PrecioMedio( aunque no sería necesario que se llamara igual), te buscará en la consulta, aquel registro que cumpla con esos criterios que le has puesto.

1 respuesta más de otro experto

Respuesta
1

Espero haber entendido, lo hago con 1 tabla 1 consulta de agrupación (es necesaria sino se hace por SQL) así digan que no, un formulario y algo de código o "Enciclopedia Británica" como dicen para recorrer la consulta y la tabla mediante DAO..

TABLA

CONSULTA

FORMULARIO

Hago clic en el botón "Actualizar Promedio M2" y obtengo:

Ahora hago clic en el botón "Ver tabla" y obtengo:

Observe la columna "Precio_medio_m2".

CÓDIGO DE LOS BOTONES

Botón Retirar Promedio:

Private Sub btnRetirar_Click()
  CurrentDb.Execute "UPDATE EstudioMercadeo SET EstudioMercadeo.Precio_medio_m2 = 0;"
  If Err.Number = 0 Then
     MsgBox "Promedio retirado OK", vbInformation, "Actualizando"
  End If
End Sub

Botón Actualizar Promedio M2:

Private Sub btnPromediar_Click()
 On Error GoTo hay_error
  Dim db As DAO.Database
  Dim rs1 As DAO.Recordset
  Dim rs2 As DAO.Recordset
  Set db = CurrentDb
  Set rs1 = db.OpenRecordset("qryPrecioMedio")
  Do Until rs1.EOF
     Set rs2 = db.OpenRecordset("EstudioMercadeo")
     Do Until rs2.EOF
       If rs2!Barrio = rs1!Barrio And rs2!Poblacion = rs1!Poblacion And rs2!Estado = rs1!Estado And rs2!Ascensor = rs1!Ascensor Then
         rs2.Edit
         rs2!Precio_medio_m2 = rs1!P_MEDIO
         rs2.Update
       End If
      rs2.MoveNext
     Loop
    rs1.MoveNext
  Loop
  rs1.Close
  rs2.Close
  db.Close
  Set rs1 = Nothing
  Set rs2 = Nothing
  Set db = Nothing
  If Err.Number = 0 Then
    MsgBox "Promedio actualizado satisfactoriamente", vbInformation, "Actualizando"
  End If
hay_error_exit:
  Exit Sub
hay_error:
     MsgBox "Ocurrió el error " & Err.Number & " " & Err.Description, vbCritical, "Error..."
     Resume hay_error_exit
End Sub

Botón Retirar Ver Tabla:

Private Sub btnVerTabla_Click()
   DoCmd.OpenTable "EstudioMercadeo", , acReadOnly
End Sub

Bueno esta es una forma de hacerlo. Si quiere el ejemplo puede solicitarlo a [email protected], favor anotar en el asunto la consulta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas