FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Activar un SQLQuery
Hola tengo un problema el insertar datos en una base de datos Mysql. Para insertar utilizo un componente SQLQuery al que le añado la sentencia insert (query.SQL.Add('insert into personas ....')) y a veces me da un error de violacion de memoria, me dijeron que tal vez fuera porque el componente no estuviera activo, efectivamente compruebo la propiedad Active del componente en tiempo de ejecuion y es False, le asigno el valor True esta propiedad (query.Active:=True) pero me genera el siguiente error al ejecutar:
query: cursor nor returned from Query ¿Porque me genera este error? |
#2
|
||||
|
||||
Hola Beatriz, quizá sería bueno que pusieras ese pedazo de código donde trabajas con la Query para ver que estás haciendo.
Así a bote pronto se me ocurre por lo que dices, que estás activando la Query cuando no hace falta hacerlo. - La desactivas. - Le añades el texto SQL a la query. - Le añades los parámetros si los tiene. - Por último ejecutas la query, ¿como? si una simple consulta, basta que hagas un Open o Active = True. Pero si tu caso es una consulta de modificación, alta o borrado, debes usar ExecSQL. Alomejor me he ido por otro camino, por eso repite que mejor sería que pusieras el código, para ver entre todos donde puede estar ocurriendo el error. Saludos |
#3
|
|||
|
|||
Bueno con lo que me comentas creo que estoy equivocada al poner la propiedad Active del Query a True, al ser un 'insert' no se puede poner esta propiedad activa, verdad?. Bueno era por probar algo ya que la violacion de memoria al ejecutar el 'insert' con ExecSQL no consigo que desaparezca y creia que podia ser porque la propiedad Active estuviera a False. Os paso el codigo y :
query.SQL.Clear; query.SQL.Add('insert into personas values (1,2,3,4,5,6,7)'); query.ParamByName('p1').Clear; query.ParamByName('p1').AsInteger:=identificador; query.ParamByName('p2').Clear; query.ParamByName('p2').AsString:=e_e.Text; ..... ....//asigno el valor de todos los parametros ..... // query.Active:=True; //al ejecutar esto es donde me genera la el error que os comente antes. query.ExecSQL; // y al ejecutar esto a veces me genera una violacion de memoria Yo en realidad lo que estoy intentando solucionar es la violacion de memoria, ¿se os ocurre algo? |
#4
|
||||
|
||||
Efectivamente no hay que poner el active a true al hacer un insert.
Por el código que mandas yo lo veo bien. Sólo que no he usado nunca un clear de los parámetros, ya que siempre me suelo asegurar de que tendrán un valor. Lo que te aconsejo es que: 1º - prueba a quitar el parambyname.clear a ver que tal. No sea cosa que fuera por eso, no lo sé. 2º - si aún así no se te ha arreglado, pon un breakpoint en la linea del SQL.Clear y ves paso a paso con F8 y ponte encima de todos los parámetros que le mandas a ver si son todos correcto, no sea que alguno esté mal. Espero te sirva Saludos |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Como logro consultas desde clientdatset y SqlQuery | Arturo | Conexión con bases de datos | 0 | 22-05-2006 16:41:09 |
Cómo obtener la fecha actual en una sqlquery | Mauro® | Conexión con bases de datos | 4 | 12-04-2006 15:23:39 |
Problemas al Isertar Cadenas con SQLQuery de DBExpress | chivofbv | Conexión con bases de datos | 0 | 10-11-2004 19:53:35 |
SQLQuery con IBExpress | Humberto Pertuz | Conexión con bases de datos | 2 | 05-11-2003 22:48:02 |
|