Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/03/2010, 13:22
blue_requiem
 
Fecha de Ingreso: marzo-2010
Mensajes: 1
Antigüedad: 14 años
Puntos: 0
Error: Operation is not allowed when the object is closed

Saludos a todos. Soy nuevo en el foro, y quisiera saber si alguien me puede ayudar con un problema en un sitio que estoy tratando de modificar.

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:
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
Las llamada final a la base de datos, la hago con la función dbCreaConsultaModificacion:

Código:
 
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
Le he dado varias vueltas, y no he dado con la solución a esto.

Espero sus comentarios

Saludos, y desde ya gracias.