• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

passado

Testar conteudo de combobox

18 mensagens neste tópico

Pessoal eu tenho uma form que registo que contem duas combobox, acontece que se e abrir a from e fizer logo adicionar ele adiciona o registo e assume o primeiro valor da lista das combo, mesmo que ela no texto da combo nao esteija nada, como posso contornar isto?

Ja tentei atravez de ifs ao combobox.text, mas isto depois tem outro problema que é poder inserir qualquer texto, e passar no teste, no fundo o que quero e realizar um teste e ver se a combobox tem texto e se esse texto corresponde a um valor, fizme entender?

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é dificil de explicar, mas eu vou tentar, tipo quando abro a form da ideia que as combobox nao estao carregadas com nada pois nao aparece la nada, mas se eu fizer guardar a aplicaçao vai guardar um novo registo assumindo nesses campos o primeiro valor da combobox respectiva, e eu queria que isso nao fosse possivel, poderia criar um if ao elemento.text mas assim daria outro erro que era eu poder escrever um texto qualquer e ele dava erro ao gravar porque esse texto nao corresponde a nenhum valor, eu basicamente o que queria era testar se o texto corresponde a um valor e se existe la texto

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Usa o ComboBox.SelectedValue, SE tiveres a preencher a combobox através do seu datasource.

Isto garante que é válido unica e exclusivamente o que estiver disponível para selecção e na selecção.

Se não estiveres a usar a datasource, terás que percorrer todos os seus items, executando testes lógicos um a um.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Usa o ComboBox.SelectedValue, SE tiveres a preencher a combobox através do seu datasource.

Isto garante que é válido unica e exclusivamente o que estiver disponível para selecção e na selecção.

Se não estiveres a usar a datasource, terás que percorrer todos os seus items, executando testes lógicos um a um.

Sim estou a usar datasource, eu pensei nisso as testo se o selectedvalue é igual a que?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Igual a nada.

Se gravares na bd com o SelectedValue ao invés de Text, tens a certeza de que vai um valor que está seleccionado e não o primeiro.

Se testares o SelectedValue e verificares que é Nothing ou -1 (não te sei especificar se devolve nada ou um índice quando nao tem nada) entao significa que nao está nada seleccionado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Igual a nada.

Se gravares na bd com o SelectedValue ao invés de Text, tens a certeza de que vai um valor que está seleccionado e não o primeiro.

Se testares o SelectedValue e verificares que é Nothing ou -1 (não te sei especificar se devolve nada ou um índice quando nao tem nada) entao significa que nao está nada seleccionado.

Nao consegui....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes, alternativamente, impedir que sejam enviados "keystrokes" para a combobox e controlar o que pretendes via texto.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

na verdade quando eu escrevo o texto ele da erro, esse teste esta resolvido, falta o outro que acontece apenas quando abro a form que é no texto da combobox nao ter nada, mas, se carregar em gravar ele guarda o registo com o primeiro valor da lista de cada uma

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Receio não estar na mesma frequência que tu para entender o problema :P

Também não estou nos meus dias :thumbsup:

Podes, depois de carregar os dados, forçar a seleccção de um índice:

ComboBox1.SelectedIndex = 0

Ou na gravação de dados testar se existe algum seleccionado:

If ComboBox1.SelectedIndex = -1 Then
'Alto e para o baile
        End If

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Assim tambem não dá, nao existe de maneira de por o valor inicial da combobox como nulo ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ou podes por assim:

 ComboBox1.Text = ComboBox1.Items.Item(0)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Faz o seguinte, declara uma variável para cada combobox, (isto na Class do Form)

Dim valor1 As String = String.Empty

Depois no Evento SelectedValueChanged da combobox colocas

Private Sub ComboBox1_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedValueChanged
    valor1 = ComboBox1.SelectedItem
End Sub

Depois para verificares se foi seleccionado algum valor da combobox basta verificares a variável "valor1"

If Not valor1 = String.Empty Then
'Foi seleccionado um valor na ComboBox1
Else
'Não foi seleccionado um valor na ComboBox1
End If 

Vê lá se isto resolve o teu problema e diz qualquer coisa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu n sei se isto e o k realment keres...mas experimenta

 Private Sub combo1()
        Dim DAdapter As New OleDb.OleDbDataAdapter("SELECT NOME_OPER FROM OPERADORA ORDER BY COD_OPERADORA ", con1)
        Dim dset As New DataSet
        Try
            DAdapter.Fill(dset, "Operadora")
            ComboBox2.DataSource = dset.Tables.Item("Operadora")
            ComboBox2.DisplayMember = "Nome_oper"

        Catch erro As Exception
            MsgBox(erro.Message)
        End Try
        dset = Nothing
        DAdapter = Nothing
    End Sub

'aqui como podes ver metes no load para carregar
    Private Sub Portatil_Detalhes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        combo1()
    End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Resolvi o problema...

Meti um teste ao texto antes do teste ao valor e funcionou

Obrigado na mesma a quem ajudou

0

Partilhar esta mensagem


Link 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