Campo con dos o más cantidades |
Responder |
Autor | |
amegias
Nuevo Unido: 25/Febrero/2021 Localización: LEGANES Estado: Sin conexión Puntos: 11 |
Opciones de entrada
Gracias(0)
Enviado: 25/Febrero/2021 a las 18:35 |
Buenas tardes, necesito configurar un campo de una tabla Access que me permita introducir más de una cantidad, mostrándome el resultado de su suma o resta, es decir, 100+120, y que ese mismo campo muestre 220.
Gracias de antemano
|
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14734 |
Opciones de entrada
Gracias(0)
|
Hola amegias y bienvenido al foro,
Hasta dónde a mi me consta (o hasta que no venga pitxiku y me corrija) eso no es posible. Es algo que me habría gustado tener ya que lo he visto en otros sistemas como Navision pero que no consegui implementar. Estuve jugando con el evento Antes de actualizar del control pero me salta antes la regla de validación del campo que ese evento. A lo mejor alguien con más imaginación puede iluminarnos. Un saludo
|
|
pitxiku
Colaborador Unido: 27/Septiembre/2017 Localización: En mi casa Estado: Sin conexión Puntos: 1512 |
Opciones de entrada
Gracias(0)
|
Una posibilidad es guardar el cálculo (100+120) en un campo de texto de la tabla, y después usar Eval en una consulta, formulario o informe para resolver el cálculo:
- https://support.microsoft.com/es-es/office/funci%C3%B3n-eval-8c4a1b10-85ba-40db-b0c8-5290da4d4166 No sé si Eval se puede usar en los eventos de macro, donde tal vez se pueda hacer lo que quiere Xavi: ejecutar el cálculo y guardar el resultado: - https://support.microsoft.com/es-es/office/agregar-macros-de-datos-a-un-evento-de-tabla-f77ef125-7786-4c86-8933-7f284873dd8f Otra posibilidad a investigar son los campos calculados, aunque no sé qué podrán hacer: - https://support.microsoft.com/es-es/office/v%C3%ADdeo-combinar-campos-utilizando-el-tipo-de-datos-calculados-2a290bbc-46f6-42ae-8590-6fbc497d1de9 Pero si van a ser cálculos simples, yo usaría una versión de Xavi: un cuadro de texto independiente en un formulario para escribir la expresión, y en su evento Después de Actualizar usar Eval y pasar el resultado a un cuadro de texto donde sí tengas origen de control en un campo de la tabla. |
|
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
Opciones de entrada
Gracias(0)
|
Hola!
Mira a ver así Dim VarEval As Variant If Me.Texto15 = "" Or IsNull(Me.Texto15) Then Exit Sub VarEval = Eval(Replace(Texto15, "=", "")) Me.Texto15 = Me.Texto15 & " = " & VarEval & " " Editado por mounir - 25/Febrero/2021 a las 20:37 |
|
Un Saludo.
|
|
amegias
Nuevo Unido: 25/Febrero/2021 Localización: LEGANES Estado: Sin conexión Puntos: 11 |
Opciones de entrada
Gracias(0)
|
Gracias
|
|
amegias
Nuevo Unido: 25/Febrero/2021 Localización: LEGANES Estado: Sin conexión Puntos: 11 |
Opciones de entrada
Gracias(0)
|
Sintaxis no válida.
Gracias por el intento.
|
|
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
Opciones de entrada
Gracias(0)
|
Hola!
Pues no sé como lo has hecho, porque funciona perfectamente. - Un cuadro de texto >>> Texto15. - Un comando en el evento al hacer click pones el código anterior. |
|
Un Saludo.
|
|
amegias
Nuevo Unido: 25/Febrero/2021 Localización: LEGANES Estado: Sin conexión Puntos: 11 |
Opciones de entrada
Gracias(0)
|
Perdona mi ignorancia, pero no te sigo.
Lo he intentado como campo calculado, introduciendo tu código como función. Tan solo me muevo por las propiedad del campo número de la tabla que tengo. No tengo ni idea que es el comando o el evento. Gracias. |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14734 |
Opciones de entrada
Gracias(0)
|
Hola,
Por tu mensaje intuyo que estás manejando los datos directamente en la tabla. Si es así, varios comentarios: - Por norma general JAMAS se gestionan los datos directamente sobre la tabla - Se utilizan formularios para gestionar datos ya que estos permiten.. + controlar que registros se pueden ver + controlar que campos se pueden editar + añadir controles (un botón de comando) + controlar eventos (pulsar un botón, modificar un valor, etc) En definitiva: en una tabla vete olvidando porque (al 99% seguro) no va a funcionar. Y en un formulario requiere varios controles y algo de imaginación. Un saludo
|
|
amegias
Nuevo Unido: 25/Febrero/2021 Localización: LEGANES Estado: Sin conexión Puntos: 11 |
Opciones de entrada
Gracias(0)
|
Gracias, me pongo con el formulario.
|
|
Juanmasp
Habitual Unido: 21/Abril/2006 Estado: Sin conexión Puntos: 118 |
Opciones de entrada
Gracias(0)
|
Hola, he conseguido hacer el cálculo a nivel de Tabla (Macro de Datos)...... con limitaciones
Creo que es mejor hacerlo a nivel de Formulario porque tenemos mas margen de maniobra, pero dejo esto por si a alguien le interesa, y para demostrar que se puede hacer.
Para conseguirlo, primero se debe almacenar la fórmula en la tabla (de lo contrario no se dispara la acción), por lo tanto el campo debe ser de texto y no numérico, esto se puede "solventar" poniendo dos campos, uno para la fórmula y otro para el resultado. Como lo he hecho: He utilizado -una tabla (tEval para almacenar la fórmula temporalmente), -una Consulta (qEval donde se recoge el resultado) y un Módulo con una function (fEval donde se realiza el cálculo, la he creado por el control de errores) Nota: realmente solo es imprescindible la Consulta, pero entonces, si se debieran hacer cálculos en varias tablas, se debería crear una consulta específica para cada una de ellas. La tabla tEval solo tiene un campo que es sCalculo La consulta qEval es: SELECT fEval([sCalculo]) AS Resultado FROM tEval; La Function es : Function fEval(strCalculo As String) As String On Error GoTo EvalError fEval = Eval(strCalculo) EvalSalir: Exit Function EvalError: fEval = strCalculo Resume EvalSalir End Function Y para la macro de Datos he hecho dos versiones (en el evento Después de actualizar) Nota: Lo he intentado en el evento "Antes del Cambio", pero es mucho mas limitado, y no ha resultado. -Actualizar el mismo campo (debe ser de texto) EstablecerVariableLocal (DatoCalculo;[CampoCalculado]) EstablecerVariableLocal (DatoId;[Id]) Si Nz([DatoCalculado;"")<>"" Entonces Buscar un registro en tEval Editar Registro Establecer Campo ([sCalculo];[DatoCalculo]) Finalizar Editar Registro Buscar un Registro en qEval EstablecerVariableLocal (vResultado;[Resultado]) Si [DatoCalculo]<>[vResultado] Buscar un Registro en [Tabla que se está evaluando] Condición WHERE [Id]=[DatoId] EditarRegistro EstablecerCampo ([CampoCalculado];[vResultado]) Finalizar Editar Registro Finalizar Si Finalizar Si -Actualizar distinto campo (he usado un campo memo para almacenar la fórmula y en el proceso la borro para no guardar datos de mas) EstablecerVariableLocal (DatoCalculo;[CampoCalculado]) EstablecerVariableLocal (DatoId;[Id]) Si Nz([DatoCalculado;"")<>"" Entonces Buscar un registro en tEval Editar Registro Establecer Campo ([sCalculo];[DatoCalculo]) Finalizar Editar Registro Buscar un Registro en qEval EstablecerVariableLocal (vResultado;[Resultado]) Si [DatoCalculo]<>[vResultado] Buscar un Registro en [Tabla que se está evaluando] Condición WHERE [Id]=[DatoId] EditarRegistro EstablecerCampo ([ValorCalculado];[vResultado]) EstablecerCampo ([CampoCalculado];Nulo) Finalizar Editar Registro Finalizar Si Finalizar Si Creo que se entiende bastante bien, básicamente lo que hace es guardar la fórmula en la tabla intermedia, abrir la consulta con el resultado y modificar el valor original por el calculado (los If están para evitar un bucle de llamada al volver a modificar el registro en la tabla) Disculpas por la parrafada Saludos. Editado por Juanmasp - 01/Marzo/2021 a las 15:58 |
|
amegias
Nuevo Unido: 25/Febrero/2021 Localización: LEGANES Estado: Sin conexión Puntos: 11 |
Opciones de entrada
Gracias(0)
|
Gracias, lo intento.
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |