Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hargon

Combo Box

Recommended Posts

Vou tentar ser claro...

eu tenho uma tabela "TBLUser"

que contem, CodigoUser(auto incremento), NomeUser(texto), CidadeUser(inteiro)

 

e uma tabela "TBLCidade"

que contem, CodigoCidade(inteiro), NomeCidade(texto)

 

Minha dúvida é a seguinte...

como faço para exibir no Combo Box o Nome da cidade do Usuário pelo seu código? Seria uma espécie de relacionamento...

 

exemplo temos um registro da TBLUser: 001, Jorge Luíz, 002

na TBLCidade: 002, São Paulo,

 

então na combo box devera exibir São Paulo quando for apresentar os dados desse usuário, e não o número da cidade...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Hargon, Para isso, após carregar os dados do usuário, você deve fazer um novo select (Se estiver usando SQL) para buscar o nome da cidade. Por exemplo: "Select NomeCidade From TBLCidade Where CodigoCidade="& rsUsuario("CidadeUser") Espero ter ajudado.Um abraço, Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exato, isso faria com que fosse mostrado o Nome da cidade...

mas e caso eu venha alterar a cidade como ele faria para gravar apenas o código da cidade?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi !!!

 

Uma maneira de se fazer isso (não sei se é a mais fácil ou a mais correta) é utilizar uma outra Combo, escondida (Propriedade Visible=False), que contenha os códigos da cidade.

 

Por exemplo, em tempo de execução, você carrega a combo cidades com os nomes das cidades e simultaneamente, carrega a segunda combo com os códigos.

 

No evento Click da combo cidades, você move a segunda combo para o mesmo índice da combo cidades, desta maneira, você tem como saber o código da cidade.

 

Private Sub cmbCidades_Click()

cmbCODCidade.ListIndex = cmbCidades.ListIndex

End Sub

 

Talvez resolva...

 

Espero ter ajudado.

 

Um abraço,

Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi !!!

 

Uma maneira de se fazer isso (não sei se é a mais fácil ou a mais correta) é utilizar uma outra Combo, escondida (Propriedade Visible=False), que contenha os códigos da cidade.

 

Por exemplo, em tempo de execução, você carrega a combo cidades com os nomes das cidades e simultaneamente, carrega a segunda combo com os códigos.

 

No evento Click da combo cidades, você move a segunda combo para o mesmo índice da combo cidades, desta maneira, você tem como saber o código da cidade.

 

Private Sub cmbCidades_Click()

cmbCODCidade.ListIndex = cmbCidades.ListIndex

End Sub

 

Talvez resolva...

 

Espero ter ajudado.

 

Um abraço,

Eduardo

Acho que seria ideal usar uma array no lugar do segundo combo, não que dessa maneira esteja errado, mas acho que ficaria mais profissional.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu já uso isso de outra maneira

 

se estiver usando ADO. usa o DATACOMBO e as propriedades ListField, DataField e BoundColumn que já resolve o problema, se tiver usando o Data Environment , fica mais fácil ainda.

 

agora, se não quiser {pra nao ter que shippar mais uma DLL no projeto} usa a propriedade ITEMDATA do combobox { que é como uma array que o Proteus falou, mas não precisa instanciar nada além do Combo que já está no form }

 

pra popular um combo com itemdata use um contador

 

cont = 0Do While Not myRST.EoF   Combo1.AddItem myRst.NomeCidade   Combo1.ItemData(cont) = myRST.CodigoCidade   cont = cont +1   myRST.MoveNextLoop

 

e quando voce quiser saber o código da opcao seleciona use:

 

If combo1.ListIndex > -1 Then 'Ignora se nao selecionou nenhum   CodSelecionado = Combo1.ItemData(Combo1.ListIndex)End If

Xerto manu?

 

Flows

 

Edição Posterior:

Detalhe que não posso esquecer de mencionar, o ITEMDATA permite apenas inserção de números

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pessoal, essas soluções parecem ser eficientes... vou tentar aqui, Valeu :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.