Access - Como hacer para que un campo calculado en un formulario, transfiera su valor a otro campo...

 
Vista:
Imágen de perfil de Raul
Val: 13
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Como hacer para que un campo calculado en un formulario, transfiera su valor a otro campo...

Publicado por Raul (4 intervenciones) el 06/07/2020 23:09:35
Programo en Acces... pero no puedo conseguir que el resultado de un campo de calculo de un formulario, se transfiera a otro campo, que este si queda guardado en una tabla... Gracias por su ayuda... sdos... bendiciones... Raul
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

Como hacer para que un campo calculado en un formulario, transfiera su valor a otro campo...

Publicado por Anonimo (3322 intervenciones) el 07/07/2020 00:15:50
Un calculo es un origen de datos
El resultado de un calculo NO (solo es un valor puntual)

Asigna el origen y no el resultado (para guardar ese valor puntual)

1
Me.campo22 = Me.Campo11 * Me.Campo33
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Raul
Val: 13
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Como hacer para que un campo calculado en un formulario, transfiera su valor a otro campo...

Publicado por Raul (4 intervenciones) el 07/07/2020 01:09:51
En Principio muy agradecido, por tu tiempo y explicacion...

Por lo que entendí, tengo que hacer el calculo directamente en el campo donde necesito el resultado que se carga en la tabla...

El campo es un campo de texto (IMPGTO)...
El formato: $ #.##0,00;$-#.##0,00
los campos a calcular son los siguientes:
texto: KMR (kilometros/horas/hectareas)
Combinado (toma el precio desde una consulta, según la zona) (PCIO2)
texto: OCP (comision)

En un campo de calculo: seria =KMR*PCIO2-OCP

Según lo que yo entiendo que me dice usted:

