Pasar datos de un Textbox a Campo En La Tabla

Bendiciónes y que la estén pasando muy bien, verán vengo a pedir su valiosísima ayuda por que ya me comí el coco y no logro hacer lo que deseo, independientemente si es poco ortodoxo o es correcto, necesito que el resultado de un textbox en un formulario se aloje en un campo de una tabla, no necesito ni requiero hacer consulta ni nada por el estilo, solo quiero trasladar el resultado de lo que calcule en el textbox del formulario a campo en la tabla.

2 respuestas

Respuesta
1

Dos vías para solucionar el problema:

A.- La macro 'establecer valor'
(Se supone que el campo que recibe el dato 'pertenece' al origen de datos del formulario)

B.- Una SQL de actualización
(Actualiza el dato en una tabla externa en la que el registro ya existe o lo crea con ese valor)

En cualquiera de los casos lo que se ha de guardar es 'el origen de datos del campo calculado' NUNCA el valor calculado (que para Access no existe como dato).

Si en el campo hay el valor '30' (que sale del producto de cantidad por precio), hay que guardar ([Cantidad] * [Precio])  que 'son' los datos reales y no (30) que es un dato fantasma.

Agradezco sobremanera la sugerencia, intentaré hacer la macro.

Sin embargo ¿la macro actúa sola sin necesidad de un botón?, eso me serviría (que actúe sola).

Las macros actúan cuando se les indique (lo del botón es una opción mas).

Solo has de preocuparte de que el dato exista (que los datos del calculo sean accesibles) y se puede poner (la macro) en el evento 'después de actualizar' del segundo dato (para asegurar que existan los dos).

Te agradezco tu dedicación y tu tiempo y perdón por el fastidio, pero fíjate que no logre hacerlo correr con tu recomendación (debo de estarlo haciendo mal), verás lo que necesito y es que es volviendo con las fechas, necesito colocar la siguiente expresión que incluso me ayudaste a rematar:

Nz(DifFecha("m";[Fecha_Pago];DMáx("Fecha_Pago";"Cobros__2";"Fecha_Pago <#" & [Fecha_Pago] & "#AND Numero_Lote = '" & [numero_lote] & "'")))))*-1

Ahora necesito que se aplique directamente en la tabla, pero no me la acepta hacer en campo calculado y es que necesito que se ejecute en una tabla o en un formulario que incruste el resultado en la tabla para poder así hacer posteriormente un cálculo de saldos que si lo hago a travéz del uso de la consulta no me resulta, caso contrario que si lo hago con los campos de la tabla sí me lo hace.*******Pero esto es solo para contextualizar*******.

Volviendo al tema principal, hice un textbox y le incluí ésta expresión que te menciono (la de diffecha), y me lo calcula súper (en el formulario) pero como dependo de que en la tabla aparezca éste resultado para poder hacer el resto de cálculos incluyendo cálculos al final que tiene que ver con saldos como ya te indicaba, requiero que éste resultado se aloje en el campo [MesesRetraso] de la tabla, he intentado con la siguiente forma:

En el evento "Al Activar Registro" del formulario he ido al generador de expresiones y luego he hecho ésto en código Vba:

Private Sub Form_Current()

Me.MesesRetraso = TxtMeses_Retraso

End Sub

Peeeero si bien no me da error ni me deja vacío el campo, el valor único que me aloja es "0" jajajajajajajajajajaja, lo se lo se, es todo un caso pero lo único que requiero es que el valor de TxtMeses_Retraso se aloje en MesesRetraso, Gracias por tu tieimpo y tu ayuda.

La expresión que estas utilizando no es exactamente la que aconseje (la aconsejada es mas simple y directa), en ella la función NZ no se aplica globalmente ni se necesita invertir el signo del resultado (pero la utilizada: también funciona).

No vas a lograr que ese dato se guarde en el evento 'al cambiar de registro', porque en ese evento aun no se dispone de los datos indispensables para el calculo (calculo que si será correcto tras la carga del registro).

Cuando se cambia de registro (evento CURRENT) primero se obtienen los datos del origen de datos del formulario (los que provengan de la tabla/consulta) y finalizado este paso se procesan los cuadros de texto independientes (sobre todo aquellos que utilicen cálculos).

Has obtenido el resultado en el cuadro de texto y es fiel, si se desea guardar lo adecuado es cuando se finalice de manipular el registro (el evento después de actualizar del formulario) en el figurara el dato inicial o cualquier modificación si se alteran los datos iniciales (por ejemplo: corregir una fecha) y así se mantendrá la fidelidad.

Para pode utilizar la Macro (Establecer Valor) el cuadro de texto (Me. MesesRetraso) ha de figurar en el formulario (puede estar oculto y minimizado)

La macro le asignara el valor de/en Me. TxMeses_Retraso (que es el valor calculado) al cuadro de texto Me. MesesRetraso (que pertenece al origen de datos del formulario: La Tabla).

En la macro (que ya 'sabe' que esta en el formulario xxxx porque es desde donde se la llama) no se utiliza 'Me', solo los nombres de los objetos.

Si necesitas alguna aclaración mas por aquí estaré (o estaremos).

Creo que si vas a utilizar ese entorno y VBA, todo será más sencillo si en el evento 'Antes de Actualizar' del formulario (paso previo a guardarlo) igualas el campo oculto (Me. MesesRetraso) al campo calculado (Me. TxMeses_Retraso), una simple línea en lugar de la macro:

Private Sub Form_BeforeUpdate(Cancel As Integer)
Me.MesesRetraso = Me.TxMeses_Retraso
End Sub

En éste momento te comento que ando fuera, pero me dí un tiempito para leer tu amable respuesta, en cuanto logre estar frente al equipo lo intentaré, de paso te adelanto que ya intenté esa solución en vba pero no la pude hacer correr, la revisaré de nuevo (puede que algo esté dejando en el camino), bendiciones y gracias.

Ten presente que cuando se trata de obtener el dato que hay en un cuadro de texto calculado, no vale el valor que muestra como resultado (ese dato es virtual), hay que utilizar su origen de datos (la expresión que da lugar a hacer el calculo)

Respuesta
1

¿Y cómo es la estructura de la tabla?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas