Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

duarte69

[Resolvido] SQL

Recommended Posts

Boas,

 

É o seguinte, eu tenho uma pesquisa na BD em VB que é a seguinte:

 

sql = "SELECT * FROM Trabalhadores WHERE n_funcionário = " & userid.Text & " and password = '" & upass.Text & "'"

 

O problema é que eu queria adicionar a esta SQL mais 2 campos de valor Sim/Não(na parte do WHERE) , como faço isso?

 

Cumps

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boas,

 

É o seguinte, eu tenho uma pesquisa na BD em VB que é a seguinte:

 

sql = "SELECT * FROM Trabalhadores WHERE n_funcionário = " & userid.Text & " and password = '" & upass.Text & "'"

 

O problema é que eu queria adicionar a esta SQL mais 2 campos de valor Sim/Não(na parte do WHERE) , como faço isso?

 

Cumps

Utilizando 1 para sim e 0 para não. Ai é só acrescentar o que quer depois do where utilizando o 'and' ou 'or'.

 

Exemplo:

 

"SELECT * FROM Trabalhadores WHERE n_funcionário = " & userid.Text & " and password = '" & upass.Text & "' and s_masculino = 1"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boas,

 

Obrigado pela ajuda.

 

Ficou assim:

 

sql = "SELECT * FROM Trabalhadores WHERE n_funcionário = " & userid.Text & " and password = '" & upass.Text & "'and activo = 1 and aut_reg_trb = 1"

rs.Open sql, cn, 3, 3

 

Mas está a dar erro no rs.Open, ele entra no ciclo quando eu meto bem os dados, mas depois dá erro, diz: "Não foi fornecido nenhum valor para um ou mais parâmetros necessários". Se eu meter dados incorrectos ele dá o mesmo erro e se eu não meter nada dá o seguinte erro: "Erro de sintaxe (operador em falta) na expressão de consulta ..."

 

Alguém pode ajudar?

 

Cumps

Compartilhar este post


Link para o post
Compartilhar em outros sites

Duarte,

 

O and após a variavel upass.text esta junto a aspa sem espaço.

 

Mas faz o seguinte, dê um print na variavel sql, dessa forma você vai conseguir ver onde esta o erro no seu SELECT.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já dei um espaço, mas continua na mesma. Também já imprimi a sql, parece estar tudo bem, não sei o que se passa.

 

Imprimo a sql, dá isto:

 

Imagem Postada

 

faço OK e depois dá este erro:

 

Imagem Postada

 

Quando faço debuq aponta para a linha do rs.Open

 

Cumps

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boas, aqui está o código:

CODE
Private Sub confirm_Click()

 

Dim cn As New ADODB.Connection

Dim rs As New ADODB.Recordset

 

cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\ATI(pen)\MDB\projectotecnologico.mdb;Persist Security Info=False"

cn.Open

 

sql = "SELECT * FROM Trabalhadores WHERE n_funcionário = " & userid.Text & " and password = '" & upass.Text & "' and activo = 1 and aut_reg_trb = 1"

MsgBox (sql)

rs.Open sql, cn, 3, 3

 

If rs.EOF Then

MsgBox "Username ou password incorrectos!", vbExclamation, "ERRO"

Else

 

...

 

End If

rs.Close

cn.Close

End Sub

 

Não vejo onde está o erro, sem a parte de: "and activo = 1 and aut_reg_trb = 1" trabalhava, mas quando meti deixou de dar.

 

Cumps

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente substituir o 1 e 0 por True e False.

Verifique se o formato dos campos activo e aut_reg_trb são do tipo Sim/Não. Esse tipo de campo é booleano e exibe como Sim/Não no formato, por isso podes usar o True ou False nas cláusulas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente substituir o 1 e 0 por True e False.

Verifique se o formato dos campos activo e aut_reg_trb são do tipo Sim/Não. Esse tipo de campo é booleano e exibe como Sim/Não no formato, por isso podes usar o True ou False nas cláusulas.

Adolfo, por mais que ele possa usar o True/False, não era para dar erro usando 1/0.

 

O erro que ele está recebendo não faz muito sentido, a query está correta.

 

Duarte, tente se certificar que declarou em sua tabela esses campos com bit mesmo. Você disse que quando não estava usando as colunas activo e aut_reg_trb estava dando certo né... Faça o oposto agora, tente executar a query usando somente esses campos, veja no que vai dar.

Ah, e você tentou executar esse query diretamente no sql para ver se roda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boas,

 

Desde já obrigado a todos pela ajuda.

 

Isto continua a dar erro, os campos estão bem declarados.

 

Se eu fizer a query apenas com os campos activo e aut_reg_trb dá o mesmo erro.

 

Não dá para fazer logo a selecção dos registos que quero quando faço a ligação à BD? Por exemplo, com o Adodc, no RecordSource dá para fazer logo a query e seleccionar alguns dados, não dá para fazer o mesmo com o que estou a usar?

 

Cumps

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boas,

 

Desde já obrigado a todos pela ajuda.

 

Isto continua a dar erro, os campos estão bem declarados.

 

Se eu fizer a query apenas com os campos activo e aut_reg_trb dá o mesmo erro.

 

Não dá para fazer logo a selecção dos registos que quero quando faço a ligação à BD? Por exemplo, com o Adodc, no RecordSource dá para fazer logo a query e seleccionar alguns dados, não dá para fazer o mesmo com o que estou a usar?

 

Cumps

Não entendi o que quer fazer, mas será que pode me mandar esse seu banco de dados (está em acess né?) por e-mail para eu dar uma olhada?

 

claudio.rodriguesneto@gmail.com

 

Tendo ele em mãos tento reproduzir o que você está fazendo.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não precisei alterar nada na sua tabela, mas me ajudou bastante.

 

Tente assim:

 

CODE

Private Sub Command1_Click()

 

 

Dim cn As New ADODB.Connection

Dim rs As New ADODB.Recordset

 

cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Administrator.DBSERVER01\Desktop\projectotecnologico.mdb;Persist Security Info=False"

cn.Open

 

'sql = "SELECT * FROM Trabalhadores WHERE n_funcionário = '" & userid.Text & "' and password = '" & upass.Text & "' and estado = 1 and aut_reg_trb = 1"

'MsgBox (sql)

rs.Open "SELECT * From Trabalhadores WHERE (estado = True) and (aut_reg_trb=true) and (password = '" & upass.Text & "') and (n_funcionário = " & userid.Text & ")", cn, 3, 3

 

If rs.EOF Then

MsgBox "Username ou password incorrectos!", vbExclamation, "ERRO"

Else

 

End If

rs.Close

cn.Close

 

End Sub

 

A única coisa que fiz foi, copiar a mesma query que você estava usando detro do acess para a conexão via VB, e deu certo. Pelo que reparei, você estava fazendo activo = 1, mas não existe a coluna activo, e sim estado.

 

Tente ai, se não der ainda me avise.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boas,

 

Obrigado pela ajuda http://forum.imasters.com.br/public/style_emoticons/default/grin.gif já trabalha http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

 

Erro estúpido da minha parte, nunca pensei que me tivesse enganado no nome dos campos, por isso nunca confirmei.

 

Mais uma vez obrigado a todos.

 

Cumps

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.