Lookup recuperando 2 campos
29/07/2008
0
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!
Mahdak
Posts
29/07/2008
Mahdak
SeuDbLookup.ListField := ´campo1;campo2´;
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?
30/07/2008
Aroldo Zanela
Neste caso, usando POG no evento OnCalcFields, faça a concatenação dos campos. Serve?
30/07/2008
Mahdak
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!
30/07/2008
Mahdak
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
Clique aqui para fazer login e interagir na Comunidade :)