MarceloSC Postado Dezembro 7, 2011 Denunciar Share Postado Dezembro 7, 2011 (editado) 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 Editado Dezembro 8, 2011 por MarceloSC Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Xistyle Postado Dezembro 7, 2011 Denunciar Share Postado Dezembro 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MarceloSC Postado Dezembro 7, 2011 Autor Denunciar Share Postado Dezembro 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Xistyle Postado Dezembro 7, 2011 Denunciar Share Postado Dezembro 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" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MarceloSC Postado Dezembro 7, 2011 Autor Denunciar Share Postado Dezembro 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?????? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Xistyle Postado Dezembro 7, 2011 Denunciar Share Postado Dezembro 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). Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MarceloSC Postado Dezembro 7, 2011 Autor Denunciar Share Postado Dezembro 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 ??? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Xistyle Postado Dezembro 7, 2011 Denunciar Share Postado Dezembro 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
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
Editado por MarceloSCLink para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.