Como preencho DBCombobox com os dados do banco ?

Delphi

04/02/2008

Pessoal, sou iniciante em Delphi portanto minha dúvida pode ser um tanto básica.

Montei um form e nele tenho 1 DBCombobox que carrega o nome de várias cidades e ao selecionar uma cidade quero mostrar os bairros dela num DBGrid.

Estou usando ClientDataSet e banco Firebird.

Meu primeiro problema é popular o DBCombobox com os dados vindos do ClientDataSet.

Eu gostaria de usar o ClientDataSet pois ele vai me ajudar a trabalhar com outros componentes vinculados ao banco de dados, pois quando o usuário selecionar algum valor no DBCombobox o ClientDataSet vai apontar o restante dos campos do meu form (que depois vou colocar no form) para o registro selecionado.


Agradeço a quem puder ajudar. Obrigado !


Gustavo_marcon

Gustavo_marcon

Curtidas 0

Melhor post

Aroldo Zanela

Aroldo Zanela

08/02/2008

[quote:8777643455=´gustavo_marcon´][quote:8777643455=´Aroldo Zanela´]Colega, ListSource - É a fonte de dados; DataSource - É onde deverá aplicar as mudanças.


Aroldo, eu tenho um DataSource que coloquei na tela que é minha fonte de dados, ou seja é o valor da minha propriedade ListSource, mas não entendi quando vc disse que na propriedade DataSource eu coloco o DS onde deverá aplicar as mudanças. pois eu n quero salvar os dados em lugar nenhum, mas só popular o combo com o valor vindo do meu DataSource.[/quote:8777643455]

Mas vcs entenderam o que eu quis dizer no post acima ???

Eu nao quero colocar os dados de uma tabela pra outra, só quero popular um combo, entao nao entendi o porque de precisar dois DataSources.[/quote:8777643455]

Colega,

Então faça o seguinte:

KeyField -> Campo chave que o componente obtem o valor para atribuir a propriedade KeyValue após a seleção de um item;
ListField -> Campo que será exibido na listagem
ListSource -> Origem dos dados


GOSTEI 1

Mais Respostas

Dbergkamps10

Dbergkamps10

04/02/2008

Olá,
tente assim:
TableCidades.first;
while not TableCidades.Eof do
 begin
 DbCombox1.Items.add(TableCidadesNome.AsString);
 tableCidades.next;
 end;

Espero ter ajudado...

Att
Dalton


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

04/02/2008

Colega,

Substitua o dbComboBox por um dbLookUpCombo.


GOSTEI 0
Gustavo_marcon

Gustavo_marcon

04/02/2008

Quando coloco um DbLookupCombo ele aparece desabilitado na tela, não entendi o porque.

Ele tem duas propriedades, uma chamada ListSource e outra chamada DataSource , qual devo informar e com o que ?

Eu coloquei na tela um DataSource e este liguei com meu ClientDataSet que está num DataModule, mas não funcionou.


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

04/02/2008

Colega,

ListSource - É a fonte de dados;
DataSource - É onde deverá aplicar as mudanças.


GOSTEI 0
Gustavo_marcon

Gustavo_marcon

04/02/2008

[quote:2df3c07381=´Aroldo Zanela´]Colega,

ListSource - É a fonte de dados;
DataSource - É onde deverá aplicar as mudanças.[/quote:2df3c07381]

Aroldo, eu tenho um DataSource que coloquei na tela que é minha fonte de dados, ou seja é o valor da minha propriedade ListSource, mas não entendi quando vc disse que na propriedade DataSource eu coloco o DS onde deverá aplicar as mudanças. pois eu n quero salvar os dados em lugar nenhum, mas só popular o combo com o valor vindo do meu DataSource.


GOSTEI 0
Andepunk

Andepunk

04/02/2008

faz assim é o melhor que tem e mais facil...

usa um TFlatDBLookupCombo liga uma DataSource nele em events lookupsource carregando todos os clientes em um SQL, depois no form show voce colocar assim: nomedaquery.Open;

qualquer duvida manda aew existem milhoes de componentes em delphi para fazer isso...t+


GOSTEI 0
Onjahyr

Onjahyr

04/02/2008

[quote:3651074a5a=´Aroldo Zanela´]Colega,

Substitua o dbComboBox por um dbLookUpCombo.[/quote:3651074a5a]

Sem complicar, o colega tá mostrando um componente que não vem com o Delphi, esse tal de Flat....

Segui a dica do [b:3651074a5a]Aroldo Zanela[/b:3651074a5a] que vai funcionar, é a mesma coisa só que não é Flat e não precisa procurar componentes de terceiros...


GOSTEI 0
Andepunk

Andepunk

04/02/2008

[quote:942c4d8c8f=´Aroldo Zanela´]Colega, Substitua o dbComboBox por um dbLookUpCombo.


Sem complicar, o colega tá mostrando um componente que não vem com o Delphi, esse tal de Flat....

Segui a dica do [b:942c4d8c8f]Aroldo Zanela[/b:942c4d8c8f] que vai funcionar, é a mesma coisa só que não é Flat e não precisa procurar componentes de terceiros...[/quote:942c4d8c8f]

Sim e o que isso tem a ver... voce nao vai querer ficar a vida toda usando os recursos pobres que o delphi traz neh, fala serio amigo....


GOSTEI 0
Onjahyr

Onjahyr

04/02/2008

Bom, não vou criar caso com isso, cada um tem sua opinião. Eu prefiro criar um programa onde vou ter compatibilidade com as outras versões do Delphi. Se eu quiser implementar funcionalidades eu mesmo crio meus componentes. Claro, existem componentes que vale a pena, mas enfeite?! Prá mim não vale a pena.... (não vamos criar flames... eu disse é minha opinião).

Ok


GOSTEI 0
Gustavo_marcon

Gustavo_marcon

04/02/2008

[quote:a0f0d2c70c=´Aroldo Zanela´]Colega, ListSource - É a fonte de dados; DataSource - É onde deverá aplicar as mudanças.


Aroldo, eu tenho um DataSource que coloquei na tela que é minha fonte de dados, ou seja é o valor da minha propriedade ListSource, mas não entendi quando vc disse que na propriedade DataSource eu coloco o DS onde deverá aplicar as mudanças. pois eu n quero salvar os dados em lugar nenhum, mas só popular o combo com o valor vindo do meu DataSource.[/quote:a0f0d2c70c]

Mas vcs entenderam o que eu quis dizer no post acima ???

Eu nao quero colocar os dados de uma tabela pra outra, só quero popular um combo, entao nao entendi o porque de precisar dois DataSources.


GOSTEI 0
Onjahyr

Onjahyr

04/02/2008

Bom, se for o que entendi, então em vez de usar um DBCombo, por quê não usar um simples TComboBox, no onshow da form você chama os dados (referente ao campo desejado) para dentro dele, no evento onChange do TComboBox você faz a referência para seu DBGrid mostrar o que deseja.

[b:92f737d1e6]Para preencher o TComboBox com todos os registros de um campo você lê este artigo:[/b:92f737d1e6]
[url]https://www.devmedia.com.br/articles/viewcomp.asp?comp=2592[/url]

No evento onChange do TComboBox você faz um [b:92f737d1e6]case[/b:92f737d1e6] para chamar na tabela o que deseja, automaticamente vai aparecer no DBGrid (se estiver ligado a tabela)...


Bom, se foi isso que eu entendi.

Blz.


GOSTEI 0
POSTAR