-
Seguramente no tenga nada que ver pero, ¿has instalado el ultimo framework?.
-
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Controlador ODBC Microsoft Access] La operación debe usar una consulta actualizable.Y eso no es que la BD esté en uso… revisa ese SQL.
Salu2...
-
-
El error de "necesita una consulta actualizable" tb me lo daba con la otra web, al intentar insertar un registro nuevo en la base de datos. Las páginas las hago en modo visual, no edito el código directamente, puesto que no tengo ni idea de programación.
No es el framework, ya que nunca lo he instalado. Hay algo que hago mal y no tengo ni idea de que es. La conexión a la base de datos la hago desde el Dreamweaver, creando una DSN del sistema y nada más. Es algo muy sencillo que no me funciona, .
-
si pones el código que hace la inserción desde asp, podría mirarlo pero así sin verlo…
salu2...
-
He aqui el codigo dela página que vinculé antes. Ahi viene la conexión a la base de datos. Lo he sacado del dreamweaver.
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="1252"%>
<%
// *** Edit Operations: declare variables// set the form action variable
var MM_editAction = Request.ServerVariables("SCRIPT_NAME");
if (Request.QueryString) {
MM_editAction += "?" + Request.QueryString;
}// boolean to abort record edit
var MM_abortEdit = false;// query string to execute
var MM_editQuery = "";
%>
<%
// *** Insert Record: set variablesif (String(Request("MM_insert")) == "form1") {
var MM_editConnection = MM_baseDSN_STRING;
var MM_editTable = "Miembros";
var MM_editRedirectUrl = "";
var MM_fieldsStr = "namenew|value|hotmailnew|value";
var MM_columnsStr = "Nombre|',none,''|Hotmail|',none,''";// create the MM_fields and MM_columns arrays
var MM_fields = MM_fieldsStr.split("|");
var MM_columns = MM_columnsStr.split("|");// set the form values
for (var i=0; i+1 < MM_fields.length; i+=2) {
MM_fields[i+1] = String(Request.Form(MM_fields_));
}// append the query string to the redirect URL
if (MM_editRedirectUrl && Request.QueryString && Request.QueryString.Count > 0) {
MM_editRedirectUrl += ((MM_editRedirectUrl.indexOf('?') == -1)?"?":"&") + Request.QueryString;
}
}
%>
<%
// *** Insert Record: construct a sql insert statement and execute itif (String(Request("MM_insert")) != "undefined") {
// create the sql insert statement
var MM_tableValues = "", MM_dbValues = "";
for (var i=0; i+1 < MM_fields.length; i+=2) {
var formVal = MM_fields[i+1];
var MM_typesArray = MM_columns[i+1].split(",");
var delim = (MM_typesArray[0] != "none") ? MM_typesArray[0] : "";
var altVal = (MM_typesArray[1] != "none") ? MM_typesArray[1] : "";
var emptyVal = (MM_typesArray[2] != "none") ? MM_typesArray[2] : "";
if (formVal == "" || formVal == "undefined") {
formVal = emptyVal;
} else {
if (altVal != "") {
formVal = altVal;
} else if (delim == "'") { // escape quotes
formVal = "'" + formVal.replace(/'/g,"''") + "'";
} else {
formVal = delim + formVal + delim;
}
}
MM_tableValues += ((i != 0) ? "," : "") + MM_columns_;
MM_dbValues += ((i != 0) ? "," : "") + formVal;
}
MM_editQuery = "insert into " + MM_editTable + " (" + MM_tableValues + ") values (" + MM_dbValues + ")";if (!MM_abortEdit) {
// execute the insert
var MM_editCmd = Server.CreateObject('ADODB.Command');
MM_editCmd.ActiveConnection = MM_editConnection;
MM_editCmd.CommandText = MM_editQuery;
MM_editCmd.Execute();
MM_editCmd.ActiveConnection.Close();if (MM_editRedirectUrl) {
Response.Redirect(MM_editRedirectUrl);
}
}}
%><title>Documento sin título</title>
__
-
Lo del framework te lo decia porque aunque no lo tengas instalado si tienes el .Net ya te lo instala y podrias necesitar actualizarlo, pero creo que no eso.
Comentas que lo haces con el dreamwaver e imagino que funcionara en tu equipo. A mi me ocurria algo parecido y el problema estaba precisamente en la conexion con la base de datos, me funcionaba en local pero no en la web y era porque tenia conectado especificamente a base de datos con mi equipo y debia hacerlo de forma mas general.
Ya se que no me he explicado bien, lo busco y ya te lo cuento mejor.
-
odio ese código generado así por las bunas… donde esté editar "a pelo"... que se quite todo eso... hmm... en principio parece que todo está correcto... sería interesante ver el baseDSN.asp (creo que es a lo que tu te refieres pako)... puedes tener el DSN mal, y que desde fuera no se vea... tienes un fichero llamado global.asa en el root del tu web ? Todo el tema de conexiones a la BD, etc suele meterse ahí.
Salu2...
-
Ya he vuelto. Siento no haber contestado antes pero tuve una fuga con la RL… :nono: . Gracias a dios, dejando secar la placa base ya funciona . Si hay un archivo global.asa. He conseguido reducir el problema a un único mensaje de error:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Controlador ODBC Microsoft Access] La operación debe usar una consulta actualizable.Geezup, es el error que has puesto varios post más arriba. ¿Cómo se solucina?. Estoy tirandome de los pelos porque no se cómo conseguí hacerlo funcionar en su día y ahora no hay manera, .
Gracias por todas las respuestas.
-
hasta este fin de semana no voy a estar disponible, lo siento, tengo que prepararme un examen…. a ver si puedes postear el contenido del baseDSN.asp y del global.asa... también mira a ver si buscando el error "La operación debe usar una consulta actualizable" en el google encuentras algo... que seguro que sí... pero yo al código que has posteado, no le veo nada "raro" aparte de que lo genere el DW y no me mole, pero por lo demás creo que está correcto...
ánimo tío... este finde volveré a hechar un vistazo al post, y si no lo tienes solucionado me pongo con ello un poco más seriamente.
Salu2...
-
yo lo primero que haria seria hacer un response.write (MM_editQuery) para ver que es lo que esta intentando hacer. Porque con ese codigo del DW no hay manera…
Haz el response.write y comenta la linea MM_editCmd.Execute();
Coje lo que te de el response y pegalo en una consulta del access. Asi veras si funciona la SQL.
-
Lo conseguí!!!!! Aleluya!!!! Dios existe!!!!. La solución la tenía justo delante. Pa que –--- imprimo el manual de DW si luego no lo miro!!!:muerto: . En una página de este manual viene como título : "Solución de problemas de conexiones de bases de datos".
Hay especifica los dos famosos problemas:
- La base de datos está ya en uso...
- Debe usar una consulta actualizable.
¿Solución?
Dar permisos de lectura y escritura al usuario "IUSR_nombre_del_equipo" a la carpeta que contenga la base de datos. Tan sencillo. Yo no tenía a ese usuario en los permisos, por eso no funcionaba!!!.
Para agregar a este ---- de usuario hay que dar en la pestaña "seguridad" dentro de las propiedades de la carpeta que contenga la base de datos.
Esto sólo ocurre en particiones NTFS, no en FAT.
Gracias a todos por vuestras respuestas!!!