No entiendo muy bien a qué se debe exactamente este error.
En el proyecto que estoy desarrollando, se abre un recordset para
lectura/ escritura sobre una base de datos de MS SQL Server 2000:
cnn_sql.Open "Provider=SQLOLEDB.1;" & _
"Data Source=" & Srv & ";" & _
"Initial Catalog=" & dB & ";" & _
"User Id=" & uID & ";" & _
"Password=" & pwd
rst.Open CadSQL, cnn_sql, adOpenStatic, adBatchOptimistic, adCmdText
Existe un formulario que lleva enlazados los cuadros de texto a dicho
recordset (DataSource) y existe, en ese mismo formulario, un ListBox
que actualiza los cuadros de texto según el código que se seleccione,
dentro de la lista. Para hacer la actualización de los cuadros de
texto, desplazo el cursor hasta el índice correspondiente con la
siguiente instrucción:
rst.MoveFirst
rst.Find "COD = " & CInt(LBContactos.ListIndex)
Y aquí falla, en el Find. Unas veces sí y otras no. Y no logro definir
un patrón coherente que reproduzca el fallo. Unas veces falla la
segunda vez que se selecciona un registro, otras falla a la décima.
Unas veces con un registro, otras con otro. He logrado reproducir una
cadena de selecciones que siempre termina en error, pero no tiene nada
que ver con ese registro en concreto ni con el número de veces que se
hace el Find.
He buscado en foros, en el MSDN, en Google. No sé por qué se produce
ese error ni qué significa.
La única forma de evitar este error es rellenando los cuadros de texto
en tiempo real mediante código, sin hacer uso de la propiedad
DataSource, pero preferiría utilizar esta última por una cuestión de
código en librerías ya escrito que no deseo reescribir.
A ver si alguien arroja un poco de luz al asunto, por favor.
MhBeyle __
La verdad es que nunca he tenido este error, pero averiguando en la
página de soporte de microsoft encontré esto, ojala te sirva.
Saludos!!!
http://support.microsoft.com/default.aspx?scid=kb;en-us;257790
En él hablan de que cuando se hace un CancelUpdate después de un
AddNew, se puede generar ese error si el tipo de datos devuelto por el
TextBox no es correcto (DataFormat).
Yo no cambiaba datos ni añadía nada al recordset y por eso no me fijé
en el caso, pues no se aplicaba a nada de lo que yo estuviera
haciendo. Sin embargo, ya digo que, desesperado, decidí añadir al
DataFormat de un campo numérico la propiedad correspondiente... Y
empezó a funcionar todo como por arte de magia.
En toda mi aplicación, ningún TextBox lleva la propiedad DataFormat
habilitada. Hago cientos de consultas por todos los lados y no hay
problema de ningún tipo con la actualización de los datos. Sin
embargo, en este caso, el no tener la propiedad DataFormat de un
determinado TextBox igualada a un formato numérico genera ese error,
lo cual coincide, en parte, con el caso de la msdn de microsoft (al
revés y de refilón, pero coincide).
Dejo esto aquí escrito por si alguien se encuentra con este problema y
ya no sabe qué hacer. Que nadie pregunte por qué motivo sucede esto y
cuándo sucede porque la solución está más allá de mi conocimiento y,
creo, del de todo bicho viviente :)
MhBeyle ___
Víctor Gómez <victorg...@gmail.com> escribió lo siguiente ...