Ir para conteúdo
Fórum Script Brasil
  • 0

Conexao Com Bd


rodfraga

Pergunta

Fala galera. Eu to num projeto lá do centro cultural das laranjeiras(bairro da minha cidade) e eu e meus amigos decidimos fazer um programa de chat, pra apresentar no IMPA. Então, eu estou no início ainda(pra falar a verdade ainda não começou, eu só to me adiantando). E eu estava fazendo uma autenticação pro primeiro form. então, o form ficou com o seguinte código:

Dim con As New ADODB.Connection
Dim tabela As New ADODB.Recordset
Dim sql As String

Private Sub Command1_Click()
    x = Text1.Text
    y = Text2.Text
    sql = "Select * from tabela where nome = " & x & " and senha = " & y & ""
    If tabela.State = 1 Then tabela.Close
    tabela.Open sql, conexao
    End Sub

Private Sub Form_Load()
    con.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source =" & App.Path & "\banco.mdb"
End Sub
Ele mostra erro, após clicar em debug na seguinte linha:
tabela.Open sql, conexao
O erro alegado antes é:
Run-time error: "3001": Arguments are of the wrong type, are out of acceptable range, or are in conflit with one another.
Eu peguei como exemplo o programa do Pigmeu lá no site da SB. Na primeira vez rodou, mas depois que fechei, e fui abrir de novo, ocorreu o seguinte erro(quando clico em cadastrar):
Run-time error '-2147217904(80040e10)': No value given for one or more required parameters.
Na seguinte linha:
conexao.Execute sql

Quanto ao exemplo do pigmeu eu só postei a linha de erro, pois não sei se posso postar o código inteiro.

por favor ajudem. sad.gif

Obrigado desde já

Abraços

Link para o comentário
Compartilhar em outros sites

19 respostass a esta questão

Posts Recomendados

  • 0

ahh.. hehe ops!

esse erro:

Run-time error '-2147217904(80040e10)':
No value given for one or more required parameters.

este erro ocorre quando você não colocou um campo obrigatorio do BD sad.gif e o erro não foi tratado! sad.gif

Link para o comentário
Compartilhar em outros sites

  • 0
ahh.. hehe ops!

esse erro:

Run-time error '-2147217904(80040e10)':
No value given for one or more required parameters.

este erro ocorre quando você não colocou um campo obrigatorio do BD sad.gif e o erro não foi tratado! sad.gif

Como assim? Que campo do BD eu esqueci?

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Os nomes dos campos são mesmo nome e senha? O primeiro erro referia-se aos tipos dos dados (creio que ambos, ou pelo menos o campo nome, seja(m) do tipo texto). Assim como no código em VB devemos colocar as strings entre "" (aspas duplas), em uma SQL devemos colocar strings entre '' (aspas simples). Daí, aquela sentença SQL seria:

sql = "Select * from tabela where nome = '" & x & "' and senha = '" & y & "'"

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Os nomes dos campos são mesmo nome e senha? O primeiro erro referia-se aos tipos dos dados (creio que ambos, ou pelo menos o campo nome, seja(m) do tipo texto). Assim como no código em VB devemos colocar as strings entre "" (aspas duplas), em uma SQL devemos colocar strings entre '' (aspas simples). Daí, aquela sentença SQL seria:

sql = "Select * from tabela where nome = '" & x & "' and senha = '" & y & "'"

Abraços,

Graymalkin

não saquei muito essa parte de tipos de dados...sou muito novo nesse troço de bancos...mais até do que em vb sad.gif Eu entendi que string ficam entre aspas simples e deu certo(Muito Obrigado!) mas não entendi a parte de tipos de dados... sad.gif

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Os tipos de dados são como no VB. Por exemplo, em VB, você não tem variáveis dos tipos string, integer, long, double e boolean? Do mesmo jeito, em uma tabela, você tem campos de certos tipos, como text, integer, double, currency, etc.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Os tipos de dados são como no VB. Por exemplo, em VB, você não tem variáveis dos tipos string, integer, long, double e boolean? Do mesmo jeito, em uma tabela, você tem campos de certos tipos, como text, integer, double, currency, etc.

Abraços,

Graymalkin

E como eu especificaria tipos de dados em um comando sql?

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Quando você cria a tabela você já especifica. Quando você está lá no Access e cria um campo do tipo Texto já define que o tipo de dados do campo é Text; quando cria um campo do tipo Número, já o define de acordo com o seu tamanho como Integer, Long Integer, Single, Double, etc.

Não há necessidade de fazer nada especial em relação a isso. Apenas comentei sobre os tipos de dados para que você pudesse entender que é necessário que os dados que são fornecidos pelo usuário e os dados dos campos sejam do mesmo tipo. Por isso, você não pode comparar um campo Text com 123 (exemplo: NOME = 123) e sim com '123' (exemplo: NOME = '123'); de forma análoga, um campo numérico não pode ser comparado com uma string (exemplo: TOTAL = '145') mas sim com um número (exemplo: TOTAL = 145). O mesmo vale para os demais tipos.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Ah, mas você não tinha falado nisso. Para tal, você tem duas opções: ou usar os métodos AddNew e Update do objeto Recordset (no seu exemplo, este se chama "tabela") ou usar o método Execute do objeto Connection (no seu exemplo, este se chama "con"). Para o primeiro caso, seria algo assim:

tabela.AddNew
tabela.fields("nome").value = "um nome"
tabela.fields("senha").value = "uma senha"
tabela.Update
Para o segundo caso seria:
con.Execute "INSERT INTO tabela (nome, senha) VALUES ('um nome', 'uma senha');"

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado mesmo.

Meu erro estava em que eu usava em uma linha a seguinte expressão

'" & Text1.Text & "'
Após suas intruções e após tentar, vi que isso deve estar errado, não tenho certeza, mas deve, pois quando inseri:
'" & Text1 & "'

não houve erro.

Obrigado

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

O nome da sua Textbox é (ou era) realmente Text1? Se você colocar Text1.Text e não existir nenhuma textbox com esse nome, ele realmente dará erro. Porém, se você escrever apenas Text1, e também não existir textbox alguma com esse nome, ele não dará erro pois achará que se trata de uma variável qualquer.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...