Problemas en un INSERT a una BD

Holaaaaaaa!
Lo primero gracias por tu tiempo.
La cosa es que estoy intentando hacer un INSERT en una tabla de access y da el error este " La operación debe usar una consulta actualizable." y no se que puede ser. El código es
>>STR = "INSERT INTO aciertos (email) VALUES ('" & cStr(email_)& "')"
>>cnnDB_c.EXECUTE(STR)
La bd esta con permiso de escritura, no se me ocurre, si el insert lo cambio por un select va ok..
Gracias de antemano!

4 Respuestas

Respuesta
1
Ha de ser de tipo entero y con dos valores posibles: 0 (falso) o 1 (verdadero).
En la sql te sobran las comillas simples, te quedaría:
STR = "INSERT INTO aciertos (email, es_cliente) VALUES ('" & cStr(email_) & "'," & cInt(es_cliente_)& ")"
Hola de nuevo y gracias por tu rápida respuesta.
Tengo una duda a ver si puedes resolverme. Estoy tratando de hacer el INSERT en la tabla de access y uno de los campos es de tipo opcion SI/NO y no se como tengo que pasarle si de tipo entero, de tipo string... STR = "INSERT INTO aciertos (email, es_cliente) VALUES ('" & cStr(email_) & "','" & cInt(es_cliente_)& "')" el caso es que en ambos casos me dice No coinciden los tipos de datos en la expresión de criterios.
Gracias por adelantado!
Lo que tiene que estar con permiso de escritura es el directorio donde esté el .mbd, ya que al hacer insert, delete o update, se ha de poder crear el .ldb en el mismo directorio.
Si tienes sistema operativo multiusuario (2000 prof o server o XP prof) tienes que dar permisos al usuario IUSR_nombreservidor, ya que es el usuario que accede mediante el navegador.
Respuesta
1
OK. Supongamos que el campo EsCliente es de tipo Si/No, y es el único que quieres guardar, el SQL sería así:
Insert into tbClientes (EsCliente) values (True)
Como ves, el valor "True" va sin cremillas, tal como si fuera un número. Si es falso, el valor es "False".
Ojalá te sirva!
TCV
Muchísimas gracias por la respuesta, curioso lo de uso compartido de web. Gracias. Siguiendo con eso...
Tengo una duda a ver si puedes resolverme. Estoy tratando de hacer el INSERT en la tabla de access y uno de los campos es de tipo opcion SI/NO y no se como tengo que pasarle si de tipo entero, de tipo string... STR = "INSERT INTO aciertos (email, es_cliente) VALUES ('" & cStr(email_) & "','" & cInt(es_cliente_)& "')" el caso es que en ambos casos me dice No coinciden los tipos de datos en la expresión de criterios.
Gracias por adelantado!
Gracias TCV por la rapidez, voy al ataquerl!
OK. Hay varias razones por las que este error puede ocurrir: el primero (y el más obvio) es que estás tratando de hacer el Insert dentro de una "Consulta" de Access... me parece que ya te hubieses dado cuenta de esto, no ;) En fin, la otra razón por la que puede ocurrir es por un problema de permisos del IIS (Internet Information Server). Verás, cuando accedes desde una aplicación WEB (ASP) hacia cualquier otro directorio que no sea el que has publicado tus páginas, deberás asignar permisos a este directorio para que pueda ser "manipulado" por tu aplicación. Una de las soluciones más simples que encontré, es colocar la carpeta con "Uso compartido de web", que te da en las propiedades de la carpeta. El dejarla como recurso compartido de WEB actualiza automáticamente los permisos, tanto de lectura como de escritura para tus aplicaciones web. La otra forma de hacerlo (sobre una máquina NT o 2000, y creo que XP) es otorgar permisos de control total al usuario del IIS. Suponiendo que tu máquina se llama "MiServidor", el usuario se llamará IUSR_MiServidor, y si utilizas espacio separado de memoria, es el usuario IWAM_MiServidor. En todo caso, yo siempre le doy permisos a los dos...
Ojalá te sirva!
TCV
Respuesta
1
Honestamente no se... La sintaxis de tu Instrucción esta más que bien...
Lo único, y no entiendo por que... seria que te estuviera mandando un error por el cStr... que no debería...
Prueba una cosa...
Pasa tu variable email, a otra, pero ya convertida mediante el cStr... y ponla en el STR... a ver si así... si ni así... imprime la variable Str sin ejecutarla, y verifica que se estén pasando bien los valores...
Que no creo que sea ese el error... pero quien sabe.
Respuesta
1
Como te va
El problema no es de la sentencia
Sino que la base no tiene permiso de escritura
cuando usas access, tienes que darle permiso de escritura al directorio que contiene el archivo mdb
desde iis, podes ver que solo tienen permiso de lectura y ejecución, debes darle permiso de escritura también

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas