Actualizar campo calculado en tabla

Estoy ejecutando el siguiente código y funciona para calcular el valor que quiero, pero a la hora de actualizar el campo en la tabla no lo hace y genera un error de "Conflicto de escritura"

Quisiera saber como puedo solucionarlo y hacer que el valor quede guardado en el campo que necesito.

Gracias por su colaboración

Option compare database
private sub cuadro_combinado120_afterupdate()
dim dbtemporal as dao.database
dim consulta as dao.recordset 'declaracion de variables
dim strsql as string
dim inserta as string
dim fuente, acumulado, acumulado1, acumulado2, acumulado3, acumulado4, acumulado5, acumulado6 as integer
dim disponible as double
dim rubro, tipomto as string

fuente = me.texto135
rubro = me.texto137
acumulado = 0
set dbtemporal = currentdb() 'activamos la bd
strsql = "select movimiento_presupuesto.tipo_movimiento, movimiento_presupuesto.cod_fteingreso, movimiento_presupuesto.cod_rubro, movimiento_presupuesto.valor_mto from movimiento_presupuesto;" 'escribimos la consulta sql
set consulta = dbtemporal.openrecordset(strsql, dbopendynaset) ' creamos el recordset

if consulta.recordcount > 0 then 'si la consulta tiene registros
do while not consulta.eof '(es decir: mientras no sea final de la tabla...)
acumulado = 0

select case consulta!tipo_movimiento
case 1
if consulta!cod_fteingreso = fuente and consulta!cod_rubro = rubro then
acumulado1 = acumulado + consulta!valor_mto
else
end if
case 2
if consulta!cod_fteingreso = fuente and consulta!cod_rubro = rubro then
acumulado2 = acumulado + consulta!valor_mto
else
end if
case 3
if consulta!cod_fteingreso = fuente and consulta!cod_rubro = rubro then
acumulado3 = acumulado + consulta!valor_mto
else
end if
case 4
if consulta!cod_fteingreso = fuente and consulta!cod_rubro = rubro then
acumulado4 = acumulado + consulta!valor_mto
else
end if
case 5
if consulta!cod_fteingreso = fuente and consulta!cod_rubro = rubro then
acumulado5 = acumulado + consulta!valor_mto
else
end if
case 6
if consulta!cod_fteingreso = fuente and consulta!cod_rubro = rubro then
acumulado6 = acumulado + consulta!valor_mto
else
end if
case else
msgbox "valor disponible no actualizado"
end select
disponible = (acumulado1 + acumulado2 + acumulado5) - (acumulado3 + acumulado4 + acumulado6)
consulta.movenext ' pasamos al siguiente registro
loop ' cerramos el bucle
set dbtemporal = currentdb()
inserta = "update temporal_movimiento_presupuesto set valor_disponible =(" & disponible & ")"
docmd.runsql inserta
else
msgbox " no existen registros en la tabla de presupuesto"
end if
end sub

1 respuesta

Respuesta
1

Oscar: Con solo el código y sin el entorno en el que está, al menos para mí es dificil

Acertar con una respuesta.

Se me ocurre que entre los Campos que quieres actualizar pueda haber alguno "Calculado" y esos campos son de solo lectura, no de escritura.

Si no es así, pones por favor un enlace aquí con tu BD y datos inventados y mro de ayudarte.

Mis saludos >> Jacinto

Osacar: Repasando los temas por cerrar he encontrado éste, que espero valores si vas de acuerdo con la respuesta, o me comentes si nesitas información adicional. Saludos>> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas