Pessoal porque JOIN não funciona no windows98

Delphi

15/07/2004

Pessoal utilizo este comando para buscar na tabela de clientes
todos que estão em atrazo, programo no XP, tudo funciona normal, quando leva p/ maquinas que teno o 98 o sistema trava literalmente!.
isto em varios computadores diferentes uso interbase 6.0

  With Tb_Debitos,Sql do
    begin
    Try
      Clear ;
      Add(´SELECT * FROM CLIENTES´);
      Add(´WHERE NOME IN ( SELECT DEBITO.NOME_CLIENTE´);
      Add(´FROM DEBITO´) ;
      Add(´LEFT JOIN DEBITO ON (DEBITO.NOME_CLIENTE = DEBITO.NOME_CLIENTE)´) ;
      Add(´WHERE DEBITO.DATA_VENCIMENTO <=:VarDataI)´);
      ParamByName( ´VarDataI´ ).AsDateTime :=(Now) - Dias ;
      Active := True ;
      Result:=True;
 Except



Essistemas

Essistemas

Curtidas 0

Respostas

Beppe

Beppe

15/07/2004

DEBITO.NOME_CLIENTE = DEBITO.NOME_CLIENTE naum vai ser sempre True?

A SQL poderia ficar assim, dando aliases ás tabelas:
SELECT * FROM
  CLIENTES
WHERE
  NOME IN (SELECT D1.NOME_CLIENTE FROM D1
    LEFT JOIN DEBITO D2 ON (D1.NOME_CLIENTE = D2.NOME_CLIENTE) 
    WHERE D2.DATA_VENCIMENTO <=:VarDataI)



GOSTEI 0
Aroldo Zanela

Aroldo Zanela

15/07/2004

Colega,

A eficiência de gerenciamento de memória no W98 é inferior a do XP, bem como, o uso de subqueries com o operador IN degrada bastante suas consultas. No entanto, apesar de não ter utilizado Interbase, não me recordo de nenhum apontamento análogo. As configurações de hardware das máquinas são adequadas? A rede está certificada?


GOSTEI 0
Adilsond

Adilsond

15/07/2004

with Tb_Debitos,Sql do
  begin
    try
      Clear;
      Add(´SELECT *´);
      Add(´FROM CLIENTES´);
      Add(´INNER JOIN DEBITO´);
      Add(´  ON (DEBITO.NOME_CLIENTE = CLIENTES.NOME)´);
      Add(´WHERE DEBITO.DATA_VENCIMENTO <= :VarDataI´);
      ParamByName(´VarDataI´).AsDateTime := Now - Dias;
      Active := True;
      Result:=True;
    except



GOSTEI 0
POSTAR