Lookup recuperando 2 campos

29/07/2008

4

olá, na tabela AGENDA eu tenho dois campos ID_DIA e ID_HORA, que são FK (chave estrangeiras) das tabelas DIAS e HORAS.

alguem sabe se tem como fazer num unico campo Lookup (na tabela AGENDA), recuperar as informaçoes desses dois campos (DIA - HORA)?

ex: no DBLookupComboBox (tabela_agenda.lookupDia) iria ter algo como:

Segunda-feira - 09:00:00
Terça-feira - 10:00:00

eu consigo fazer isso no OnGetTex do campo lookup da seguinte maneira:
procedure TDM.cdsCliProdlkDiaGetText(Sender: TField; var Text: string;
  DisplayText: Boolean);
begin
  text := cdsFuncHoralkDia.Text + ´ - ´ + cdsFuncHoralkHorario.Text;
end;


o problema é que isso só retorna o dia - hora na propriedade text do DBLookupComboBox (como visto na figura abaixo), e eu gostaria que ao clicar e abrir o DBLookupComboBox o dia - hora ja estivessem ali.

[img:a73fd0bf4e]http://www.nucleoactus.com.br/images/lookup.jpg[/img:a73fd0bf4e]

abraços a todos!


Responder

Posts

29/07/2008

Aroldo Zanela

Colega,

SeuDbLookup.ListField := ´campo1;campo2´;



Responder

29/07/2008

Mahdak

[quote:d68950b07a=´Aroldo Zanela´]Colega,

SeuDbLookup.ListField := ´campo1;campo2´;
[/quote:d68950b07a]

tudo bem Aroldo?

ai é que ta o problema, eu nao tenho o componente DBLookupComboBox meu campo lookup é um Combo no DBgrid e nao achei a propriedade ListField nem no campo lookup no ClientDataset, e nem no DBgrid...

e agora?


Responder

30/07/2008

Aroldo Zanela

Colega,

Neste caso, usando POG no evento OnCalcFields, faça a concatenação dos campos. Serve?


Responder

30/07/2008

Mahdak

tava tudo tao mestre/detalhe pra eu ter que usar POG eheheh...

consegui resolver a questão utilizando a dica contida aqui: http://delphi.about.com/od/usedbvcl/l/aa101403b.htm e fazendo algumas modificações na estrutura de minhas tabelas.

// Obs: o segredo é ter um campo na tabela de origem com os valores que serao gravados no campo da tabela de destino.
  with DM.cdsFuncHora do
  begin
    FieldByName(´lkdia´).DisplayWidth:=15;
    FieldByName(´lkHorario´).DisplayWidth:=15;
  end;

  with cbHorario do
  begin
    DataSource  := DM.dsCliProd;      // ds que o registro será gravado (destino)
    ListSource  := DM.dsFuncHora;     // ds em que o lookup buscará os dados (origem)
    DataField   := ´HORARIO´;         // campo do DataSource que será gravado o registro (destino)
    ListField   := ´lkdia;lkHorario´; // Lista de valores que será exibido no ComboBox (origem)
    KeyField    := ´HORARIO´;         // registro do ListSource que será enviado para o campo DataField (origem para Destino)

    Visible := false;
    DropDownWidth := 200;
  end;
  //-----------------------------------------------------


valeu!


Responder

30/07/2008

Mahdak

aliás, quem quiser material relacionado a essa questão segue alguns links interessantes abaixo:

http://delphi.about.com/od/usedbvcl/l/aa081903a.htm

http://delphi.about.com/od/usedbvcl/l/aa092703a.htm

http://delphi.about.com/od/usedbvcl/l/aa121503a.htm

http://delphi.about.com/od/usedbvcl/l/aa101403b.htm


Responder