Jump to content
Patrijosa

vb.NET + MSSQL

Recommended Posts

Patrijosa

olá manos...

Como faço consultas na base de dados SQL Server com o VB.Net...

Exemplo:

tenho duas tabelas na minha base de dados: tblUser (id, Nome, foto) e  tblPermissao (idPermissao, idUser, horaEntrada, horaSaida)...

a ideia é: o user só deve ter permissão se a hora actual estiver entre a horaEntrada e a horaSaida... caso houver permissao, a aplicação deve ir na tblUSer, buscar a foto numa picture box e o nome numa label... e aparecer uma msgbox, por exemplo do tipo "Acesso Permitido", caso contrário, "Acesso negado"...

como faço isso no Visual Basic 2008 + MS SQL Server 2008?

grato pela atenção

Cumps

PS


O verdadeiro sábio é um eterno aprendiz!

http://www.patriciodossantos.net

Share this post


Link to post
Share on other sites
paulo silva

Se pretendes só consultar tens muitas opções podes faze-lo por uma gridview e depois carregar a informação lá para dentro. relativamente simples.

Metodo:

Arrastar uma gridview para o form depois fazê-lo pelo wizard que é uma opção fiável para iniciação.

Cumpriementos Paulo Silva

Share this post


Link to post
Share on other sites
Patrijosa

Se pretendes só consultar tens muitas opções podes faze-lo por uma gridview e depois carregar a informação lá para dentro. relativamente simples.

Metodo:

Arrastar uma gridview para o form depois fazê-lo pelo wizard que é uma opção fiável para iniciação.

Cumpriementos Paulo Silva

bem... não verdade acho que é mais validação do que consulta... verificar se o utilizador existe e obter os seus dados e verificar se está a entrar no horário permitido...

??

cumps

PS


O verdadeiro sábio é um eterno aprendiz!

http://www.patriciodossantos.net

Share this post


Link to post
Share on other sites
paulo silva

Pelo que entendi o que pretendes é como se fosse uma sessão de login certo? ou algo do genero?

   
            Dim ID As Integer
           
                Dim codigo_sql As String
                Dim conexao As New SqlConnection
                Dim Comando As New SqlCommand
                Dim meudatareader As SqlDataReader
                Dim perfilID As Integer
                Dim UtilizadorNome As String
                UtilizadorNome = ""
                ' Ligação à base de dados
                conexao="ligação à base de dados"
                'Abro a conexao
                Try
                    conexao.Open()
                    codigo_sql = "Select * from tblPermissao  where horaEntrada > '" & date.now & "' and HoraSaida < '" & date.now & "' 
                    Comando = New SqlCommand(codigo_sql, conexao)
                    meudatareader = Comando.ExecuteReader()
                    'Precorro a tabela e verifico de existe o username e password
                    While meudatareader.Read
                        ' Aqui ficas com o ID do horario acho que com este código já consegues avançar
                        ID = meudatareader.Item("idPermissao")
                        
                    End While
                Catch ex As Exception
                    MsgBox(ex.Message)
                    laErro.Text = "Erro ao carregar"
                Finally
                    conexao.Close()
                    'meudatareader.Close()
                    Comando.Dispose()
                End Try

              
              
          

Cumprimentos Paulo Silva

Share this post


Link to post
Share on other sites
Patrijosa

o que pretendo fazer em PHP seria o seguinte:

<?php
resquire ('conexao.php');
$sql = "SELECT * FROM permissoes WHERE CodEntidade='$CodEntidade' && DataInicio <= '" . date('Y-m-d') . "' && DataFim >= '" .date('Y-m-d'). "' && Estado='A' ";
$query = mysql_query($sql);
$resultado = mysql_num_rows($query);

if ($resultado > 0){

$sql1 = "select  * from users where CodEntidade='$CodEntidade' ";
$query1 = mysql_query($sql1);

$res = mysql_fecth_assoc($query1);

echo "Nome: $res['nomeEntidade']<br />";
echo "Nivel Acesso: $res['nivelAcesso']<br />";
echo "Entrada Permitida!";

} else {
echo "acesso negado!";
}

essa é a ideia...

como fazer isso em vb.NET + MSSQL?

grato pela atenção

Cumps

PS


O verdadeiro sábio é um eterno aprendiz!

http://www.patriciodossantos.net

Share this post


Link to post
Share on other sites
paulo silva

Creio que com o código que te enviei já consegues fazer qualquer coisa, bom para começar.

Cumprimentos Paulo Silva

Share this post


Link to post
Share on other sites
paulo silva

:thumbsup: peço desculpa, isso foi tirado e modificado de código meu e retirei a validação que tenho.

Peço desculpa já edito.

Cumprimentos Paulo Silva

Share this post


Link to post
Share on other sites
Patrijosa

olá manos

segui um dos procedimentos acima e cosnegui verificar se o user tem acesso ou não.. daí tentei buscar as informações do user e me aparece o erro apresentado na imagem abaixo:

vberror.png

Este é o trecho do meu código

Private Sub txtCardNum_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtCardNum.KeyPress
        If Char.IsNumber(e.KeyChar) Or e.KeyChar = Chr(13) Or e.KeyChar = Chr(8) Then
            e.Handled = False
            If e.KeyChar = Chr(13) Then
                ' Se a tecla enter for pressionada...
                If txtCardNum.Text = "" Then
                    MsgBox("Digite um Número Válido")
                Else
                    ' Pesquisar se existe...
                    'Dim SQL As String = "Select count(* ) N FROM tblFacturas WHERE [CodEntidade]=@CodEntidade AND DataInicio <= '" + Date.Today + "' AND DataFim >= '" + Date.Today + "' AND Estado='A' "
                    'Dim command As New SqlCommand(SQL, myConnection)

                    'command.Parameters.Add("@CodEntidade", SqlDbType.VarChar).Value = txtCardNum.Text
                    'Dim reader As SqlDataReader = command.ExecuteReader()

                    myCommand = New SqlCommand("Select * FROM tblFacturas WHERE CodEntidade=@Entidade AND Estado='A' ", myConnection)
                    myCommand.Parameters.Add("@Entidade", SqlDbType.VarChar).Value = txtCardNum.Text

                    Dim reader As SqlDataReader = myCommand.ExecuteReader()

                    'Caso existam linhas
                    If reader.HasRows Then

                        myCommandd = New SqlCommand("SELECT * FROM Entidades WHERE CodEntidade=@Entidade", myConnection)
                        myCommandd.Parameters.Add("Entidade", SqlDbType.VarChar).Value = txtCardNum.Text


                        Dim readerr As SqlDataReader = myCommandd.ExecuteScalar()
                        If readerr.HasRows Then
                            While readerr.Read()
                                lblNomeCliente.Text = readerr.Item(1)
                                readerr.Close()
                            End While
                        Else
                            lblNomeCliente.Text = "Utilizador Não Existe!"
                            readerr.Close()
                        End If

                        'While reader.Read()
                        'MsgBox("Acesso Permitido: ") '& reader.Item(1))
                        'lblNomeCliente.Text = txtCardNum.Text
                        lblInfoAcesso.Text = "Permitido"
                        txtCardNum.Text = ""
                        reader.Close()
                    Else
                        lblNomeCliente.Text = txtCardNum.Text
                        lblInfoAcesso.Text = "Negado"
                        txtCardNum.Text = ""
                        reader.Close()
                    End If
                    ' myCommand = New SqlCommand("Select count(* ) N FROM tblFacturas WHERE CodEntidade='" + txtCardNum.Text + "' AND DataInicio <= '" + Date.Today + "' AND DataFim >= '" + Date.Today + "' AND Estado='A' ", myConnection)

                    'dataReader = myCommand.ExecuteReader()

                    ' Percorendo a tabela e ver se existe user...
                    '   While dataReader.Read
                    'MsgBox("Acesso Permitido")
                    ' dataReader.Close()
                    'End While

                End If
                End If
            Else
                e.Handled = True
        End If

    End Sub

o que será que está errado?

cumps

PS


O verdadeiro sábio é um eterno aprendiz!

http://www.patriciodossantos.net

Share this post


Link to post
Share on other sites
paulo silva

Não podes ter dois datareader abertos ao mesmo tempo para abrires o segundo terias de fechar o primeiro percebes?

Cumprimentos Paulo Silva

Share this post


Link to post
Share on other sites
Patrijosa

Não podes ter dois datareader abertos ao mesmo tempo para abrires o segundo terias de fechar o primeiro percebes?

Cumprimentos Paulo Silva

o que acontece é que quando fecho o primeiro, não consigo executar o segundo ... dá um outro erro... já tentei utilizar datareaders com nomes diferentes e nada

Grato pela atenção

Cumps

PS


O verdadeiro sábio é um eterno aprendiz!

http://www.patriciodossantos.net

Share this post


Link to post
Share on other sites
paulo silva

Esperimenta em vez de fechares fazeres .dispose.

Eu já tive esse problema tive de usar outra maneira sem ser com o datareader.

Cumprimentos Paulo Silva

Share this post


Link to post
Share on other sites
Patrijosa

Esperimenta em vez de fechares fazeres .dispose.

Eu já tive esse problema tive de usar outra maneira sem ser com o datareader.

Cumprimentos Paulo Silva

olá...

desculpe aí.... sou novato em VB.Net... pois programo em PHP, mas apareceu um problema que me exigiu mexer com VB.NET...

Como utilizo este .dispose ???

pois é fazer pesquisa em duas tabelas... a primeira na tabela permissoes, verificando se o utilizado possui permissões, caso o utilizador possuir permissoes de acesso aí faz-se outra consulta na tabela utilizadores onde vou a busca das informações do mesmo, como o nome, data de registo, foto... etc...

grato pela atenção

Cumps

PS


O verdadeiro sábio é um eterno aprendiz!

http://www.patriciodossantos.net

Share this post


Link to post
Share on other sites
paulo silva

Usa sugestão porque não fazes tudo de uma vez, fazes uma consulta onde unes as duas tabelas e ao mesmo tempo de validas as permissões já carregas as informações dos utilizadores assim é dois em 1.

Cumprimentos Paulo Silva

Share this post


Link to post
Share on other sites
Patrijosa

Usa sugestão porque não fazes tudo de uma vez, fazes uma consulta onde unes as duas tabelas e ao mesmo tempo de validas as permissões já carregas as informações dos utilizadores assim é dois em 1.

Cumprimentos Paulo Silva

este é o x do problema... como fazer esta consulta nas duas tabelas e obter os resultados com o vb.net?

grato pela atenção

cumps

PS


O verdadeiro sábio é um eterno aprendiz!

http://www.patriciodossantos.net

Share this post


Link to post
Share on other sites
paulo silva

O mais correcto era no sql fazeres uma view ou consulta. mas podes por esta instrução sql:

SELECT     dbo.tblpermissao.*, dbo.tblUser.*
FROM         dbo.tblpermissao INNER JOIN
                      dbo.tblUser ON dbo.tblpermissao.IDuser = dbo.tblUser.ID
WHERE CodEntidade='$CodEntidade' && DataInicio <= '" . date('Y-m-d') . "' && DataFim >= '" .date('Y-m-d'). "' && Estado='A' ";

não te esqueças de por tudo em linha

tudo em linha por a que estava :

 "SELECT * FROM permissoes WHERE CodEntidade='$CodEntidade' && DataInicio <= '" . date('Y-m-d') . "' && DataFim >= '" .date('Y-m-d'). "' && Estado='A' ";

Cumprimentos Paulo Silva

Share this post


Link to post
Share on other sites
Patrijosa

resolvido

com base nesse código:

SELECT     dbo.tblpermissao.*, dbo.tblUser.*
FROM         dbo.tblpermissao INNER JOIN
                      dbo.tblUser ON dbo.tblpermissao.IDuser = dbo.tblUser.ID
WHERE CodEntidade='$CodEntidade' && DataInicio <= '" . date('Y-m-d') . "' && DataFim >= '" .date('Y-m-d'). "' && Estado='A' ";

obrigado a todos

Cumps

PS


O verdadeiro sábio é um eterno aprendiz!

http://www.patriciodossantos.net

Share this post


Link to post
Share on other sites
Patrijosa

prezados,

acho que me enganei ao dizer que o problema foi resolvido... na verdade só uma parte do problema foi resolvido....

se notarem, a query acima só retornará valor se o utilizador existir e o acesso for permitido... e como fazer para imprimir o nome do utilizador se o mesmo existisse mas não tivesse acesso?

pois já tentei continua a dar o erro de um datareader já aberto.... já fechei a conexão e o data reader mas continua com o mesmo erro

obrigado pela atenção

cumps

PS


O verdadeiro sábio é um eterno aprendiz!

http://www.patriciodossantos.net

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.