Necesito trabajar con datos que esta un subformulario

Ocupo realizar operaciones con los datos de la base de datos y además crear un grafico de dispersión que me permita imprimir el resultado, pero bueno eso es secundario pero si de pasada también me apoyan se los agradeceré.

El problema esta en que tengo que multiplicar los datos de la columna "Coord X UTM" con "Cord Y UTM", el primer registro con el segundo hasta terminar, y al terminar obtener la suma de estas multiplicaciones, y viceversa con "Coord Y UTM" con "Cord X UTM" y obtener también la suma.

Ya tengo el formulario de la captura y el almacenamiento, con el reporte individual, la idea es hacer algo como lo que esta en el siguiente enlace.

De antemano Muchas gracias.

https://drive.google.com/file/d/0B0gqstXOYgVXVS1WYXk3d1p4bUE/view?usp=sharing

1 Respuesta

Respuesta
1

Aquí está un código VBA que hice y me funciona:

Option Compare Database
Option Explicit
Private Sub cmdcalcular_Click()
On Error GoTo ControrErroes ' esto es para evitar que se salga el programa en el bucle "For" al alcanzar el final de la Tabla1
Dim vProducto1 As Double, vProducto2 As Double, vReg As Integer
'Estas variables que siguen es para corroborar en el formulario el total acumulado de los productos de las _
 coordenadas Me![Coord X UTM] y Me![Coord Y UTM] en el formulario "Graficos"
Dim AcumuladoProductoXY As Double, AcumuladoProductoYX As Double
vReg = 1
For vReg = 1 To DCount("*", "Tabla1") - 1
    vProducto1 = 1
    vProducto2 = 1
    ' Estas variables almacenan el primer registro
    vProducto1 = Me![Coord X UTM]
    vProducto2 = Me![Coord Y UTM]
    'Salta al siguiente registro
    DoCmd.GoToRecord acDataForm, "Graficos", acNext
    ' Aqui se multiplican las primeras con las segundas porque estamos en el segundo registro
    vProducto1 = vProducto1 * Me![Coord Y UTM]
    vProducto2 = vProducto2 * Me![Coord X UTM]
    'Salta al anterior registro, para asignarlo a la anterior linea _
     o sea, para que quede de primero
    DoCmd.GoToRecord acDataForm, "Graficos", acPrevious
    Me![ProductoXY] = vProducto1
    Me![ProductoYX] = vProducto2
    'Salta al siguiente registro de nuevo
    DoCmd.GoToRecord acDataForm, "Graficos", acNext
    'Desde aqui se acumulan los valores de los productos
    AcumuladoProductoXY = AcumuladoProductoXY + vProducto1
    Me![txtAcumuladoXY] = AcumuladoProductoXY
    AcumuladoProductoYX = AcumuladoProductoYX + vProducto2
    Me![txtAcumuladoYX] = AcumuladoProductoYX
Next
ControrErroes:
End Sub
   

Gráficos es un formulario.

Tabla1 es la tabla donde están las coordenadas UTM, y sus productos.

Aun estoy probando desarrollar el gráfico, ya lo hice pero no he tenido tiempo de detallarlo y explicártelo...

Esta es el diseño de la tabla:

Este es el formulario en ejecución:

Use un formulario dividido sólo para verlo en tipo Hoja de Datos y Formulario Único a la vez

¡Gracias! Te agradezco el apoyo, voy a probarlo y te confirmo... pero de antemano muchas gracias.

Lo que me faltaba del gráfico, ya te lo tengo:

Debes insertar un control gráfico de los controles de Diseño.

Cuando te salga el asistente para gráficos:

  1. Eliges la tabla donde están almacenadas las coordenadas, la mía se llama Tabla1.
  2. Después eliges los campos: Coord X UTM, Coord Y UTM, los otros campos no son necesarios para el gráfico.
  3. Elige el tipo de gráficos, Gráficos XY (disperso).
  4. Pulsa el botón siguiente.
  5. Pulsa de nuevo el botón siguiente.
  6. El siguiente cuadro coloca en Campos del formulario: Ninguno, y el Campo del gráfico Ninguno.
  7. En la siguiente coloca el título del gráfico. Ejemplo: “Área del Terrero”. Y Finalizar
  8. Dale a vista formulario para que cambie a los datos de la tabla. Al hacerlo parece que no sale el área del terrero, es porque hay que modificar en la hoja Propiedades del control, la ficha Datos, la propiedad Origen del control, borra lo que está y coloca esto:
    SELECT Tabla1.[Coord X UTM], Tabla1.[Coord Y UTM] FROM Tabla1;
    Recuerda cambiar el nombre Tabla1, o consulta por el nombre de la tuya.

Dale a vista formulario para que cambie a los datos de la tabla… Al hacerlo parece que nuevamente no sale el área del terrero. Bueno hay que darle doble clic al control gráfico para que configures que los datos se van a graficar es por columnas, y no por filas. El botón está en la Barra Estándar. Como sigue:

  1. Al darle doble clic al control gráfico te sale un ventana para modificarlo a tu gusto, es muy parecido a la ventana de EXCEL.
  2. Ya de aquí en adelante te puedes defender.
  3. Ya que calculamos las acumulaciones de los productos de las coordenadas, las puedes usar para el cálculo de las hectáreas del terreno: Esta es la fórmula que debes colocar en la propiedad “Origen del Control” de la pestaña “Datos” de un control TEXT:
    =Round((([txtAcumuladoXY]-[txtAcumuladoYX])/2)*0,9996652107/10000,1).
  4. Hasta esta entonces, pienso, según tu captura en pantalla “F_Captura GPS”, que cada área viene filtrada, o sea, aparece en un subformulario, por los campos “Ord Cos”, “Clave”, o un campo tal vez se “Cua”, no sé de qué se trata pero imagino que es Cuadrante. En fin, al ser filtrado, entonces para imprimir sólo sigue es siguiente paso:
  5. Sólo crea un informe en blanco, oye en blanco, copia del formulario Gráficos, el control gráfico que hemos estado usando, y pega el control gráfico en el área de detalle del informe en blanco, arréglalo a tu gusto, guárdalo con un nombre, ejemplo. Áreas.
  6. En el formulario Gráficos, agrega un control de comando Botón. En el evento Clic, agrega este código:
    Private Sub cmdImprmir_Click()
    OpenReport "Áreas", acViewPreview
    End Sub
  7. LISTO, espero te sirva. Porque antes de enviar una ayuda primero la pruebo en caliente, y a mí me funcionada a la perfección.

Este es el resultado en el Formulario:

Y este el informe para Imprimir:

Ah, por cierto los controles etiquetas y los controles TEXT enlazados a datos, o sea, a los campos no salen en la ejecución abajo en el formulario dividido porque los mando a poner en la propiedad Visible como: NO

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas