27/08/2004

Campo Lookup

Boa tarde,

Estou com um probleminha com um campo lookup.

Uso base de dados Access e conexão ADO.

Em um ADOQuery criei esse campo Lookup que me dá o nome do cliente que está em outra tabela.
O conteúdo da tabela está sendo exibida em um DBGrid.
A principio o campo está funcionando perfeitamente.

O problema é o seguinte:

O sistema faz uma consulta SQL (SELECT), até aí tá tudo funcionando direitinho. O problema é quando o usuário retira o filtro e o sistema faz outra conulta SQL (SELECT * FROM Tab_SaidaProduto), o conteúdo do campo LoockUp fica em branco.

Já tentei dar um refresh, e um open na tabela mas nao resolveu!

Alguém tem alguma idéia????

With DMDados Do Begin
   TabClientes.SQL.Clear;
   TabClientes.SQL.Add(´SELECT * FROM Tab_Clientes WHERE Nome LIKE ´ + QuotedStr(ComboClientes.Text));
   TabClientes.Open;
   If (TabClientes.RecordCount > 0) Then Begin
      TabSaidaProdutos.SQL.Clear;
      TabSaidaProdutos.SQL.Add(´SELECT * FROM Tab_Saida WHERE CodCliente = ´ + TabClientes.FieldByName(´Codigo´).AsString + ´ ORDER BY Data´);
      TabSaidaProdutos.Open;

      TabParcelas.SQL.Clear;
      TabParcelas.SQL.Add(´SELECT * FROM Tab_Parcelas WHERE CodVenda = ´ + TabSaidaProdutos.FieldByName(´Codigo´).AsString + ´ AND Paga = False ORDER BY NumParc´);
      TabParcelas.Open;

      TabParcelasPagas.SQL.Clear;
      TabParcelasPagas.SQL.Add(´SELECT * FROM Tab_Parcelas WHERE CodVenda = ´ + TabSaidaProdutos.FieldByName(´Codigo´).AsString + ´ AND Paga = True ORDER BY NumParc´);
      TabParcelasPagas.Open;

      //RECALCULA TOTAIS DE SAIDA
      FormBaixaCliente.TabSaidaProdutos1.SQL.Clear;
      FormBaixaCliente.TabSaidaProdutos1.SQL.Add(´SELECT SUM(ValorTotal) AS Total,  SUM(VTotalComJuros) AS VTotalJuros FROM Tab_Saida WHERE CodCliente = ´ + TabClientes.FieldByName(´Codigo´).AsString);
      FormBaixaCliente.TabSaidaProdutos1.Open;

      PanelVTotalVendas.Caption := FormatFloat(´R$ #,0.00;(R$ ,0.00)´, FormBaixaCliente.TabSaidaProdutos1.FieldByName(´Total´).AsFloat);
      PanelTotalJuros.Caption := FormatFloat(´R$ ,0.00;(R$ ,0.00)´, TabSaidaProdutos1.FieldByName(´VTotalJuros´).AsFloat - TabSaidaProdutos1.FieldByName(´Total´).AsFloat);
      PanelTotalCJuros.Caption := FormatFloat(´R$ ,0.00;(R$ ,0.00)´, TabSaidaProdutos1.FieldByName(´VTotalJuros´).AsFloat);
   End;
   //---------------------------------------------------------------------------------
  //AQUI O USUÁRIO TIRA O FILTRO
   If (ComboClientes.Text = ´´) Then Begin
      TabSaidaProdutos.SQL.Clear;
      TabSaidaProdutos.SQL.Add(´SELECT * FROM Tab_Saida ORDER BY Data´);
      TabSaidaProdutos.Open;

      TabParcelas.SQL.Clear;
      TabParcelas.SQL.Add(´SELECT * FROM Tab_Parcelas WHERE CodVenda = ´ + TabSaidaProdutos.FieldByName(´Codigo´).AsString + ´ AND Paga = False ORDER BY NumParc´);
      TabParcelas.Open;

      TabParcelasPagas.SQL.Clear;
      TabParcelasPagas.SQL.Add(´SELECT * FROM Tab_Parcelas WHERE CodVenda = ´ + TabSaidaProdutos.FieldByName(´Codigo´).AsString + ´ AND Paga = True ORDER BY NumParc´);
      TabParcelasPagas.Open;

      AtualizaSoma(Sender);
   End;
End;



André Maretti