En general, el mensaje de error es: "No se puede actualizar 'nombre del campo'; el campo no es actualizable".
Esto se debe a que ese campo específico tiene alguna característica que hace que no se puede reescribir. En mi base d edatos, el campo "Id" es llave primaria y es auto incrementable.
Aunque los permisos de la base de datos permitan hacer modificaciones a sus datos, un campo del recordset no permite cambiar su contenido si es auto incrementable. Antes de actualizar mi recordset, necesitaba saber qué campos son autoincrementables para no tocarlos cuando quiera modificar su contenido.
Después de mucho buscar por internet, di con este foro:
http://www.experts-exchange.com/Programming/Languages/Visual_Basic/Q_20248270.htmlSon rescatables estos posts:
Expert Comment
Posted by rspahitz on 21/12/01 at 8:20 AM
I don't know the answer, but since (I think) Properties is a collection, you should be able to cycle through and find the valid choices:for i = 0 to rs.Fields(x).Properties.co
debug.print rs.Fields(x).Properties(i)
next i
Author Comment
Posted by andyknott on 21/12/01 at 8:28 AM
Hi rspahitz,Thanks that helped a bit, the properties listed are
BASECATALOGNAME
BASECOLUMNNAME
BASESCHEMANAME
BASETABLENAME
COLLATINGSEQUENCE
COMPUTEMODE
DATETIMEPRECISION
ISAUTOINCREMENT
ISCASESENSITIVE
ISSEARCHABLE
OCTETLENGTH
KEYCOLUMN
COMPFLAGS
SORTID
BASETABLEINSTANCE
TDSCOLLATION
Para saber, por ejemplo, si un campo con índice x es auto incrementable, se hace:
If miRecordset(x).Properties("IsAutoIncrement").Value Then _
Debug.Print "Es Auto Incrementable"
En mi caso, al modificar mi recordset, hago:
For i = 0 To miRecordset.Fields.count - 1
If Not miRecordset(i).Properties("IsAutoIncrement").Value Then
miRecordset(i) = nuevoValor
End If
Next
miRecordset.Update
Con esto elimino el error de Campo no Actualizable.
No hay comentarios:
Publicar un comentario