No puedo eliminar un registro del Recordset

Tengo un problema con el seteo del recordset, puedo recorre los registros del recordset, pero al momento de querer eliminar un registro me tira un error, dice que el recordset es de solo lectura, lo eh escrito de muchas formas y me tira el mismo error, ejemplo:

dim mydb as database
dim myrecordset_h as recordset
dim myrecordset_nh as recordset
dim myrecordset_reg as recordset
dim strsql_h as string
dim strsql_nh as string
dim strsql_reg as string
dim actualizado as boolean
dim coincidencia as boolean
actualizado = false
coincidencia = false

set mydb = currentdb
strsql_reg = "select registroact.regi_fecha, registroact.regi_empresa, registroact.regi_check_nohab from registroact "
strsql_reg = strsql_reg & "where regi_check_nohab = 0 "
set myrecordset_reg = mydb.openrecordset(strsql_reg, dbopendynaset)
myrecordset_reg.movefirst
do while not myrecordset_reg.eof
strsql_h = "select electronica.elec_empresa, electronica.elec_empresa1, electronica.elec_usuario, electronica.elec_dni, "
strsql_h = strsql_h & "electronica.elec_tipo_objeto, electronica.elec_marca, electronica.elec_modelo, electronica.elec_serie, "
strsql_h = strsql_h & "electronica.elec_nro_imei, electronica.elec_nro_sim, electronica.elec_nro_linea, electronica.elec_nro_id, "
strsql_h = strsql_h & "electronica.elec_cargofuncion, electronica.elec_acce_id, electronica.elec_nohab, accesos.acce_nombre "
strsql_h = strsql_h & "from electronica, accesos "
strsql_h = strsql_h & "where elec_empresa1='" & myrecordset_reg!regi_empresa & "' "
set myrecordset_h = mydb.openrecordset(strsql_h, dbopendynaset)
myrecordset_h.movefirst
do while not myrecordset_h.eof
strsql_nh = "select electronicanh.elnh_empresa, electronicanh.elnh_empresa1, electronicanh.elnh_usuario, "
strsql_nh = strsql_nh & "electronicanh.elnh_dni, electronicanh.elnh_tipo_objeto, electronicanh.elnh_marca, electronicanh.elnh_modelo, "
strsql_nh = strsql_nh & "electronicanh.elnh_serie, electronicanh.elnh_nro_imei, electronicanh.elnh_nro_sim, electronicanh.elnh_nro_linea, "
strsql_nh = strsql_nh & "electronicanh.elnh_nro_id, electronicanh.elnh_cargofuncion, electronicanh.elnh_nohab, accesos.acce_nombre "
strsql_nh = strsql_nh & "from electronicanh, accesos "
strsql_nh = strsql_nh & "where elnh_empresa1='" & myrecordset_h!elec_empresa1 & "' and elnh_usuario='" & myrecordset_h!elec_usuario & "' and "
strsql_nh = strsql_nh & "elnh_dni='" & myrecordset_h!elec_dni & "' and elnh_nro_imei='" & myrecordset_h!elec_nro_imei & "' and "
strsql_nh = strsql_nh & "elnh_serie='" & myrecordset_h!elec_serie & "' and accesos.acce_nombre='" & myrecordset_h!acce_nombre & "' "
set myrecordset_nh = mydb.openrecordset(strsql_nh, dbopendynaset)
' myrecordset_nh.movefirst
do while not myrecordset_nh.eof
coincidencia = true
myrecordset_nh.movenext
loop
myrecordset_nh.close

if coincidencia = true then
myrecordset_h.delete
myrecordset_h.update
coincidencia = false
actualizado = true
end if
myrecordset_h.movenext
set myrecordset_nh = nothing
loop
myrecordset_h.close
set myrecordset_h = nothing
if actualizado = true then
myrecordset_reg.edit
myrecordset_reg!regi_check = -1
myrecordset_reg.update
actualizado = false
end if
myrecordset_reg.movenext
loop
myrecordset_reg.close
mydb.close
set mydb = nothing
set myrecordset_reg = nothing

1 respuesta

Respuesta
2

El problema que tienes no es cómo escribes el recordset, sino que la consulta que intentas abrir (la de no es actualizable por sí misma (es una consulta sobre varias tablas que es de solo lectura). Eso lo puedes comprobar si creas la misma consulta con el asistente de consultas verás que no te deja añadir, modificar o eliminar datos.

¡Gracias! 

Hola, tengo un problema y no encuentro la causa, en el recordset que detallo a continuación, encuentra un solo registro en código VBA y si el mismo SQL lo pongo en una consulta encuentra 2 registros, ¿no se porque?.

set mydb = currentdb

strsql_reg = "select registroact.regi_fecha, registroact.regi_empresa, registroact.regi_check_nohab from registroact "
strsql_reg = strsql_reg & "where regi_check_nohab = 0 "
set myrecordset_reg = mydb.openrecordset(strsql_reg, dbopendynaset)

Esta duda no tiene ninguna relación con la pregunta inicial, por lo que deberías abrir una nueva pregunta...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas