MarceloSC Posted December 7, 2011 Report Share Posted December 7, 2011 (edited) 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 FunctionNo formulário no LOAD: comboFornecedor.DataSource = objFornecedor.carregarComboFornecedorO ValueMember = idFornecedorO DisplayMember = nomeFornecedorAgradeço antecipadamenteMarcelo Edited December 8, 2011 by MarceloSC Quote Link to comment Share on other sites More sharing options...
0 Xistyle Posted December 7, 2011 Report Share Posted December 7, 2011 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. Quote Link to comment Share on other sites More sharing options...
0 MarceloSC Posted December 7, 2011 Author Report Share Posted December 7, 2011 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 INTfantasia STRINGendereco 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 Quote Link to comment Share on other sites More sharing options...
0 Xistyle Posted December 7, 2011 Report Share Posted December 7, 2011 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" Quote Link to comment Share on other sites More sharing options...
0 MarceloSC Posted December 7, 2011 Author Report Share Posted December 7, 2011 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 COMBOAutoCompleteMode: para SuggestAppendAutoCompleteSouce: para ListItensE 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?????? Quote Link to comment Share on other sites More sharing options...
0 Xistyle Posted December 7, 2011 Report Share Posted December 7, 2011 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 155 - Fornecedor 247 - Fornecedor 3e digitar 3, nada irá aparecer, pois não existe item iniciado com 3 (apenas 1, 4 e 5). Quote Link to comment Share on other sites More sharing options...
0 MarceloSC Posted December 7, 2011 Author Report Share Posted December 7, 2011 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 155 - Fornecedor 247 - Fornecedor 3e 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 OBRIGADOO 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 ??? Quote Link to comment Share on other sites More sharing options...
0 Xistyle Posted December 7, 2011 Report Share Posted December 7, 2011 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. Quote Link to comment Share on other sites More sharing options...
Question
MarceloSC
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 MarceloSCLink to comment
Share on other sites
7 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.