Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   ayuda sql (https://www.clubdelphi.com/foros/showthread.php?t=55103)

sargento elias 08-04-2008 12:17:12

ayuda sql
 
Buenos días.Quiero hacer un borrado de CARTERA por filtro pasandome el cod.
Tabla CUENTA : id,cod.
Tabla CARTERA: id,idc,des.

este es el código:(Los demás filtros me funcionan).

Código SQL [-]
 

vsql:= 'DELETE FROM CARTERA ';
VWHE:='';
 
vsql:= vsql + 'INNER JOIN CUENTA ON CUENTA.ID = CARTERA.IDCTA ';
                    if Fvacio(Edesde.Text)=false then
                    begin
                          if vwhe <> '' then
                              vwhe:= vwhe + ' and  CUENTA.COD >='+ quotedstr(Edesde.text)
                          else
                              vwhe:= 'where CUENTA.COD >='+ quotedstr(Edesde.text);
                    end;
                    if Fvacio(Ehasta.Text)=false then
                    begin
                          if vwhe <> '' then
                              vwhe:= vwhe + ' and  CUENTA.COD <='+ quotedstr(Ehasta.text)
                          else
                              vwhe:= 'where CUENTA.COD <='+ quotedstr(Ehasta.text);
                    end;
vsql:=vsql + vwhe;
ib.Active:=false;
ib.DELETESQL.Clear;
 ib.DELETESQL.Text:=vsql;
 ib.active:=true;
 ib.Delete;
t.commit;

y este es el error:

Dynamic Sql error sql = -104 token unknow line 1,char 21 INNER'

Seguro que es una gilipollez pero no lo veo.

gluglu 08-04-2008 12:37:57

En una sentencia DELETE no pinta nada un join !!

Por eso no reconoce la palabra INNER JOIN. :rolleyes:

sargento elias 08-04-2008 13:09:47

y como lo hago?
 
y como hago para borrar la tabla CARTERA pasándole un campo de otra TABLA?AYUDA PLEASE!

gluglu 08-04-2008 14:04:48

No he analizado tu problema concretamente, pero en general puedes pasar cualquier parámetro a una sentencia DELETE sin más.

Algo así como :
Código SQL [-]
DELETE from Tu_Tabla
where Campo1 = Condicion1
and Campo1 = Condicion2
and Campo2 = Condicion3

Es cuestión de que incluyas tus condiciones después del 'where', pero no tiene sentido utilizar ningún 'join'.

Sin entrar mucho, insisto, en el fondo de tu problema :

Código SQL [-]
DELETE FROM CARTERA 
where IDCTA = CUENTA.ID

Si lo que necesitas es localizar previamente la cuenta correspondiente en tu tabla CUENTA, lo tendrás que hacer con, p.ej., un Locate

Código Delphi [-]
CUENTA.Locate(COD, ....)

No sé si es a eso a lo que te refieres. :o

sargento elias 08-04-2008 15:49:10

si bueno
 
Como tu dices no lo he probado, directamente he hecho una funcion que le pasara un select y me devolviera el ID, para luego utilizarla en el delete como idc, gracias de todos modos.


La franja horaria es GMT +2. Ahora son las 11:39:12.

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