Jump to content
Fórum Script Brasil
  • 0

Carregando o Combo com dois valores no display member


MarceloSC

Question

Olá a todos.

Gostaria de saber se tem possibildade de carregar um combo pelo dataSouce, com dois valores no displayMember???

Na classe eu tenho essa função:

'Carrega o combo de Fornecedor na Tela de COMPRAS

Public Function carregarComboFornecedor() As DataTable

SQL = "Select * from CLIENTE_FORNECEDOR where FLAGFORN = 'T' order by FANTASIA"

Dim OBJDA As New SqlClient.SqlDataAdapter(SQL, ObjBanco.objconexao)

OBJDS.Tables.Clear()

OBJDA.Fill(OBJDS)

Return OBJDS.Tables(0)

End Function

No formulário no LOAD:

comboFornecedor.DataSource = objFornecedor.carregarComboFornecedor

O ValueMember = idFornecedor

O DisplayMember = nomeFornecedor

Agradeço antecipadamente

Marcelo

Edited by MarceloSC
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Não entendi sua dúvida... Você tá atribuindo corretamente o DataSource e definindo o Value/Display Member. Se você quer mostrar duas informações tipo: "Nome Fornecedor - Cidade", você pode concatenar isso no SELECT.

SELECT idFornecedor, nomeFornecedor + ' - ' + cidade AS fornecedor FROM cliente_fornecedor WHERE flagforn = 'T' ORDER BY fantasia"

Assim, no DisplayMember você atribui o campo fornecedor.

Link to comment
Share on other sites

  • 0
Não entendi sua dúvida... Você tá atribuindo corretamente o DataSource e definindo o Value/Display Member. Se você quer mostrar duas informações tipo: "Nome Fornecedor - Cidade", você pode concatenar isso no SELECT.

SELECT idFornecedor, nomeFornecedor + ' - ' + cidade AS fornecedor FROM cliente_fornecedor WHERE flagforn = 'T' ORDER BY fantasia"

Assim, no DisplayMember você atribui o campo fornecedor.

Obrigado Xistyle.

Funcionou em parte.

Esses são os campos e seus tipos:

ID INT (PK)

codigo INT

fantasia STRING

endereco STRING

É o seguinte:

* Quando ponho no select, campos do tipo STRING, funciona perfeitamente. E O combo é carregado com o dois valores.

SQL = "SELECT id, ENDERECO + ' - ' + FANTASIA AS nomeNoDisplayMember FROM cliente_fornecedor WHERE flagforn = 'T' ORDER BY fantasia"

ou

SQL = "SELECT ENDERECO + ' - ' + FANTASIA AS nomeNoDisplayMember FROM cliente_fornecedor WHERE flagforn = 'T' ORDER BY fantasia"

* Mas quando ponho no select campos do tipo INT, dá esse erro:

Falha ao converter o nvarchar valor 'NICOLA YAMADA BEL.' para o tipo de dados int.

SQL = "SELECT CODIGO + ' - ' + FANTASIA AS nomeNoDisplayMember FROM cliente_fornecedor WHERE flagforn = 'T' ORDER BY fantasia"

Se você poder me ajudar??

Abraço

Marcelo

Link to comment
Share on other sites

  • 0

Você tem que fazer uma conversão quando vai concatenar campos de tipos diferentes. Nesse caso, tente desta forma:

"SELECT CONVERT(VARCHAR(4), codigo) + ' - ' + FANTASIA AS nomeNoDisplayMember FROM cliente_fornecedor WHERE flagforn = 'T' ORDER BY fantasia"

Link to comment
Share on other sites

  • 0
Você tem que fazer uma conversão quando vai concatenar campos de tipos diferentes. Nesse caso, tente desta forma:

"SELECT CONVERT(VARCHAR(4), codigo) + ' - ' + FANTASIA AS nomeNoDisplayMember FROM cliente_fornecedor WHERE flagforn = 'T' ORDER BY fantasia"

MUUUUUUITO OBRIGADO, FUNCIONOU PERFEITAMENTE. VALEU MESMO!!!!

Vou te pedir só mais uma coisa.

Eu mudei as propriedades do COMBO

AutoCompleteMode: para SuggestAppend

AutoCompleteSouce: para ListItens

E na hora que digito um número o combo é carregado.

Mas quando digito STRING não carrega o combo.

Não teria como eu digitar tando número(que é o código da consulta SQL)

como letra que o campo fantasia da consulta SQL??????

Link to comment
Share on other sites

  • 0

Então... infelizmente o AutoComplete não funciona como o LIKE do SQL. Ou seja, ele só vai te trazer os itens de acordo com o que você digitar, na ordem. Exemplo:

Se você tem os itens:

10 - Fornecedor 1

55 - Fornecedor 2

47 - Fornecedor 3

e digitar 3, nada irá aparecer, pois não existe item iniciado com 3 (apenas 1, 4 e 5).

Link to comment
Share on other sites

  • 0
Então... infelizmente o AutoComplete não funciona como o LIKE do SQL. Ou seja, ele só vai te trazer os itens de acordo com o que você digitar, na ordem. Exemplo:

Se você tem os itens:

10 - Fornecedor 1

55 - Fornecedor 2

47 - Fornecedor 3

e digitar 3, nada irá aparecer, pois não existe item iniciado com 3 (apenas 1, 4 e 5).

Ta certo! De qualquer forma aprendi mais uma. Mais uma vez MUITO OBRIGADO

O que eu queria mesmo era consultar tando por código, quanto que por nome, no seu exemplo:

digitar 10 para trazer a linha : "10 - Fornecedor 1"

ou digitar Forne... para trazer a mesma consulta. Você não teria alguma outra forma, para fazer essa consulta ???

Link to comment
Share on other sites

  • 0

Fácil não... você pode criar uma classe que herda um ComboBox e reescrever a rotina de AutoComplete e depois, ao invés de usar um ComboBox normal, usar o seu customizado. Mas dá muito trabalho :/

Dá uma pesquisada também no pai Google. As vezes tem alguma coisa que eu não manjo e não é tão complexo.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...