** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Err:3265 no se encontro elemento en esta coleccion
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoErr:3265 no se encontro elemento en esta coleccion

 Responder Responder
Autor
Mensaje
indexdoc Ver desplegable
Moderador
Moderador


Unido: 22/Marzo/2005
Estado: Sin conexión
Puntos: 2157
Enlace directo a este mensaje Tema: Err:3265 no se encontro elemento en esta coleccion
    Enviado: 17/Noviembre/2015 a las 09:47
Casi todos conocemos formas de evitar y solucionar ese error - depurando el código y probándolo paso a paso -  pero en este caso no fue posible. 

[3265 no se encontró el elemento en esta colección]
Tras producirse este error en tiempo de ejecución ¿hay alguna forma  sencilla de determinar en la rutina de tratamiento de errores cual es el elemento que no encontró?

En este casó se debió a un error de programación . Un baile de letras en  el nombre de un campo de un recordset  "rstb!lcelula" por "rstb!Icelula" .   Dependiendo del código y el numero de campos en el recordset puede llevar más o menos tiempo pillarlo, pero ayudaría que al mostrar ese error indicara cual es el campo o elemento que no ha encontrado.  









Editado por indexdoc - 17/Noviembre/2015 a las 10:38
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 13125
Enlace directo a este mensaje Enviado: 18/Noviembre/2015 a las 17:22
Imaginemos este código:

Function Algo()
On Error Goto ErrorHandler

  Set rst = CurrentDb.OpenRecordset("SELECT UnCampo, OtroCampo FROM UnaTabla")
  rst.Edit
  rst!UnCampo = "Algo"
  rst!0troCampo = "Otro" ' observa 0tro con cero en lugar de O
  rst.Update 
  rst.Close
  Set rst = Nothing
  
ExitProcedure:
  Exit Function
ErrorHandler:
  MsgBox Err.Number & " - " & Err. Description
  Resume ExitProcedure
End Function

Cuando salta el error en la línea obviamente errónea el sistema lanza un MsgBox. Si pulsamos Control+Pausa el sistema se queda en la línea siguiente de ejecución al MsgBox. En ese momento dejo la linea como 
Resum 'ExitProcedure
de forma que solo ejecute el Resume y vuelva a la línea del error. De esa forma sé cual es la que esta cascando.

No se si es eso o me he lanzado con las explicaciones...




Editado para quitar el bloque de [ code ] que destrozaba el post


Editado por xavi - 18/Noviembre/2015 a las 17:23
Xavi, un minyó de Terrassa

Mi web
Arriba
indexdoc Ver desplegable
Moderador
Moderador


Unido: 22/Marzo/2005
Estado: Sin conexión
Puntos: 2157
Enlace directo a este mensaje Enviado: 19/Noviembre/2015 a las 14:41
Gracias Xavi, pero como comenté no pude hacer ni siquiera una prueba del codigo. 
Este tipo de errores en tiempo de ejcucion  los dirijo directamente a mi direccion de correo y no son realmente un Msgbox.
Tampoco podia ejectuarlo y pararlo en el Msgbox porque antes, en el mismo modulo y funcion,  pasan otras muchas cosas y updates que no queria provocar.

Sigue extrañandome que el Err 3265 detecte un elemento no  perteneciente a una coleccion  y no indique de cual se trata. 
Arriba
happy Ver desplegable
Moderador
Moderador


Unido: 29/Enero/2005
Localización: España
Estado: Sin conexión
Puntos: 3122
Enlace directo a este mensaje Enviado: 19/Noviembre/2015 a las 16:22
Hay una propiedad poco conocida (Erl), que viene del antiguo Basic, en el que las líneas de código solían estar numeradas, que es capaz de devolver el número de línea que provoca un error en un procedimiento dado. Eso sí, el código tiene que estar numerado para eso. Un ejemplo:


Sub ErroresEnLinea()
Dim var1 As Double
Dim var2 As Double
Dim resultado As Double

10    On Error GoTo ErrorHandler

20    var1 = 2
30    var2 = 0
' esta línea provocará el error 11 "División por cero"
40    resultado = var1 / var2
50    MsgBox "El resultado de la división es: " & resultado, vbInformation
    
ExitProcedure:
60    Exit Sub

ErrorHandler:
70    MsgBox "Se ha producido el error " & Err.Number _
           & " - " & Err.Description _
           & vbNewLine & vbNewLine _
           & "Error producido en la línea: " & Erl, vbExclamation
80    Resume ExitProcedure

End Sub


https://msdn.microsoft.com/es-es/library/97sx19w1%28v=vs.90%29.aspx

El por qué el error 3265 no de más datos seguramente tiene que ver porque la captura de errores se hace a un bajo nivel y es posible que deba lidiar con demasiados interrogantes como para dar más detalles del error. Sin ir más lejos una colección puede tener muchas modalidades (no tiene por qué ser únicamente un recordset o un objeto collection, puede ser infinidad de tipos de arrays, estructuras y/o objetos)

espero que te ayude ...


Editado por happy - 19/Noviembre/2015 a las 16:28
Saludos,

Juan M. Afan de Ribera
Arriba
indexdoc Ver desplegable
Moderador
Moderador


Unido: 22/Marzo/2005
Estado: Sin conexión
Puntos: 2157
Enlace directo a este mensaje Enviado: 19/Noviembre/2015 a las 18:06
Mucho,  Happy! ,Aunque conocia la opcion para numerar las lineas de codigo, nunca lo hago  ya que la informacion este tipo de errores en tiempo de ejecucion suele dar suficientes pistas al desarrollador para solucionarlo.

En este caso , su el Err.3265 determina que algo que estas buscando no forma parte de un conjunto en el que buscas  , tiene que conocer ambas cosas, lo que buscas y donde. 

Sin más,  no merece la pena darle mas vueltas a este hilo, por mi parte se puede cerrar.

 


Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable