PDA

Ver la Versión Completa : Error en consulta SQL (delete FROM ...)


orfeo
12-05-2003, 04:39:06
hola, estoy usando Paeadox la que trae delphi 6 (creo que es paradox 7), nesecito borrar un par de tuplas, el codigo es:

NOTA: (OTMKey:string; idTrabajo:integer)

dmSPI.Qtemp.close;
dmSPI.Qtemp.SQL.Clear;
dmSPI.Qtemp.SQL.Append('DELETE');
dmSPI.Qtemp.SQL.Append('FROM irh');
dmSPI.Qtemp.SQL.Append('WHERE irh.otm=:OTM and irh.idTrabajo=:idTrabajo');
dmSPI.Qtemp.ParamByName('OTM').AsString:=OTMKey;
dmSPI.Qtemp.ParamByName('idTrabajo').AsInteger:=idTrabajo;
qmSPI.Qtemp.open;

luego del open, borra las tuplas, pero salta un error de excepcion mostrando el texto: `error creating cursor handle` (tanquilamente podria encerrar el open entre 'try execpet end', pero no parece correcto)

de que es el Error? la consulta parece correcta, borra las tuplas...


Otra Preg:
Por otro lado, en que parte de la Ayuda, esta la descripcion de cada Texto de las excepcion del sistema. Hya una tabla que tenga Texto de Excepcion con su descripcion? Similar a la tabla de errores del compilador.

marcoszorrilla
12-05-2003, 07:43:05
Las consultas de acción deben de abrirse con la instrucción:
MiQuery.ExecSql;

y no Open.


Otra cosa que acabo de ver:

MiQuery.Sql.Add('Bla....');
no Append.

Un Saludo.

andres1569
12-05-2003, 09:47:29
Hola:

Contestando a la segunda pregunta, esos textos no están en la ayuda. Dependiendo del tipo de Excepción (cada unit declara sus Exceptions propias) se acude a unas constantes de cadenas almacenadas en archivos .pas (const.pas, dbconst.pas ...) aunque es posible que sólo dispongas de los archivos ya compilados .dcu.

Si te interesa una traducción de las mismas, en esta misma web, sección recursos (mira el menu de la izquierda) están traducidas al castellano las cadenas utilizadas para varias versiones de Delphi, ahi verás muchos de los textos en inglés-castellano de las excepciones más frecuentes.

Un saludo

orfeo
15-05-2003, 04:13:53
Posteado originalmente por marcoszorrilla
Las consultas de acción deben de abrirse con la instrucción:
MiQuery.ExecSql;

y no Open.

Otra cosa que acabo de ver:

MiQuery.Sql.Add('Bla....');
no Append.

Un Saludo.

Cual son las intrucciones de accion? son las que modifican datos en la DB?


Y por lo de .add es porque te gusta el sql.add? o por alguna razon importante, porque a mi me gusta el append porque le haces un sql.clean y te olvidas del indice del arreglo de string.


Un saludo tambien..
ha y gracias a todos los que respondieron Y respondera...

marcoszorrilla
15-05-2003, 08:05:06
Las consultas que no devuelven datos, sino que realizan acciones sobre las tablas deben de abrirse con ExecSql.

Un Saludo.

__cadetill
15-05-2003, 09:46:23
Hola Marcos

creo que lo que el quiere es saber cuales son

La unica sentencia SQL que devuelve registros es la sentencia Select (si no voy equivocado)
Las demas sentencias SQL (insert, update, delete, create, alter,....) no devuelven valores y, por tanto, deven de ejecutarse mediante ExecSQL

No se si asi queda aclarada la duda :p

roman
15-05-2003, 10:07:09
Posteado originalmente por cadetill
La unica sentencia SQL que devuelve registros es la sentencia Select (si no voy equivocado)

Sólo aclarar que aunque en Paradox lo más seguro es que esto sea cierto en otros casos no. Por ejemplo, en MySql hay sentencias como "show tables", "describe fields" y otras que también devuelven registros. Me imagino que en otros sistemas habrá sentencias similares.

// Saludos

orfeo
16-05-2003, 03:41:34
la verdad es que el ExecSql andubo, ya no salta la exceppcion...

Gracias a todos...


Y por el intento de hacerme entender que son 'Las consultas de acción'

voy a colaborar diciendo, que son las que "no devuelven datos" :) almenos es lo que dice el help, y da ejemplos como crete, insert, etc...

Gracias, de vuelta.