AdoMensajes.Recordset.AddNew
AdoMensajes.Recordset.Fields("origen").Value = Usuario
En esta parte de código me da un error en la segunda linea, ¿porqué? no puedo meter los datos así en la base de datos, me deja leer pero no escribir.
Como puedo crear una nueva fila en la base de datos y guardar ciertas variables en sus campos?
Un saludo!
checa como la estas abriendo, si puedes leer entonces la estas abriendo como solo lectura
de primeras...¿k error te da?
Viendo que utilizas un controlcito y dando por correcto el nombre del campo nose que puede fallar.
los campos se pueden meter asi
adomensajes.recordset!nombrecampoapelo=valor
adomensajes.recordset![nombrecampoapelo]=valor
una vez que metas te mueves a un registro para que refresque
adomensajes.recordset.update
'o
adomensajes.recordset.movefirst
muchas veces va más rapido visual que la base de datos y suele dar problemas de refrescos xD
en el caso que tengas el recourdsource en diseño agregalo también en tiempo de ejecución (a veces da fallos)
como comento celaya comprueba los permisos de la base de datos y los de conexión
El error que me da lo adjunto como imagen al mensaje y al pulsar en depurar me lleva a esa línea de código.
¿Cómo puedo revisar los permisos de la base de datos?
Permisos de escritura tiene porque yo puedo conectarme a ella a mano y escribir datos. Supongo que el control Ado tendra algun filtro de permisos tambien, como puedo darle permisos de escritura para ver si es eso?
EDITADO
He comprobado los permisos del objeto ADO y tenia mode unknow y lo he puesto en readwrite y me sigue dando el mismo error.
Tambien he probado a escribir con ado.recordset!campo y da exactamente el mismo error.
Tambien he probado a intentar ejecutar la sentencia SQL "a pelo" pero no me deja, he leido por internet que se hacia:
Adodc.recordset.execute("SQL")
Pero a mi no me reconoce la opcion execute en el recordset, en los ejemplos que he leido en internet creaban el recordset desde codigo y yo he añadido el objeto en el formulario, supongo que no habra problema.
Espero que podais ayudarme, gracias por leer.
¿Alguna otra sugerencia?
Un saludo!
pues según lo que pones en las imagenes el error se provoca porque no encuentra el campo "origen" en la tabla, checa si lo tienes bien escrito, o si usas una consulta SQL que hayas seleccionado el campo:
Adodc.recordset.execute("SELECT campo1,campo2, Origen FROM...")
Este post se lo recomiendo a todos los que utilizan bases de datos xD a mi me vino muy bien
intenta hacerlo en tiempo de ejecución enviando la sentencia directamente sobre la conexión (cn.execute sql)
Cita de: soplo en 22 Junio 2006, 20:40 PM
No has leído mucho la verdad
Declarar variables
Dim Cn as adodb.connection, Cmd as adodb.Command, Rec as adodb.Recordset
Dim Sql as string
Iniciar la conexión
set Cn=new adodb.connection
Cn.open la_string_de_conexión
Ejecutar un comando
sql="delete tabla where dato='" & valor & "'"
Cn.execute sql
Abrir un recordset
set rec=new adodb.recordset
rec.open string_de_recordsource,Cn,,adcmdtext
Acceder a un campo
p$=rec!dirección
Acceder a las propiedades de un campo
p$=rec.fields("nombre_campo").propiedad
donde propiedad puede ser 'name', 'type','value', ..., etc
Utilizar un objeto command
set Cmd=new adodb.command
cmd.commandtype=adcmdtext
cmd.activeconnection=cn
cmd.commandtext=sql
cmd.execute
El tipo puede ser desde una tabla a una sentencia sql pasando por un procedimiento almacenado.
Ejemplo de un comand que genera un recordset
dim Cn as adodb.connection, Cmd as adodb.command, Rec as adodb.Recordset
Set Cn=new adodb.connection
cn.open connectionstring, usuario, clave
set Cmd=new adodb.command
set Cmd=new adodb.command
cmd.commandtype=adcmdtext
cmd.activeconnection=cn
cmd.commandtext="select * from tabla order by nombre"
Rec=cmd.execute
Y esto en el modelo de datos ADO. El DAO es mas rápido y para cosas pequeñas mejor (especialmente con access). ADO es mas completo y para bases de datos sql.
RTFM