Valor padrão para TDBLookupComboBox. É possível?

21/02/2006

Prezados colegas:

É 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.


Spiritwwwalker

Respostas

22/02/2006

Paullsoftware

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;);


Espero ter ajudado...


Responder Citar

22/02/2006

Spiritwwwalker

Prezado Paull:

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:

ID Marca
1 VW
2 Fiat
3 GM
4 Ford
5 Audi
6 BMW
7 Renault

E suas propriedades estão definidas como abaixo:
KeyField = ID
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.


Responder Citar

23/02/2006

Paullsoftware

ok!


Responder Citar