Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Filtro Sql en campo cómun a dos tablas (https://www.clubdelphi.com/foros/showthread.php?t=93239)

GINMARMENOR 26-06-2018 01:18:55

Filtro Sql en campo cómun a dos tablas
 
Buenas noches, tengo dos tablas Pedidos y Pedidos Ampliación, con el campo en común que se Partida, quiero filtrar sólo una partida en Rave Report, que justamente es la del campo en camún, pero me da el siguiente error "attempt to execute an unprepared dynamic sql statement", en cambio filtro por otro campo y funciona, no sé si será por que filtro sólo por el campo en común que es "PARTIDA", podríais ayudarme, éste es el código.

Código Delphi [-]
procedure TFormCuadroPartida.Button1Click(Sender: TObject);
begin
  formListados.IBQueryPedidosyPedidosAmpliacion.Filtered:=false;
  FormLIstados.IBQueryPedidosyPedidosAmpliacion.Active;
  FormLIstados.IbQuerypedidosyPedidosAmpliacion.Filtered:=true;
  with FormListados.IBQueryPedidosyPedidosAmpliacion do
  begin
    close;
    sql.Clear;
    sql.Text:='Select * from pedidos inner join PedidosAmpliacion on pedidos.partida=PedidosAmpliacion.Partida where partida=' 
      + Quotedstr (EditPartida.text);
    open;
    FormListados.RvProyectoPedidos.ExecuteReport('ReportQueryPartida');
  end;
end;

Gracias.

olbeup 26-06-2018 09:14:45

Hola GINMARMENOR,

No es un error sino una ambigüedad, el motor de base de datos no sabe por cual tiene que filtrar, por pedidos o PedidosAmpliacion, si es por pedidos en el where tienes que poner pedidos.partida y si por la otra pues lo mismo PedidosAmpliacion.partida.

Seguramente cuando pones otro campo ese campo no está en la otra tabla y al no estar el motor de base de datos asume por defecto la tabla.

Un saludo.

Casimiro Notevi 26-06-2018 10:55:09

Código SQL [-]
Select p.* from pedidos p 
inner join PedidosAmpliacion a on p.partida=a.Partida where p/a.partida=
Como dice olbeup, no sabe a qué partida se refiere, pon siempre alias para tener claro a qué tabla te refieres cuando trabajas con más de una en una sentencia.

GINMARMENOR 26-06-2018 23:29:23

Gracias¡¡¡¡, funciona


La franja horaria es GMT +2. Ahora son las 19:50:36.

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