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
abrirCON(); // Abrimos la CONEXIÓN. // var a = 1; var b = 9; var codigoa = ''; for ( i=0;i<6;i++) { numeroa = Math.floor ( Math.random() * ( b - a ) + a ); codigoa += String(numeroa); } var tabla = "solicita"; var fecha = fechaHOY(); var activo = "0"; var ncolu = "clave"; var nufila; // Número de filas (registros devueltos por la consulta). // var nucolu; // Número de columnas (campos de la tabla devueltos). // var dato; // Array donde las filas son los registros y las columnas los campos. // sqlINPREASI(); // Insertamos. // solicitud = dato[0][0]; dato = ''; closeCONN();
Código ASP:
Ver original
<% function sqlINPREASI() { sqlins = "insert into " + tabla + "("; for (i=1;i<=Request.Form.Count;i++) { campo = String(Request.Form.Key(i)); if (campo.search(/^envio$|^atras$|^sia$|^undefined$/)<0) { sqlins += campo + ","; } } sqlins += "fecha,activo,codigoa"; sqlins += ") values ("; for (i=1;i<=Request.Form.Count;i++) { campo = String(Request.Form.Key(i)); valor = String(Request.Form.Item(campo)); if (campo.search(/^envio$|^atras$|^sia$|^undefined$/)<0) { sqlins += "\'" + valor + "\',"; } } sqlins += "\'" + fecha + "\',\'" + activo + "\',\'" + codigoa + "\'"; sqlins += ")"; var sqlsel = "select * from " + tabla + " where (" + ncolu + "= SCOPE_IDENTITY())"; sql = sqlins + ";" + sqlsel; rs = CONN.execute(sql); // Aplicamos el método getRows() a nuestro recordSet para guardarlo en un array. // if (!rs.EOF) { var consulVB = (new VBArray(rs.getRows())); nufila = consulVB.ubound(2) + 1; nucolu = consulVB.ubound(1) + 1; // Convertimos el array Visual Basic a javaScript mediante toArray(). // consulta = consulVB.toArray(); // Construimos un array donde el número de filas es el número de registros recuperados de // // de la consulta, y el número de columnas es el número de campos de la tabla que nos trae // // la consulta. // dato = new Array(nufila); for (i=0;i<nufila;i++) { var colu = new Array(nucolu); for (j=0;j<nucolu;j++) { colu[j] = consulta[(i*nucolu)+j]; } dato[i] = colu; } } else{Response.Write("No hemos recuperado el último registro insertado");} // Cerramos el recorSet y lo vaciamos. // rs.close(); rs=null; } %>