Hola a todos:
En primer lugar agradecer la existencia de este foro, que aunque nunca había escrito ningún post, me ha ayudado con muchísimas dudas de programación Web y demás
Bueno, vamos con el problema en cuestión:
Tengo un formulario en ASP.NET que tiene que guardad unos datos en una BBDD Access. Pero al hacer el "cmd.ExecuteNonQuery();" me da el siguiente error:
System.Data.OleDb.OleDbException: La operación debe usar una consulta actualizable.
He estado mirando y la mayoría post hablan de permisos en la BBDD, pero creo que este no es mi problema, ya que la BBDD tiene el usuario ASPNET con permisos de escritura y lectura.
Aqui el error detallado que me da:
Código:
Error de servidor en la aplicación '/'.
--------------------------------------------------------------------------------
La operación debe usar una consulta actualizable.
Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.
Detalles de la excepción: System.Data.OleDb.OleDbException: La operación debe usar una consulta actualizable.
Error de código fuente:
Línea 70: OleDbCommand cmd = new OleDbCommand(strsql, connconn);
Línea 71: connconn.Open();
Línea 72: cmd.ExecuteNonQuery();
Línea 73: connconn.Close();
Línea 74: System.Net.Mail.MailMessage correo_respuesta = new System.Net.Mail.MailMessage();
Archivo de origen: d:\internet\contacto.aspx.cs Línea: 72
Seguimiento de la pila:
[OleDbException (0x80004005): La operación debe usar una consulta actualizable.]
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +267
System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +192
System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +48
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +106
System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +108
contacto.submit_form(Object sender, EventArgs e) in d:\internet\contacto.aspx.cs:72
System.Web.UI.WebControls.LinkButton.OnClick(EventArgs e) +90
System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +76
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +177
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1746
--------------------------------------------------------------------------------
Información de versión: Versión de Microsoft .NET Framework:2.0.50727.1433; Versión ASP.NET:2.0.50727.1433
Y aquí el código .NET que estoy utilizando:
Código:
try
{
OleDbConnection connconn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(@"webcontent.mdb") + ";");
string strsql = "INSERT INTO forms (type) values ('contacto')";
OleDbCommand cmd = new OleDbCommand(strsql, connconn);
connconn.Open();
cmd.ExecuteNonQuery();
connconn.Close();
System.Net.Mail.MailMessage correo_respuesta = new System.Net.Mail.MailMessage();
correo_respuesta.From = new System.Net.Mail.MailAddress("[email protected]");
correo_respuesta.To.Add("[email protected]");
correo_respuesta.Subject = "FORMULARIO VENETO ENVIADO - Web";
correo_respuesta.Body = "<p style=\"font:Arial;size:10px\">Su demanda o información ha sido enviada a Veneto</p>";
correo_respuesta.IsBodyHtml = true;
correo_respuesta.BodyEncoding = System.Text.Encoding.UTF8; ;
correo_respuesta.Priority = System.Net.Mail.MailPriority.Normal;
System.Net.Mail.SmtpClient smtp_respuesta = new System.Net.Mail.SmtpClient();
smtp_respuesta.Host = "localhost";
smtp_respuesta.EnableSsl = false;
smtp_respuesta.Send(correo_respuesta);
Response.Redirect("formularioenviado.aspx");
}
catch (HttpException ex)
{
Response.Redirect("errorenelenvio.aspx" );
}
¿Alguna idea?
Gracias.