Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/06/2014, 12:43
evoarte
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 21 años, 9 meses
Puntos: 2
ADODB.Recordset error '800a0e78' Operation is not allowed when the object is closed.

hola amigos,

estoy modificando una antigua aplicación y me he obcecado:
ADODB.Recordset error '800a0e78' Operation is not allowed when the object is closed.

lo he repasado mil veces y la conexión no está cerrada antes de utilizar rs

Código ASP:
Ver original
  1. abrirCON();                     //  Abrimos la CONEXIÓN.                                                    //
  2.  
  3.         var a = 1;
  4.         var b = 9;
  5.         var codigoa = '';
  6.  
  7.         for ( i=0;i<6;i++)
  8.         {
  9.             numeroa  = Math.floor ( Math.random() * ( b - a ) + a );
  10.             codigoa += String(numeroa);
  11.         }
  12.        
  13.         var tabla  = "solicita";
  14.         var fecha  = fechaHOY();
  15.         var activo = "0";
  16.        
  17.         var ncolu = "clave";
  18.         var nufila;         // Número de filas (registros devueltos por la consulta).                       //
  19.         var nucolu;         // Número de columnas (campos de la tabla devueltos).                           //
  20.         var dato;               // Array donde las filas son los registros y las columnas los campos.       //
  21.  
  22.         sqlINPREASI();                      // Insertamos.                                                      //
  23.        
  24.         solicitud = dato[0][0];
  25.         dato      = '';
  26.            
  27.         closeCONN();

Código ASP:
Ver original
  1. <%
  2.     function sqlINPREASI()
  3.     {
  4.         sqlins  = "insert into " + tabla + "(";
  5.    
  6.         for (i=1;i<=Request.Form.Count;i++)
  7.             {
  8.                 campo = String(Request.Form.Key(i));
  9.  
  10.                 if (campo.search(/^envio$|^atras$|^sia$|^undefined$/)<0)
  11.                     {
  12.                         sqlins += campo + ",";
  13.                     }
  14.             }
  15.         sqlins += "fecha,activo,codigoa";
  16.         sqlins += ") values (";
  17.  
  18.         for (i=1;i<=Request.Form.Count;i++)
  19.             {
  20.                 campo = String(Request.Form.Key(i));
  21.                 valor = String(Request.Form.Item(campo));
  22.  
  23.                 if (campo.search(/^envio$|^atras$|^sia$|^undefined$/)<0)
  24.                     {
  25.                         sqlins += "\'" + valor + "\',";
  26.                     }
  27.             }
  28.  
  29.         sqlins += "\'" + fecha + "\',\'" + activo + "\',\'" + codigoa + "\'";
  30.         sqlins += ")";
  31.        
  32.         var sqlsel = "select * from " + tabla + " where (" + ncolu + "= SCOPE_IDENTITY())";
  33.  
  34.         sql = sqlins + ";" + sqlsel;
  35.        
  36.         rs = CONN.execute(sql);
  37.        
  38.     //  Aplicamos el método getRows() a nuestro recordSet para guardarlo en un array.                   //
  39.    
  40.             if (!rs.EOF)
  41.             {
  42.    
  43.                 var consulVB  = (new VBArray(rs.getRows()));
  44.                 nufila = consulVB.ubound(2) + 1;
  45.                 nucolu = consulVB.ubound(1) + 1;
  46.            
  47.     //  Convertimos el array Visual Basic a javaScript mediante toArray().                              //
  48.            
  49.                 consulta = consulVB.toArray();
  50.  
  51.     //  Construimos un array donde el número de filas es el número de registros recuperados de      //
  52.     //  de la consulta, y el número de columnas es el número de campos de la tabla que nos trae     //
  53.     //  la consulta.                                                                                                //
  54.            
  55.                 dato = new Array(nufila);
  56.            
  57.                 for (i=0;i<nufila;i++)
  58.                     {
  59.                         var colu = new Array(nucolu);
  60.                         for (j=0;j<nucolu;j++)
  61.                         {
  62.                             colu[j] = consulta[(i*nucolu)+j];
  63.                         }
  64.                         dato[i] = colu;
  65.                     }
  66.             }
  67.             else{Response.Write("No hemos recuperado el último registro insertado");}          
  68.     // Cerramos el recorSet y lo vaciamos.                                                                  //
  69.            
  70.             rs.close();
  71.             rs=null;       
  72.     }
  73. %>