1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Colocando dois IF no código!!

Discussão em 'Programação' iniciada por rubenmsoares, 7 de Setembro de 2012. (Respostas: 3; Visualizações: 969)

  1. rubenmsoares

    rubenmsoares Power Member

    Não sei come colocar o segundo.

    Preciso de aplicar condições diferentes depois de executar a pesquisa, em que quando é executado o select e devolve os valores para caixa, mas quando uma das caixa tiver o valor 2 ele tem de executar outra condição.

    Mas precisando de ele fazer a leitura a base dados com o comando If rs.Read() Then eu não sei onde devo colocar If caixaXYZ ="2" Then executa outra condição.

    Tenho este código:

    Protected Sub Bt_pesquisar_Click(sender As Object, e As EventArgs) Handles Bt_pesquisar.Click


    strConnection = ConnectionStrings("GescomercialConnectionString").ConnectionString
    dbConn = New SqlClient.SqlConnection(strConnection)
    dbConn.Open()
    strSQL = "SELECT * FROM tbl_clientes WHERE nif='" & caixapesquisanif.Text & "'"
    dCmd = New SqlCommand(strSQL, dbConn)


    Dim rs As SqlDataReader = dCmd.ExecuteReader
    If rs.Read() Then
    'existem valores??
    caixapesquisanif.Text = ""
    caixanif.Text = rs("nif")
    caixanome.Text = rs("nome")
    caixaresponsavel.Text = rs("responsavel")
    caixalocalidade.Text = rs("localidade")
    caixacontato.Text = rs("contato")
    droptipocliente.Text = rs("tipo_cliente")


    droptipocliente.BackColor = Drawing.Color.Beige
    caixanif.BackColor = Drawing.Color.Beige
    caixanome.BackColor = Drawing.Color.Beige
    caixacontato.BackColor = Drawing.Color.Beige
    caixalocalidade.BackColor = Drawing.Color.Beige
    caixaresponsavel.BackColor = Drawing.Color.Beige


    caixanif.Enabled = False
    caixanome.Enabled = True
    caixacontato.Enabled = True
    caixalocalidade.Enabled = True
    caixaresponsavel.Enabled = True
    droptipocliente.Enabled = True


    bt_atualizar.Enabled = True
    bt_Eliminar.Enabled = True
    bt_gravar.Enabled = False
    bt_cancelar.Enabled = False
    bt_novo2.Enabled = True
    bt_editar2.Enabled = True
    bt_eliminar2.Enabled = True
    bt_gravar2.Enabled = True
    bt_cancelar2.Enabled = True


    Else
    MessageBox("Cliente não encontrado")
    caixapesquisanif.Text = ""
    End If


    End Sub
     
  2. Eu nem olhei para o código mas pelo que vi estás a programar em VB???

    Faz o seguinte:

    If (comparação)

    Elseif (comparação)

    Else

    Não te esqueças que em comparações podes sempre fazer várias usando AND e OR! (&& ou || respectivamente e depende da linguagem, já não uso Windows e muito menos VB...) abraço!

    PS Agora que vi o código assim por alto percebi melhor o que querias fazer. Tens duas alternativas. Ou usas a estratégias que te disse, fazendo algo do género:

    Código:
    [COLOR=#EDEDED]If (rs.Read() AND existemvalores??) Then
    [/COLOR]...
    Elseif rs.Read() Then
    ...
    Else ...
    Ou então no código que tens no teu post, se onde tens "existemvalores??" colocares um outro if, não há problema nenhum... não é muito "católico", mas pelo que parece para o que estás a fazer, tem pouca importância. Abraço
     
    Última edição: 7 de Setembro de 2012
  3. rubenmsoares

    rubenmsoares Power Member

    Não estou a conseguir executar a pesquisa com o comando If (rs.Read() And estado_negocio = "Perdido") Then quando eu sei que o Nif em questão existe.


    O estado_negocio = "Perdido" é o que está a impedir a pesquisa, porque colocando desta forma: If rs.Read() Then, é devolvido o Nif em questão.


    Contudo eu preciso que ao ler a tabela e quando encontra os valores, se o estado_negocio = "Perdido" vou ter de execuar o segundo if neste caso o elseif.


    Verifiquei também que ao colocar If (rs.Read() And estado_negocio = "Perdido") Then tendo de declarar o estado_negocio e então declaro assim:


    Protected Sub Bt_pesquisar_Click(sender As Object, e As EventArgs) Handles Bt_pesquisar.Click
    Dim estado_negocio As String


    Antes das ligação a base dados.

    Verifico que estado_negocio, fica sublinhado a vermelho com a indicação do seguinte erro " Warning Variable 'estado_negocio' is used before it has been assigned a value. A null reference exception could result at runtime.


    Podem ajudar-me?


    Obrigado
     
  4. tkm_[pt]

    tkm_[pt] Power Member

    A lógica que estás a fazer não faz muito sentido para mim. Ao certo, qual é a segunda condição que queres que se execute quando o tal valor "2" aparece? É muito diferente do que fazes quando esse valor não é 2? Onde está essa variável "estado_negocio"?

    O mais simples, dentro do que posso deduzir do que queres seria:
    Código:
    '...
    if (rs.read()) Then
      ' Sem isto não vais ler os resultados
      'Código até preencheres a tal caixaXYZ
      If caixaXYZ ="2" Then
        'Faz aqui o que queres
      End if
    ' Continua com o resto do código
    Else
      MessageBox("Cliente não encontrado")
      caixapesquisanif.Text = ""
    End If
    
     

Partilhar esta Página