Puede ser, porque hace años y años que no uso el control Adodc. Con el método de ADO directo no es necesario refrescar, ya que se ejecuta íntegramente la instrucción SQL; pero aquí ya veo que no es un EXECUTE, sino una definición del recordSource, que puede necesitar refrescarla.
Si compruebas que la actualización se ejecuta y que únicamente necesitar eliminar el mensaje de error, puedes poner
Código:
adodc1.recordSource="update datos set estado = 'NO' where estado = 'SI'"
On Error Resume Next
adodc1.refresh
On Error Goto 0
No es un dechado de código, pero ya sabes... a falta de pan buenas son tortas...