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

duarte69

[VB 6.0] Ligar VB a Access com comando Adodc

11 mensagens neste tópico

Boas,

É o seguinte, estou a fazer o projecto tecnológico para o 12º ano e estou a fazer uma base de dados na qual os dados são introduzidos através de um programa em Visual Basic (feito por mim claro).

O problema é o seguinte:

- Tenho uma tabela na BD com os dados dos funcionários de uma empresa;

- Para introduzir dados no VB é necessário fazer Login <---- Grande problema --- Como se faz?? :S

Tenho um textbox para introduzir o nº de funcionário (que é a chave primária da tabela) e outra para a password (cada funcionário tem a sua password).

Os passos são os seguintes:

1º - verificar se o utilizador existe; ---> este sei

2º - verificar se esse utilizador tem permissão para aceder à tabela; ---> tenho um campo Sim/Não na tabela funcionário para dar ou não autorização à tabela, mas não sei verificar;

3º - verificar se a password está correcta;---> também não sei.

O meu problema é que não sei como vou ver um determinado campo num determinado registo, ou seja, ir ao utilizador X e no registo correspondente verificar se o valor do campo password é igual ao valor introduzido na TextBox.

Percebem?? Se não perceberem digam.

Eu até perguntava ao stor, mas ele não percebe nada, e ainda por cima no inicio disse sempre que dava para fazer tudo, se agora não der to lixado com F grande =X.

Agradecia uma ajudita, é importante.

Cumps

ps: sou novo por estes lados, por isso se algo não estiver correcto avisem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Tu sabes abrir a base de dados?

Sabes ler as tabelas?

É porque tens que abrir a base de dados e abrir as tabelas,dpois é k tens k ir ler as tabelas...

Cumps

Zeant

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, sim, sei abrir, ler e inserir/apagar/pesquisar dados nas tabelas.

O meu problema é mesmo conseguir procurar os campos de um determinado registo (Por exemplo: onde o nome é Manuel quero ver se a pass é 12345).

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Ve se isto ajuda

If userid.text= campo_da_tabela  then
   If pass.text=campo_da_tabela  then
        Msgbox (" Utilizador e Pass Correcto")
   else
       Msgbox ("Pass incorrecta")
   end if
else
    Msgbox ("Utilizador Incorrecto")
end if

Quando tu fazes o select a tabela, ela fika  posicionada no registo e dpois basta fazeres o teste aos campos como esse exemplo que te escrevi.....

Espero que seja isso....

Cumps

Zeant

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É capaz de ser isso, vou experimentar e depois digo qualquer coisa.

Obrigado pela ajuda.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mesmo dessa maneira não dá, mas já achei uma que dei, criei outra ligação à BD liguei 2 textbox (uma para a pass outra para o username) e depois utilizei o find, ou seja, procuro o utilizador X, os valores ficam nas TextBox e depois é só comparar, mas tem um problema.

Se eu à primeira meter a pass e o username bem ele entra, se meter o username/pass  mal ele não entra, o problema é que eu à primeira meto mal (ele dá erro) mas quando altero os dados e meto os dados correctos ele não entra na mesma, não sei se é o find que não trabalha à segunda ou se as variáveis não mudam de valor  :)

Deixo aqui o código:

______________________________

nfunc = userid
npass = password.Text


Adodc1.Recordset.Find ("n_funcionário = '" & nfunc & "'")

If Adodc1.Recordset.EOF Then
    MsgBox "Funcionário inixestente!"
    nfunc = ""

Else
    If password.Text = npass Then

    ....

   else
        MsgBox ("Password Incorrecta")
        npass = ""
end if
end if

______________________________

as variáveis estão declaradas como globais.

Cumps

edit:

Assim já quase que trabalha, mas não faz o if da password :wallbash:

nfunc = userid
npass = password.Text


Adodc1.Recordset.Find ("n_funcionário = '" & nfunc & "'")

If Adodc1.Recordset.EOF Then
    MsgBox "Funcionário inixestente!"
    nfunc = ""
    Adodc1.Recordset.MoveFirst

Else
    If password.Text = npass Then ' <------

    ....

   else
        MsgBox ("Password Incorrecta")
        npass = ""
        Adodc1.Recordset.MoveFirst
end if
end if

edit2: erro muito estúpido, estava a comparar  a textbox password com ela própria

Problema resolvido, podem fechar. Mais uma vez obrigado Zeant pela ajuda.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpem o double post, mas surguiu outro problema, isto só trabalha com um determinado username e pass, nos outros todos diz sempre que a password está incorrecta, alguém sabe explicar porquê??

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Ja testas-te sem o FIND?

É que isso pode estar a fazer a procura mal...

Cumps,

Zeant

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:wallbash: :rant_01:

To a dar em doido, tipo, parece que das duas uma: ou não está a atribuir o valor à variável ou não está a fazer a comparação bem.

Se eu meter bem o nº de funcionário bem dá e se eu meter mal dá erro, mas quando chega à parte de verificar a password dá sempre erro, diz sempre que a password é inválida.

Deixo aqui o código, se alguém poder ajudar agradeço.

Zeant, não é do Find, esse tenho a certeza que está a trabalhar ;)

Private Sub Command1_Click()
Dim nuserid As String
Dim npass As String

npass = upass.Text
nuserid = userid.Text

Adodc1.Recordset.Find ("n_funcionário = '" & nuserid & "'")

If Adodc1.Recordset.EOF Then

    Adodc1.Recordset.MoveFirst
    MsgBox "Funcionário inixestente!", , Login

Else
    If npass = tpass Then
        Loginn.Hide
        registartrabalhador.Show
        registartrabalhador.Picture1.Visible = False
        registartrabalhador.localizar.Enabled = True
        registartrabalhador.Command2.Visible = True
        registartrabalhador.Command1.Visible = False
        registartrabalhador.nome.Enabled = True
        registartrabalhador.bi.Enabled = True
        registartrabalhador.password.Enabled = True
        registartrabalhador.foto.Enabled = True
        registartrabalhador.Check1.Enabled = True
        registartrabalhador.Check2.Enabled = True
        registartrabalhador.Check3.Enabled = True
        registartrabalhador.Check4.Enabled = True
        registartrabalhador.Check5.Enabled = True
        registartrabalhador.Check6.Enabled = True
        registartrabalhador.Check7.Enabled = True
        registartrabalhador.Check8.Enabled = True
        registartrabalhador.confirm.Enabled = True
        registartrabalhador.limpar.Enabled = True
        registartrabalhador.eliminar.Enabled = True
        registartrabalhador.procurar.Enabled = True
        registartrabalhador.addnew.Enabled = True
        registartrabalhador.datanas.Enabled = True
        registartrabalhador.cmdanterior.Enabled = True
        registartrabalhador.cmdprimeiro.Enabled = True
        registartrabalhador.cmdseguinte.Enabled = True
        registartrabalhador.cmdultimo.Enabled = True
    
    Else
        MsgBox "Password incorrecta", , Login
        Adodc1.Recordset.MoveFirst
    End If
End If


End Sub

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Olha onde é que está declarado o Adodc1??

Mostra sff

Cumps,

Zeant

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Declarado como assim?  :S :bored:

Tipo criei o adodc1 escolhi a base de dados, meti a SQL e depois liguei às textbox.

Penso que não percebi a pergunta.

Cumps

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