Valor padrão para TDBLookupComboBox. É possível? - Fórum DevMedia
Valor padrão para TDBLookupComboBox. É possível?
É possível atribuir um valor padrão para uma TDBLookupComboBox? Por exemplo, suponhamos o componente em questão exiba os registros de uma tabela de marcas de veículos (VW, Fiat, GM, Ford, Audi, BMW, etc.) e seja necessário que, já na abertura do formulário, a TDBLookupComboBox exiba ´BMW´... Com componentes TDBComboBox e TComboBox é fácil, mas é possível em TDBLookupComboBoxes? Agradeço desde já a atenção dispensada.
se vc fizer uma pesquisa na tabela de onde vem os dados do seu [b:f3f98a576e]TDBLookupComboBox[/b:f3f98a576e], procurando pelo código do item da lista por exemplo:
[b:f3f98a576e]var wMostra : Integer;[/b:f3f98a576e][i:f3f98a576e]//Armazena o código do item que quero fazer a pesquisa[/i:f3f98a576e]
QyItens.Close;
QyItens.Sql.Text := ´Select * from Marcas Order by Nome´;
QyItens.Open;
QyItens.Locate(´Codigo´,wMostra,[&93;);
Minutos após postar o presente questionamento, efetuei consulta a um outro fórum, quando então obtive o esclarecimento desejado. É incrível: desde que adotei o Delphi em dezembro de 2005 (em substituição ao VBA), praticamente não tenho qualquer dificuldade na lógica de programação, mas ´pequenos´ detalhes como esse estão acabando com minha (já escassa) produtividade. Há cerca de 5 dias estava debruçado sobre o problema sem uma solução! Tentei substituir o componente por um similar, mas outras anomalias inviabilizaram sua utilização. De qualquer forma, agradeço seu auxílio. Abaixo, a solução encontrada para definir um valor padrão para componentes DBLookupComboBox:
DBLookupComboBox.KeyValue := ´ValorDesejadoCompatívelComKeyField´;
Ocorre que como o KeyField do componente era um campo autonumeração, e portanto inteiro, eu insistia em atribuir um valor numérico sem as aspas simples. Resultado: o componente não exibia valor algum. Por exemplo, se o componente encontra-se vinculado a uma tabela de marcas de veículos com a seguinte estrutura:
E suas propriedades estão definidas como abaixo:
ListField = Marca
Para fazer com que o componente exiba uma determinada marca, por exemplo, ´BMW´, basta especificar a propriedade KeyValue com o código do campo ID respectivo (não se esquecendo de envolve-lo em aspas simples):
DBLookupComboBox.KeyValue := ´6´;
Se eventualmente a propriedade KeyField fosse o campo Marca, isto é, um valor não numérico:
DBLookupComboBox.KeyValue := ´BMW´;
Se um valor não cadastrado na tabela de origem é especificado, o DBLookupComboBox (ao menos aparentemente) permanece em branco, não retornando sequer uma mensagem de erro.