Como preencho DBCombobox com os dados do banco ?
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 !
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
Curtidas 0
Melhor post
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
04/02/2008
Olá,
tente assim:
Espero ter ajudado...
Att
Dalton
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
04/02/2008
Colega,
Substitua o dbComboBox por um dbLookUpCombo.
Substitua o dbComboBox por um dbLookUpCombo.
GOSTEI 0
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.
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
04/02/2008
Colega,
ListSource - É a fonte de dados;
DataSource - É onde deverá aplicar as mudanças.
ListSource - É a fonte de dados;
DataSource - É onde deverá aplicar as mudanças.
GOSTEI 0
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.
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
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+
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
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...
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
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
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
Ok
GOSTEI 0
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
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.
[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