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 originalabrirCON(); // 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;
}
%>