El error se produce en una página para administrar contenidos traídos desde una base de datos(Noticias). Al tratar de guardar una Noticia, aparece el siguiente error:
Código:
Operation is not allowed when the object is closed. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.Runtime.InteropServices.COMException: Operation is not allowed when the object is closed. Source Error: An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. Stack Trace: [COMException (0x800a0e78): Operation is not allowed when the object is closed.] ADODB.RecordsetClass.get_EOF() +0 Noticia.gCreaNoticia(Int64 lngIdNoticia, String strTitulo, String strSubTitulo, Int64 lngImgFull, Int64 lngImgBreve, String strContenido, String strBreve, String strUrl, CheckBoxList lstChk, String strTags, Int64 lngFlash, String strFecha, Boolean blnActivar) +1125 Upload.btnNoticia_Click(Object sender, EventArgs e) +597 System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565 Version Information: Microsoft .NET Framework Version:2.0.50727.3053; ASP
El código con el que ingreso las noticias esta dividido en varios archivos. El de la página principal es este:
Código:
Dim lngUrlFull As Long Dim lngUrlBreve As Long Dim lngUrlFlash As Long lngUrlBreve = 0 lngUrlFull = 0 lngUrlFlash = 0 If Trim(fluImagenFull.FileName) <> "" Then Call gArchivo2Byte(fluImagenFull) lngUrlFull = gCreaImagen(lngUrlFull, txtAltImagenFull.Text) End If 'strImgBreve = gSubirArchivo(fluImagenBreve, "IMG") 'lngUrlBreve = gCreaEnlace(strImgBreve, gcintImagen) If Trim(fluImagenBreve.FileName) <> "" Then Call gArchivo2Byte(fluImagenBreve) lngUrlBreve = gCreaImagen(lngUrlBreve, txtAltImagenBreve.Text) End If If Trim(fluFlash.FileName) <> "" Then Call gArchivo2Byte(fluFlash) lngUrlFlash = gCreaImagen(lngUrlFlash, txtAltImagenBreve.Text) End If If gCreaNoticia(glngNoticia, txtTitulo.Text, txtSubTitulo.Text, lngUrlFull, lngUrlBreve, txtNoticia.Text, txtBreve.Text, Trim(txtUrl.Text), chkCategorias, txtTags.Text, lngUrlFlash, txtFecha.Text, chkActivar.Checked) Then strMsg = "Noticia guardada con exito" Else strMsg = "La Noticia no pudo ser Creada" End If lblNoticia.Text = strMsg lblNoticia.ForeColor = Drawing.Color.Red
La función gCreaNoticia(que crea la noticia) es esta:
Código:
Las llamada final a la base de datos, la hago con la función dbCreaConsultaModificacion:Public Function gCreaNoticia(ByVal lngIdNoticia As Long, ByVal strTitulo As String, ByVal strSubTitulo As String, ByVal lngImgFull As Long, ByVal lngImgBreve As Long, ByVal strContenido As String, ByVal strBreve As String, ByVal strUrl As String, ByVal lstChk As CheckBoxList, ByVal strTags As String, ByVal lngFlash As Long, ByVal strFecha As String, ByVal blnActivar As Boolean) As Boolean Dim strSql As String Dim adoRs1 As New ADODB.Recordset Dim blnOk As Boolean Dim blnEstado As Boolean Dim tipo As Long Dim lNoticiasCategoria As Long blnEstado = True blnOk = False If strFecha = "" Then strFecha = CStr(fFecha2Num(gObtieneFechaActual, gObtieneHoraActual)) End If lngIdNoticia = gTraeNoticia() If blnActivar Then strSql = "INSERT INTO Noticias (NS_Id, NS_Titulo, NS_Subtitulo, NS_Breve, NS_Contenido, NS_Imagen, NS_ImgBreve, NS_Flash, NS_Tags, NS_Url, NS_DigFecha, NS_Estado) VALUES (" & lngIdNoticia & ", '" & strTitulo & "', '" & strSubTitulo & "', '" & Mid(strBreve, 1, 400) & "', '" & strContenido & "', " & lngImgFull & ", " & lngImgBreve & ", " & lngFlash & ", '" & strTags & "', '" & strUrl & "', " & Val(strFecha) & ", 1)" Else strSql = "INSERT INTO Noticias (NS_Id, NS_Titulo, NS_Subtitulo, NS_Breve, NS_Contenido, NS_Imagen, NS_ImgBreve, NS_Flash, NS_Tags, NS_Url, NS_DigFecha, NS_Estado) VALUES (" & lngIdNoticia & ", '" & strTitulo & "', '" & strSubTitulo & "', '" & Mid(strBreve, 1, 400) & "', '" & strContenido & "', " & lngImgFull & ", " & lngImgBreve & ", " & lngFlash & ", '" & strTags & "', '" & strUrl & "', " & Val(strFecha) & ", 0)" End If If dbCreaConsultaModificacion(strSql, adoRs1) Then If Not adoRs1.EOF Then glngEnlace = gTraeEnlace() For lngItem = 0 To lstChk.Items.Count - 1 If lstChk.Items(lngItem).Selected Then tipo = lstChk.Items(lngItem).Value End If Next lngItem If gCreaEnlace(glngEnlace, strUrl, tipo) Then glngNoticiaEnlace = gTraeNoticiaEnlace() If gCreaNoticiaEnlace(glngNoticiaEnlace, lngIdNoticia, glngEnlace, tipo, strFecha) Then If gCreaNoticiaCategoria(lngIdNoticia, tipo) Then lNoticiasCategoria = gTraeNoticiaCategoria(lngIdNoticia, lstChk) End If End If End If End If blnOk = True End If adoRs1 = Nothing gCreaNoticia = blnOk End Function
Código:
Le he dado varias vueltas, y no he dado con la solución a esto.Public Function dbCreaConsultaModificacion(ByVal strSql As String, ByVal adoRs As ADODB.Recordset) As Boolean Try If gblnBaseAbierta = False Then Call dbInit() End If adoRs.Open(strSql, gCn, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic) dbCreaConsultaModificacion = True Catch ex As Exception dbCreaConsultaModificacion = False End Try End Function
Espero sus comentarios
Saludos, y desde ya gracias.