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

Esta a executar o último IF

Discussão em 'Programação' iniciada por rubenmsoares, 22 de Julho de 2012. (Respostas: 9; Visualizações: 851)

  1. rubenmsoares

    rubenmsoares Power Member

    Boas,

    Pessoal ajudem-me a resolver esta situação, pois não sei que procedimento tomar.

    Este código, na fase inicial manda seleccionar o o valor introduzido na textbox.tex,

    No primeiro If esta a perguntar se existir valores então vai seleccionar os dados em outra tabela e coloca os dados pretendidos nas textbox.text indicadas.

    Se não existir os valor no primeiro select então ele diz na label8.tex que os valores não existem.

    Acontecem que ele esta a executar logo o final, sabendo eu que o valor a procurar existe, o que eu estou a fazer mal?

    strConnection = ConnectionStrings("GESCOMERCIALConnectionString").ConnectionString
    dbConn = New SqlClient.SqlConnection(strConnection)
    dbConn.Open()


    strSQL = "SELECT fidnif, fidsfid FROM sfid_nif WHERE [email protected] AND [email protected] "
    dCmd = New SqlCommand(strSQL, dbConn)
    dCmd.Parameters.Add(New SqlParameter("fidnif", pesquisanifbox.Text))
    dCmd.Parameters.Add(New SqlParameter("fidsfid", Label8.Text))
    'dCmd = New SqlCommand(strSQL, dbConn)
    Dim rs As SqlDataReader = dCmd.ExecuteReader


    If rs.Read() Then
    'existem valores??


    strConnection = ConnectionStrings("GESCOMERCIALConnectionString").ConnectionString
    dbConn = New SqlClient.SqlConnection(strConnection)
    dbConn.Open()
    strSQL = "SELECT nif, nome FROM cliente WHERE [email protected] AND [email protected] "
    dCmd = New SqlCommand(strSQL, dbConn)
    Dim rs1 As SqlDataReader = dCmd.ExecuteReader
    If rs1.Read() Then
    nifbox.Text = rs1("nif")
    nomebox.Text = rs1("nome")
    End If
    dbConn.Close()


    Else
    'não existem valores
    Label8.Text = "Não existe o Nif indicado"
    pesquisanifbox.Text = ""
    End If
    dbConn.Close()
     
  2. flaviorodrigues

    flaviorodrigues Power Member

    Hum, isso ta um bocado confuso!
    Não precisas de abrires 2 conexoes a sql, se ja tens uma aberta, nao precisas abrir outra.

    Coloca um breakpoint no codigo e tenta ver onde ele esta a percorrer e o valor associado a cada variavel e mesmo a query.
     
  3. rubenmsoares

    rubenmsoares Power Member

    Obrigado pela resposta,

    Indicas então que a onde tenho:
    strConnection = ConnectionStrings("GESCOMERCIALConnectionString"). ConnectionString
    dbConn = New SqlClient.SqlConnection(strConnection)
    dbConn.Open()


    strSQL = "SELECT fidnif, fidsfid FROM sfid_nif WHERE [email protected] AND [email protected] "
    devo também colocar:
    strSQL = "SELECT nif, nome FROM cliente WHERE [email protected] AND [email protected] "
    ?
     
  4. flaviorodrigues

    flaviorodrigues Power Member

    Não testei sequer, mas assim de cabeça:

    ' Inicias a ligação a tua connectionstring
    strConnection = ConnectionStrings("GESCOMERCIALConnectionString"). ConnectionString
    dbConn = New SqlClient.SqlConnection(strConnection)
    dbConn.Open()
    ' tens a ligacao aberta, executas as querys

    strSQL = "SELECT fidnif, fidsfid FROM sfid_nif WHERE [email protected] AND [email protected] "
    dCmd = New SqlCommand(strSQL, dbConn)
    dCmd.Parameters.Add(New SqlParameter("fidnif", pesquisanifbox.Text))
    dCmd.Parameters.Add(New SqlParameter("fidsfid", Label8.Text))

    Dim rs As SqlDataReader = dCmd.ExecuteReader

    If rs.Read() Then
    'existem valores??

    strSQL = "SELECT nif, nome FROM cliente WHERE [email protected] AND [email protected] "
    dCmd = New SqlCommand(strSQL, dbConn)
    Dim rs1 As SqlDataReader = dCmd.ExecuteReader
    If rs1.Read() Then
    nifbox.Text = rs1("nif")
    nomebox.Text = rs1("nome")
    End If

    Else

    'não existem valores
    Label8.Text = "Não existe o Nif indicado"
    pesquisanifbox.Text = ""
    End If
    dbConn.Close()

    Agora eu nao percebo o que estas a tentar fazer!

    Se é para listar o cliente com aquele nif porque nao fazes logo a pesquisa na tabela clientes por nif?
     
  5. rubenmsoares

    rubenmsoares Power Member

    Viva,

    Só não coloco logo a pesquisa na tabela cliente, porque a primeira selecção vai validar se o nif existe na base dados e associado ao sfid que é o código do utilizador de sessão. Esta validação é realizada através da tabela sfid_nif.

    Caso exista então executa-se o acesso a tabela de clientes para ir buscar os dados do cliente e colocar nas textbox correctas.

    Tudo isto porque vai existir mais que um utilizador e cada um terá a sua lista de clientes
     
  6. rubenmsoares

    rubenmsoares Power Member

    Entretanto consegui resolver o problema com este código.
    strConnection = ConnectionStrings("GESCOMERCIALConnectionString").ConnectionString
    dbConn = New SqlClient.SqlConnection(strConnection)
    dbConn.Open()


    strSQL = "SELECT * FROM sfid_nif,cliente WHERE [email protected] AND [email protected] AND [email protected]"


    dCmd = New SqlCommand(strSQL, dbConn)
    dCmd.Parameters.Add(New SqlParameter("fidnif", pesquisanifbox.Text))
    dCmd.Parameters.Add(New SqlParameter("fidsfid", Label1.Text))
    dCmd.Parameters.Add(New SqlParameter("nif", pesquisanifbox.Text))

    Dim rs As SqlDataReader = dCmd.ExecuteReader


    If rs.Read() Then
    'existem valores??
    Label8.Text = rs("fidnif")
    nifbox.Text = rs("nif")
    nomebox.Text = rs("nome")
    moradabox.Text = rs("morada")
    localidadebox.Text = rs("localidade")


    Else
    'não existem valores
    Label8.Text = "Não existe o Nif indicado"
    pesquisanifbox.Text = ""
    End If
    dbConn.Close()

    Contudo agora estou em outro dilema.

    Caso volte a pesquisar outro nif depois de ter digitado o anterior e ter devolvido a informação e na eventualidade de esse nif não existir como devo limpar os registo anteriores?

    Devo colocar



    nomebox.Text = ("")
    moradabox.Text = ("")
    localidadebox.Text = ("")

    depois de

    Else
    'não existem valores
     
  7. flaviorodrigues

    flaviorodrigues Power Member

    Recomendava fazeres isso logo antes de iniciares a consulta a bd.
     
  8. rubenmsoares

    rubenmsoares Power Member

    Antes da consulta a mesma as textbox já estão vazias, mas depois da pesquisa devolve a informação e quando pesquisar nova informação tenho de ter um código para voltar a limpar a informação anteriormente devolvida.
     
  9. flaviorodrigues

    flaviorodrigues Power Member

    Podes fazer assim
    nomebox.Text = ""
    moradabox.Text = ""
    localidadebox.Text = ""

    strConnection = ConnectionStrings("GESCOMERCIALConnectionString"). ConnectionString
    dbConn = New SqlClient.SqlConnection(strConnection)
    dbConn.Open()


    strSQL = "SELECT * FROM sfid_nif,cliente WHERE [email protected] AND [email protected] AND [email protected]"


    dCmd = New SqlCommand(strSQL, dbConn)
    dCmd.Parameters.Add(New SqlParameter("fidnif", pesquisanifbox.Text))
    dCmd.Parameters.Add(New SqlParameter("fidsfid", Label1.Text))
    dCmd.Parameters.Add(New SqlParameter("nif", pesquisanifbox.Text))

    Dim rs As SqlDataReader = dCmd.ExecuteReader


    If rs.Read() Then
    'existem valores??
    Label8.Text = rs("fidnif")
    nifbox.Text = rs("nif")
    nomebox.Text = rs("nome")
    moradabox.Text = rs("morada")
    localidadebox.Text = rs("localidade")


    Else
    'não existem valores
    Label8.Text = "Não existe o Nif indicado"
    pesquisanifbox.Text = ""
    End If
    dbConn.Close()
     
  10. rubenmsoares

    rubenmsoares Power Member

    Obrigado
     

Partilhar esta Página