Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   error en deleteSQL (https://www.clubdelphi.com/foros/showthread.php?t=31952)

joanajj 23-05-2006 01:16:03

error en deleteSQL
 
Buenas a todos, tengo este código en el DeleteSQL de FIBPlus(trial):

Código SQL [-]
DELETE FROM
    facturas
WHERE
        INCREMEN = ?VALOR2
y al pasarle el parametro de la siguiente manera:

dtDETAIL.active:=false;

dtDETAIL.ParamByName('VALOR2').Value:=strtoint(edit2.Text);
dtDETAIL.Active:=true;

form1.dtDETAIL.Delete;

la aplicación me da por error que el parametro VALOR2 no existe en form1.dtDETAIL y no veo cual es mi error, si alguien me puede ayudar.

Gracias...

anghell77 23-05-2006 06:45:15

Probablemente
 
Hola!

Mira, a mi entender, que no es mucho, pero espero que pruebes, te esta ocasionando un error porque tienes el componente Query en el Form, mas no es necesario que la mandes llamar con Form1.Query

yo he empleado SQL en Query's como tu

Delete from Tabla
where Campo=: parametro

ya en tu codigo(donde ejecutes el query):

Query1.Close; //no se si esta instruccion esté demás en los Delete's, pero igual yo la empleo.
Query1.ParamByName('parametro').as(tipo):=trim(EDIT1.Text);
(En tu caso la operacion de conversion despues del parametro)
y al finalizar
Query1.EXECSQL;

Como lo entiendo, supongo que no ejecuta el DELETE, porque le falta la instruccion EXECSQL, que se emplea tanto para los DELETE, como para los INSERT y los UPDATE...

En una consulta normal (select *from....) si sirve el Query1.Active:=true;
o Query1.Open;

Intenta ese codigo. pero, ¡¡¡atento!!!, como te señalé, es mi punto de vista y probablemente haya confundigo tu pregunta con mis procedimientos. Pruebalo cuidadosamente....(pudiera parecer falta de confianza en mi, pero estar prevenido es mejor no??)

Saludos

anghell77 23-05-2006 06:54:12

Error por no leer historial!!
 
:eek:
Leyendo tus mensajes anteriores vi que empleas FIREBIRD...

y....te di algo que probablemente no funcione en FIREBIRD, de lo cual no se mas que el nombre y su pronunciación..

Así que, no sé si la instruccion EXECSQL, sólo aplique para Paradox o también para FIREBIRD:confused: :confused: , por lo tanto a nombre de JoanaJJ, pido que alguien le brinde ayuda....

y lo siento si te he confundido..... y si no ha sido asi y te ha ayudado...pues
puedo sentirme menos torpe....jejeje:D

Lepe 23-05-2006 18:47:18

No hace falta más ayuda, tú la has brindado correctamente ;).

Usando Access he visto por el foro que no hay que usar .ExecSql pero, por regla general se usa .Open para consultas de selección y .ExecSql para consultas de acción (update, insert, create, etc).

En algún hilo he visto como se usa .Open para crear desde delphi un Store Procedure, pero no he hecho pruebas.

Ahora que lo pienso... quizás esté liando más la cosa :D

Prueba los MDOLIB (Mercury Data Object) son diferentes a los FIBPlus pero son OpenSource ;)

joanajj 23-05-2006 19:55:23

Gracias a todos
 
Gracias por la respuesta, probaré para ver si hay suerta y ya os cuento.

Un saludo...

joanajj 24-05-2006 00:24:37

solucionado
 
Buenas de nuevo, ya está resuelto el problema(buscando por el foro). Al no especificar nada, el parametro se pasaba al SQLSelect, y para pasarlo al SQLdelete me faltó poner:

dtdetail.QDelete.ParamByName('valor2').Value:=strtoint(edit2.Text);

Gracias por vuestra ayuda...


La franja horaria es GMT +2. Ahora son las 10:33:55.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi