CRIAR ROTINA MODULE PREENCHER COMBOBOX
Gostaria de criar uma rotina dentro do Module onde o mesmo possa preencher varios combobox, pois o jeito que eu preencho os meus combobox é adicionando eles no itens e no qual me da um pouco de trabalho, então pensei em criar essa rotina para facilitar.
Então peço ajuda para resolver esse pequeno problema
Então peço ajuda para resolver esse pequeno problema
ALEXANDREBS,
Acho que você quer algo +/- assim. é preciso adaptar para seu caso...
Abaixo tenho uma [Ô]Sub[Ô] chamada [Ô]CarregaCombo[Ô]. Ela recebe quatro parâmetros
1 - A própria ComboBox;
2 - Uma DataSource;
3 - Duas Strings;
Precisa rodar uma função chamada [Ô]PreencheCombo[Ô] também.
Esta Function é para Preencher a ComboBox. Ela recebe um Código e o nome da Tabela (você pode modifica-la para passar a SQL inteira se quiser):
veja que a situação [Ô]A[Ô] (Ativa) é chumbada (HardCode).
Esta é outra sub só para ajudar a posicionar a Combo:
Aqui coloquei um exemplo de como usar da Sub:
Seria isto?
[][ô]s,
Tunusat.
Acho que você quer algo +/- assim. é preciso adaptar para seu caso...
Abaixo tenho uma [Ô]Sub[Ô] chamada [Ô]CarregaCombo[Ô]. Ela recebe quatro parâmetros
1 - A própria ComboBox;
2 - Uma DataSource;
3 - Duas Strings;
Precisa rodar uma função chamada [Ô]PreencheCombo[Ô] também.
Public Shared Sub CarregaCombo(ByVal pCombobox As Object, ByVal pDataSource As Object, ByVal pColunaParaTEXT As String, ByVal pColunaIndex As String)
pCombobox.DataSource = pDataSource
pCombobox.DisplayMember = pColunaParaTEXT
pCombobox.ValueMember = pColunaIndex
End Sub
Esta Function é para Preencher a ComboBox. Ela recebe um Código e o nome da Tabela (você pode modifica-la para passar a SQL inteira se quiser):
veja que a situação [Ô]A[Ô] (Ativa) é chumbada (HardCode).
Public Function PreencheCombo(ByVal strCodigo As String, ByVal strTabelas As String)
MyBase.StrComando.AppendLine([Ô] SELECT [Ô])
MyBase.StrComando.AppendLine(strCodigo)
MyBase.StrComando.AppendLine([Ô] , Nome [Ô])
MyBase.StrComando.AppendLine([Ô] FROM [Ô] & strTabelas & [Ô] [Ô])
MyBase.StrComando.AppendLine([Ô] WHERE Situacao = [ô]A[ô] [Ô])
Return MyBase.RetornaLista(StrComando.ToString())
End Function
Esta é outra sub só para ajudar a posicionar a Combo:
Public Shared Sub PreencheComboPrioridade(ByVal pComboBox As Object, ByVal pValueMember As Integer)
Dim i As Integer
If pValueMember <> -1 Then
For i = 0 To pComboBox.Items.Count
pComboBox.SelectedIndex = i
If pComboBox.SelectedValue = pValueMember Then
Exit Sub
End If
Next
End If
pComboBox.SelectedIndex = -1
End Sub
Aqui coloquei um exemplo de como usar da Sub:
[ô]Carregar combo de prioridade
cboPrioridade.DataSource = Nothing
Bll.Util.CarregaCombo(cboPrioridade, PreencheComboPrioridade, [Ô]Nome[Ô], [Ô]CodigoPrioridade[Ô])
If Not oManutencaoSolicitacao.CodigoPrioridade = Nothing Then _
cboPrioridade.SelectedValue = oManutencaoSolicitacao.CodigoPrioridade
Seria isto?
[][ô]s,
Tunusat.
Cara,
Eu faria com menos código:
Para chamar:
Repare que eu coloquei [Ô]Class1.pegaDataSource(sql, conec)[Ô] porque o pegaDataSource é do tipo shared, por isso não precisa ser instanciado.
O [Ô]conec[Ô], eu utilizei o SqlConnection, mas se você estiver usando o OleDb é só trocar SqlConnection por OleDbConnection.
Tem que abrir a conexão antes de executar o pegaDataSource, senão irá dar erro.
Pra ser sincero não lembro se tem que dar Biding depois de [Ô]ComboBox1.DataSource[Ô]. Veja se isso se aplica.
Bom... Espero ter ajudado como o amigo TUNUSAT o fez.
Eu faria com menos código:
[txt-color=#0000f0]Public Class[/txt-color] Class1
[txt-color=#007100] [ô][ô][ô]<Summary>
[ô][ô][ô]Retorna um DataSet de acordo com o comando SQL passado
[ô][ô][ô]<Param=[Ô]sql[Ô]>Comando SQL a ser executado</Param>
[ô][ô][ô]<Param=[Ô]iCon[Ô]>Objeto SqlConnection Jà COM A CONEXÃO ABERTA.</Param>
[ô][ô][ô]</Summary>[/txt-color]
[txt-color=#0000f0]Public Shared Property[/txt-color] pegaDataSource(sql As String, iCon as SqlConnection) [txt-color=#0000f0]As DataSet[/txt-color]
Get
[txt-color=#0000f0]Dim[/txt-color] comando As New SqlCommand(sql, conec)
[txt-color=#0000f0]Using[/txt-color] adapter As New SqlDataAdapter(comando)
adapter.Fill(pegaDataSource)
[txt-color=#0000f0] End Using[/txt-color]
comando.Dispose()
[txt-color=#0000f0]Return[/txt-color] pegaDataSource
[txt-color=#0000f0]End Get
End Property
End Class[/txt-color]
Para chamar:
[txt-color=#0000f0]Public Sub[/txt-color] Button1_Click(byVal...) [txt-color=#0000f0]Handles[/txt-color] Button1.Click
Dim conec [txt-color=#0000f0]As New SqlConnection[/txt-color]
[txt-color=#0000f0] Dim [/txt-color]sql As String = [txt-color=#e80000][Ô]Coloque aqui o comando SELECT que você quiser[Ô][/txt-color]
[txt-color=#007100][ô]Coloque aqui o código para abrir a conexão com o banco de dados[/txt-color]
[txt-color=#007100][ô]CÓDIGO[ô][/txt-color]
ComboBox1.DataSource = Class1.pegaDataSource(sql, conec)
End Sub
Repare que eu coloquei [Ô]Class1.pegaDataSource(sql, conec)[Ô] porque o pegaDataSource é do tipo shared, por isso não precisa ser instanciado.
O [Ô]conec[Ô], eu utilizei o SqlConnection, mas se você estiver usando o OleDb é só trocar SqlConnection por OleDbConnection.
Tem que abrir a conexão antes de executar o pegaDataSource, senão irá dar erro.
Pra ser sincero não lembro se tem que dar Biding depois de [Ô]ComboBox1.DataSource[Ô]. Veja se isso se aplica.
Bom... Espero ter ajudado como o amigo TUNUSAT o fez.
Obrigado pelas dicas, feitas com sucesso.
Outra ajuda que eu estou precisando é uma rotina de preenchimento do combobox sem ter que fazer pelo Banco de dados. ( Module )
Ex = Public Function PreencheCombo
Adicionando os dados que irão aparecer nos combobox
Abacaxi
Maça
Tomate
Outros
End Sub
Depois no formulanrio eu vou chamar a rotina.
Sub combobox1
[txt-color=#e80000]PreencheCombo[/txt-color]
End sub
Obrigado.
Outra ajuda que eu estou precisando é uma rotina de preenchimento do combobox sem ter que fazer pelo Banco de dados. ( Module )
Ex = Public Function PreencheCombo
Adicionando os dados que irão aparecer nos combobox
Abacaxi
Maça
Tomate
Outros
End Sub
Depois no formulanrio eu vou chamar a rotina.
Sub combobox1
[txt-color=#e80000]PreencheCombo[/txt-color]
End sub
Obrigado.
Cara,
Faz um FOR no seu conjunto de dados e os insere no Combo
No caso de um DataSet
Eu coloquei [txt-color=#0000f0]linha.Item(0)[/txt-color] para pegar a primeira célula da linha.
Se eu estivesse retornando uma tabela que tivesse uma coluna chamada [txt-color=#e80000][Ô]setor[Ô][/txt-color], eu poderia fazer assim: [txt-color=#0000f0]linha.Item([/txt-color][txt-color=#e80000][Ô]setor[Ô][/txt-color][txt-color=#0000f0])[/txt-color]
Faz um FOR no seu conjunto de dados e os insere no Combo
For a = 0 to 9
ComboBox1.Items.Add(a)
Next
No caso de um DataSet
For Each linha As DataRow In DataSet1.Tables(0).Rows
ComboBox1.Items.Add(linha.Item(0))
Next
Eu coloquei [txt-color=#0000f0]linha.Item(0)[/txt-color] para pegar a primeira célula da linha.
Se eu estivesse retornando uma tabela que tivesse uma coluna chamada [txt-color=#e80000][Ô]setor[Ô][/txt-color], eu poderia fazer assim: [txt-color=#0000f0]linha.Item([/txt-color][txt-color=#e80000][Ô]setor[Ô][/txt-color][txt-color=#0000f0])[/txt-color]
Faça seu login para responder