en el campo de texto (IMPGTO) (origen del control: Me.IMPGTO=Me.KMR*Me.PCIO2-Me.OCP

pero no me funciona, me dice: #nombre?... probé... como valor predeterminado... me da el resultado 0.00 (que es lo q esta cargado en tabla)

ademas es probado de distintas formas... (con campos combinados/etc/etc.)

Agradezco mucho su disponibilidad...
Muy agradecido...
Sdos...
Bendiciones...
Raul
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

Como hacer para que un campo calculado en un formulario, transfiera su valor a otro campo...

Publicado por Anonimo (3322 intervenciones) el 07/07/2020 09:17:57
Por partes:

Para poder efectuar un calculo, todos sus operandos han de estar accesibles en el entorno en el que se calcula.

En principio parece que si pero … un formulario es un elemento 'vivo' y puede (por gestión interna) calcular tantas veces como sea preciso (y de forma trasparente).

Lo que se indica es que ese valor se ha de ASIGNAR de forma directa (no como origen de datos de su destino), esto es:

Cuando se pueda tener completa seguridad de que todos los elementos tienen los valores correctos: se utilizan para el calculo y su resultado se asigna al destino (el campo de la tabla)

La forma de asignarlo puede ser mediante una macro (establecer valor) o bien por asignación directa en VBA (lo que se utilizo como ejemplo) y normalmente cuando se produzca un evento y se pueda verificar que los orígenes tiene datos validos (por ejemplo tras introducir el operador los datos en el formulario)

Si se le impone un calculo en el origen de datos del objeto, el campo deja de ser 'manipulable', mostrara el valor calculado 'por ultima vez' no el valor puntual calculado en el momento a conservar.

No entiendo lo de asignar el calculo como 'valor predeterminado', entre otras cosas porque:
Esa 'asignación por defecto' se hace siempre cuando se inicia el nuevo registro ¿están disponibles el resto de datos para el calculo?... si no existen 'aun' mal calculo se puede lograr.

Si a un objeto le asignamos un calculo, el objeto JAMAS (y por diseño) admitirá otra cosa que el recalculo de los datos de su origen.

Si el origen es un calculo, no podrá ser un campo de una tabla
(un origen: el campo de la tabla o bien el origen: un calculo, los dos a la vez NUNCA).

En el formulario (y como valor por defecto -que no es lo mismo que origen-) se puede poner un calculo, pero .. los datos han de existir en el momento del calculo (cuando se esta creando ese registro y antes de poder manipular el formulario) circunstancias que de darse posiblemente darán lugar a datos innecesariamente guardados.
(si se pueden obtener en tiempo de ejecución normalmente no se necesita guardarlos)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Raul
Val: 13
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Como hacer para que un campo calculado en un formulario, transfiera su valor a otro campo...

Publicado por Raul (4 intervenciones) el 08/07/2020 05:12:25
Solucionado.... desde ya muy agradecido... me sirvió de mucho su explicación... ahora explico como lo hice, para que sirva, para otro usuario...

Como dije anteriormente... tenia que cargar un total a un campo de tabla desde un formulario...

El campo es un campo de texto (IMPGTO)...
El formato: $ #.##0,00;$-#.##0,00 (o Moneda)
los campos a calcular son los siguientes:
texto: KMR (kilometros/horas/hectareas)
Combinado (toma el precio desde una consulta, según la zona) (PCIO2)
texto: OCP (comision)

En un campo de calculo: seria =KMR*PCIO2-OCP

Lo que hice:

Fui al campo IMPGTO y en "Origen del control" copie la formula =KMR*PCIO2-OCP y para identificar el campo le cambie el nombre "txtimpgto"

En el campo KMR cree un Evento en "Después de Actualizar" [Procedimiento de evento] y en VBA escribir o armar las siguiente lineas de programación (Clic en botón ...):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Option Compare Database
 
Private Sub kmr_AfterUpdate()
    Call CampoCalculado
End Sub
 
Private Sub PCIO2_AfterUpdate()
    Call CampoCalculado
End Sub
 
Private Sub OCP_AfterUpdate()
    Call CampoCalculado
End Sub
 
Public Sub CampoCalculado()
Dim vimpgto As Double
    vimpgto = Nz(Me.txtimpgto.Value, 0)
    Me.IMPGTO.Value = vimpgto
End Sub


y eso es todo.... funciona perfecto... en la tabla en el campo IMPGTO aparece el total calculado en el formulario...

Espero que le sirva algún otro usuario ... perdón por mi forma de expresión, no se si es la correcta (soy programador aficionado)...

y gracias nuevamente...

Sdos...

Bendiciones...

Raul
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

Como hacer para que un campo calculado en un formulario, transfiera su valor a otro campo...

Publicado por Anonimo (3322 intervenciones) el 08/07/2020 16:06:42
Como os complicais ….

Esto:
1
2
3
4
5
Public Sub CampoCalculado()
Dim vimpgto As Double
    vimpgto = Nz(Me.txtimpgto.Value, 0)
    Me.IMPGTO.Value = vimpgto
End Sub

Se puede hacer así:

1
2
3
4
5
6
7
8
9
Public Sub CampoCalculado()
Me.IMPGTO = KMR*PCIO2-OCP
End Sub
 
'lo mas optimo seria esto:
 
Public Sub CampoCalculado()
Me.IMPGTO = Me.KMR * Me.PCIO2 - Me.OCP
End Sub


El me (supongo que lo sabes, pues lo utilizas al menos una vez) sirve para que Access busque los objetos en el formulario, tarda menos que si tiene que buscarlos en toda la base de datos), la excepción … que no sea un objeto del formulario (por ejemplo una variable) en ese caso el 'Me' le sobraría.

Aclarando:
Se supone que el objeto 'IMPGTO' tiene su origen de datos en una tabla (es un campo de su registros)

Al adjudicarle un valor (real) tomara ese valor sin problema y sin necesidad de utilizar una variable como intermediaria.

Lo que no puede utilizar (es simple presentación estética) es el resultado que se presenta en un objeto calculado, se le ha de adjudicar el/su origen de datos, NO el resultado (debe de pensar que le estamos llamado tonto por no saber calcular y se molesta)..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Raul
Val: 13
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Como hacer para que un campo calculado en un formulario, transfiera su valor a otro campo...

Publicado por Raul (4 intervenciones) el 08/07/2020 21:38:07
Como siempre muy clara su explicación... solo agregue una variable para que cuando sea 0 no me de error... acepto todas sus recomendaciones y desde ya muy agradecido... Sdos... Bendiciones... Raul
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

Como hacer para que un campo calculado en un formulario, transfiera su valor a otro campo...

Publicado por Anonimo (3322 intervenciones) el 08/07/2020 22:09:35
Si el problema es que algún calculo puede dar error porque aun faltan valores (el resultado seria un NULL), la función Nz se le puede aplicar también:

1
2
3
Public Sub CampoCalculado()
Me.IMPGTO = Nz(KMR*PCIO2-OCP, 0)
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar