Ir para o conteúdo
cmtavares

ComboBox e ListBox

Mensagens Recomendadas

cmtavares

Boas pessoal, neste momento estou com um pequeno problema que é o seguinte.

Estou a criar um pequeno aplicativo que tem como função envio de newsletter's, em que esse mesmo aplicativo da para criar/ editar/ e remover clientes. Existe um base de dados em sql e agora tenho a função de poder criar grupos de clientes, mas a minha duvida é:

Estou a mostrar numa comboBox todos os nomes dos grupos já existentes e queria que ao selecionar um desses grupos mostra'se os clientes que pertencem ao mesmo numa listbox.

Agradeço desde já a vossa ajuda!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Nelson Sousa

Olá,

Carrega sua listbox no evento SelectionchangeCommited, ou no Validated da combobox.


Um Abraço,

Nelson Sousa

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
cmtavares

Obrigada desde já a vossa ajuda!

eu já tenho algum código mas neste momento não está a a fazer o que pretendo!

    Dim connectionString As String = "Password=irpasimpo;Persist Security Info=True;User ID=SA;Initial Catalog=OEI;Data Source=CARLOS-M\SQL"
    Dim connection As New SqlConnection(connectionString)
    connection.Open()
    Dim command As String = "Select Nome from Grupos where ID_GRUPO'" & Me.ComboBox1.SelectedText & "' "

    Dim adpt As New SqlDataAdapter(command, connection)
    Dim myDataSet As New DataSet()
    adpt.Fill(myDataSet, "Nome")
    Dim myDataTable As DataTable = myDataSet.Tables(0)
    Dim tempRow As DataRow
    For Each tempRow In myDataTable.Rows
	    ListBox1.Items.Add((tempRow("Nome")))
    Next

Se conseguirem saber o que posso fazer agradeço imenso

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Leonardo Pereira

experimenta trocar esta linha

Dim command As String = "Select Nome from Grupos where ID_GRUPO'" & Me.ComboBox1.SelectedText & "' "

por esta

Dim command As String = "Select Nome from Grupos where ID_GRUPO'" & Me.ComboBox1.SelectedItem & "' "

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
cmtavares

Boa tarde, já fiz essa troca e não dá a mesma! não mostra nada!

Acho que tem que ser mesmo a parir da selectText para poder fazer uma comparação de valores para depois conseguir obter o clientes respetivos daquele grupo.

Agora estou indeciso de será ou não isso

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Nelson Sousa

Olá,

Dim command As String = "Select Nome from Grupos where ID_GRUPO='" & Me.ComboBox1.SelectedText & "' "

Nos informe o evento onde está executando este código.


Um Abraço,

Nelson Sousa

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
cmtavares

Boas, o evento onde esta a ser excutado e

 Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Nelson Sousa

Olá,

Mude para o evento VALIDATED ou para SELECTIonchangeCOMITTED.

Observe a mudança que fiz no código acima.


Um Abraço,

Nelson Sousa

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
cmtavares

boas

não será melhor indicar como são criados os grupos e como estão relacionados com os clientes.

cumps

acao

boas, como assim não estou a perceber !

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
cmtavares

imagembgl.jpg

Boas está ai uma imagem do design do programa o objetico é ao seleccionar um cliente da comboBox na listbox a baixo que esta vazia, mostrar os clientes pertencentes a esse mesmo grupo selecionado.

   Private Sub ComboBox1_SelectedIndex(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
    Dim connectionString As String = "Password=irpasimpo;Persist Security Info=True;User ID=SA;Initial Catalog=OEI;Data Source=CARLOS-M\SQL"
    Dim connection As New SqlConnection(connectionString)
    connection.Open()
    'Dim command As String = "Select Nome from Clientes where ID_GRUPO"
    'Dim variavel As String
    Dim command As String = "select Nome from Clientes where ID_GRUPO='" & Me.ComboBox1.SelectedItem & "' "
    MessageBox.Show(ComboBox1.SelectedItem)
    If ComboBox1.SelectedItem > "" Then
	    Dim adpt As New SqlDataAdapter(command, connection)
	    Dim myDataSet As New DataSet()
	    adpt.Fill(myDataSet, "ID_GRUPO")
	    Dim myDataTable As DataTable = myDataSet.Tables(0)
	    Dim tempRow As DataRow
	    For Each tempRow In myDataTable.Rows
		    ListBox1.Items.Add((tempRow("Nome")))
	    Next
    End If

   End Sub

Se me poderem ajudar agradeço

Editado por cmtavares

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Leonardo Pereira

Isto deve funcionar ;)

Dim connectionString As String = "Password=irpasimpo;Persist Security Info=True;User ID=SA;Initial Catalog=OEI;Data Source=CARLOS-M\SQL"
Dim connection As New SqlConnection(connectionString)
connection.Open()
Dim command As String = "SELECT Nome FROMClientes WHERE ID_GRUPO = (SELECT ID_GRUPO FROM Grupos WHERE Nome ='" & ComboBox1.SelectedItem & "') "
If ComboBox1.SelectedItem > "" Then
Dim Reader As SqlDataReader = command.executeReader()
If reader.HasRows Then
while Reader.Read()
ListBox1.Items.Add(reader.item("Nome"))
End While
End If
End If

Cumps

PS : SelectedText é diferente de SelectedItem ;) e qualquer dúvida avisa

Editado por Leonardo Pereira

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
acao

boas

se no post anterior não deu!

tenta assim, não foi testado

Dim command As String = "SELECT Nome FROM Clientes WHERE ID_GRUPO = ("SELECT ID_GRUPO FROM Grupos Where Nome = '" & ComboBox1.SelectedText & "' ")"

verifica nomes de tabelas e campo, maiúsculas e minúsculas fazem diferenca,

cumps

acao

Editado por acao

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
cmtavares

Isto deve funcionar ;)

Dim connectionString As String = "Password=irpasimpo;Persist Security Info=True;User ID=SA;Initial Catalog=OEI;Data Source=CARLOS-M\SQL"
Dim connection As New SqlConnection(connectionString)
connection.Open()
Dim command As String = "SELECT Nome FROMClientes WHERE ID_GRUPO = (SELECT ID_GRUPO FROM Grupos WHERE Nome ='" & ComboBox1.SelectedItem & "') "
If ComboBox1.SelectedItem > "" Then
Dim Reader As SqlDataReader = command.executeReader()
If reader.HasRows Then
while Reader.Read()
ListBox1.Items.Add(reader.item("Nome"))
End While
End If
End If

Cumps

PS : SelectedText é diferente de SelectedItem ;) e qualquer dúvida avisa

Dim connectionString As String = "Password=irpasimpo;Persist Security Info=True;User ID=SA;Initial Catalog=OEI;Data Source=CARLOS-M\SQL"
    Dim connection As New SqlConnection(connectionString)
    connection.Open()
    Dim command As String = "SELECT Nome FROMClientes WHERE ID_GRUPO = (SELECT ID_GRUPO FROM Grupos WHERE Nome ='" & ComboBox1.SelectedItem & "') "
    If ComboBox1.SelectedItem > "" Then
	    Dim Reader As SqlDataReader = command.executeReader()
	    If Reader.HasRows Then
		    While Reader.Read()
			    ListBox1.Items.Add(Reader.Item("Nome"))
		    End While
	    End If
    End If
   End Sub

Dim Reader As SqlDataReader = command.executeReader() -> esta linha diz-me que "executeReader is not member of string" ainda não percebi bem porque!

cump

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Leonardo Pereira

Dim connectionString As String = "Password=irpasimpo;Persist Security Info=True;User ID=SA;Initial Catalog=OEI;Data Source=CARLOS-M\SQL"
 Dim connection As New SqlConnection(connectionString)
 connection.Open()
 Dim command As String = "SELECT Nome FROMClientes WHERE ID_GRUPO = (SELECT ID_GRUPO FROM Grupos WHERE Nome ='" & ComboBox1.SelectedItem & "') "
 If ComboBox1.SelectedItem > "" Then
	 Dim Reader As SqlDataReader = command.executeReader()
	 If Reader.HasRows Then
		 While Reader.Read()
			 ListBox1.Items.Add(Reader.Item("Nome"))
		 End While
	 End If
 End If
End Sub

Dim Reader As SqlDataReader = command.executeReader() -> esta linha diz-me que "executeReader is not member of string" ainda não percebi bem porque!

cump

porque me esqueci de uma linha de código xD

a seguir a

 Dim command As String = "SELECT Nome FROMClientes WHERE ID_GRUPO = (SELECT ID_GRUPO FROM Grupos WHERE Nome ='" & ComboBox1.SelectedItem & "') "

coloca


Dim ExecuteComand = SqlCommand(command, connection)

e depois altereas a linha

Dim Reader As SqlDataReader = command.executeReader()

por esta

Dim Reader As SqlDataReader = ExecuteComand.executeReader()

assim já vai aceitar o ExecuteReader ;)

Editado por Leonardo Pereira

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
cmtavares

porque me esqueci de uma linha de código xD

a seguir a

Dim command As String = "SELECT Nome FROMClientes WHERE ID_GRUPO = (SELECT ID_GRUPO FROM Grupos WHERE Nome ='" & ComboBox1.SelectedItem & "') "

coloca


Dim ExecuteComand = SqlCommand(command, connection)

e depois altereas a linha

Dim Reader As SqlDataReader = command.executeReader()

por esta

Dim Reader As SqlDataReader = ExecuteComand.executeReader()

assim já vai aceitar o ExecuteReader ;)

Obrigada finalmente já está a dar :)

Finalmente já está a fazer o que pretendo mas já agora só mais uma pequena dúvida.

seleciono um grupo e já aparece os clientes repetivos mas se selecionar novamente um grupo diferente os clientes do antigo grupo permanecem na listbox, isso e so fazer um clean a listbox?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
acao

boas

sim é só fazer um clear no inicio do procedimento.

imageeetl.jpg

é isto que pretendes?

a relação entre as tabelas penso que deveria ser entre os id grupos e não entre o email e .... mas está a funcionar optimo.

cumps

acao

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Leonardo Pereira

sim, no inicio de cada mudança ...

ou seja

Private Sub ComboBox1_SelectedIndex(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged[/background]
listbox1.items.clear()
....

;)

boas

sim é só fazer um clear no inicio do procedimento.

a relação entre as tabelas penso que deveria ser entre os id grupos e não entre o email e .... mas está a funcionar optimo.

cumps

acao

e é entre o IDGrupo xD no vb as ligações (retas) que unem as duas tabelas não são como no access que ficam junto aos campos relacionados ;)

aliás a query que fizeste e eu depois conferi mostra isso mesmo

Editado por Leonardo Pereira

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
acao

boas

obrigado pela explicação, mas sendo assim podíamos ter usado a instrução Join.

mas está a funcionar tudo bem , resolvido.

cumps

acao

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Leonardo Pereira

boas

obrigado pela explicação, mas sendo assim podíamos ter usado a instrução Join.

mas está a funcionar tudo bem , resolvido.

cumps

acao

eu não me dou muito bem com o Join por isso é melhor assim xp

cumps

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.