none
Consultando codigo informado se exite no banco ou nao. RRS feed

  • Discussão Geral

  • Boa tarde Galera.

    Estou fazendo um sistema no qual tem cadastro de empresa, e quero fazer uma função que consulta o banco de dados e me informa se o codigo e filial já exite ou não.

    Qual o erro no meu codigo? 

        Function existe_empresa(ByVal codigo As Integer) As Boolean

            Dim Strcon As String
            Strcon = "Data source=.\UBERCONTA;AttachDbFilename=C:\Arquivos de programas\Microsoft SQL Server\MSSQL10.UBERCONTA\MSSQL\DATA\simples.mdf;Integrated Security=True;User Instance=True"
            Dim con As New SqlConnection(Strcon)
            Dim sql = New SqlCommand("select count(codigo) FROM empresas WHERE codigo = @Codigo AND filial = @Filial")
            'MySqlCommand mySqlCommand = new MySqlCommand(selectString, mySqlConnection);
            sql.Parameters.AddWithValue("@Codigo", txtCodigo.Text)
            sql.Parameters.AddWithValue("@Filial", txtFilial.Text)
            con.Open()
            sql.Connection = con
            Dim strResult As SqlDataReader = sql.ExecuteReader



            ' con.Close()

            If (strResult!DBNull.Value) Then
                'MessageBox.Show("Codigo ja existe", "Já existe", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Mostra_empresa(txtCodigo.Text)

            Else
                MessageBox.Show("Codigo não existe", "Favor cadastrar", MessageBoxButtons.OK, MessageBoxIcon.Information)
                limpa_tela()
                txtCodigo.Focus()

            End If
            Return 1
        End Function

    quarta-feira, 19 de dezembro de 2012 15:55

Todas as Respostas

  • O count sempre vai retornar valor, mesmo que não exista nada na tabela.
    No caso, se não tiver nada, retornara zero.

    O que você tem que fazer é comparar se o valor retornado foi maior que zero, se sim, já existe uma empresa cadastrada.

    quinta-feira, 20 de dezembro de 2012 14:30
  • Thiago, 

    Ficaria assim?

     Dim sql = New SqlCommand("select count(codigo), count(filial) FROM empresas WHERE codigo =" 0 "AND filial ="0)

    quinta-feira, 20 de dezembro de 2012 17:04
  • Olá Claudio

    Não, o seu select aparentemente estava certo, o que o Thiago pediu era que você testasse o retorno desse select, ou seja:

    If result > 0 then

    'código existe

    else

    'código não existe

    endif

    Veja essa thread, tem um exemplo que como fazer isso

    http://social.msdn.microsoft.com/Forums/pt/vsvbasicpt/thread/e767559b-328a-4cd7-b208-cc40457250c3

    Att.,

    Jeimes

    sexta-feira, 21 de dezembro de 2012 09:22
  • Exatamente o que o Jeimes falou.
    Você precisa verificar se a query retornou um valor maior que zero, se sim, então existe registros.
    sexta-feira, 21 de dezembro de 2012 14:44
  • Obrigado Jeimes e Thiago.

    Mais fiz de outra maneira. Inicializei duas boolean uma como true, outro como false. 

    E apliquei uma logica para cada uma na minha função de "montar empresa".

    Mais obrigado mesmo pela atenção, fórum show de bola.

    quinta-feira, 27 de dezembro de 2012 00:22