Jump to content
ReactionN

Erro ao inserir dados na BD Access

Recommended Posts

ReactionN

Boas pessoal

Tenho aqui um probleminha com o access no VB 2008.

Eu tenho um formulário onde o cliente insere os seus dados ( codcli,nome, morada, telefone, codigo postal, email, utilizador e password) e não sei porque, está sempre a dar este erro "Não foi fornecido nenhum valor para um ou mais parâmetros necessários.", sendo que o codcli está em numeração automatica

Tenho também um problema com o sistema de login, que também não sei porque, ensiste em não funcionar.

Junto envio o código para poderem avaliar onde está mal.

Login:

  Dim ole As String = "SELECT count(*) From login where utilizador = ? and password = ?;"
        Dim myConnectionString As String = _
        "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "\base de dados.accdb"
        Dim connection As New OleDbConnection(myConnectionString)
        Dim command As New OleDbCommand(ole, connection)
        command.Parameters.Add("@utilizador", OleDbType.VarChar).Value = txt_utilizador.Text
        command.Parameters.Add("@password", OleDbType.VarChar).Value = txt_password.Text

        connection.Open()

        Dim x As Object
        x = command.ExecuteScalar

        If Integer.Parse(x.ToString) = 1 Then
            MsgBox("Login efectuado com sucesso!", MsgBoxStyle.Information, "Login")
            Me.Hide()
            Menu_Principal.Show()
        Else
            MsgBox("Login mal sucedido", MsgBoxStyle.Information, "Login")
        End If
        connection.Close()
        connection = Nothing
        command = Nothing
    End Sub

Registar:

Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "base de dados.accdb")
        Dim query As String = "INSERT INTO Clientes([utilizador], [Password], [E-mail], [Nome], [Morada], [Código_Postal], [Telefone]) VALUES (@Utilizador, @Password, @E-mail, @Nome, @Morada, @Código_Postal, @Telefone)"

        Dim command As New OleDbCommand(query, ConnectionString)

        command.Parameters.Add("@Utilizador", OleDbType.LongVarChar).Value = UtilizadorTextBox.Text
        command.Parameters.Add("@Password", OleDbType.LongVarChar).Value = PasswordTextBox.Text
        command.Parameters.Add("@E-mail", OleDbType.LongVarChar).Value = EmailTextBox.Text
        command.Parameters.Add("@Nome", OleDbType.LongVarChar).Value = NomeTextBox.Text
        command.Parameters.Add("@Morada", OleDbType.LongVarChar).Value = MoradaTextBox.Text
        command.Parameters.Add("@Código_Postal", OleDbType.WChar).Value = Código_PostalTextBox.Text
        command.Parameters.Add("@Telefone", OleDbType.LongVarChar).Value = TelefoneTextBox.Text


        ConnectionString.Open()

        Dim x As Integer = command.ExecuteNonQuery()

        If x < 1 Then
            MessageBox.Show("Erro ao inserir", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Else
            MessageBox.Show("Registo inserido com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If

        ConnectionString.Close()
        command = Nothing

Um obrigado pela vossa atenção, qualquer coisa digam  :)

Share this post


Link to post
Share on other sites
ReactionN

Vai de mal a pior, para ler os dados que foram inseridos directamente no Access ele lê, mas quando é para inserir diz que não consegue encontrar o ficheiro

Share this post


Link to post
Share on other sites
jpaulino

Verifica se o nome dos campos que estás a utilizar estão correctos.

Share this post


Link to post
Share on other sites
ReactionN

Eu agora já consegui ultrapassar a fasse do registar, voltei a ligar a BD e está a registar tudo,

O que eu queria agora era tratar do login, em que esse eu não consigo mesmo fazer, se me puderes ajudar agradecia imenso  :)

Queria também saber se existe a possibilidade de sermos nós a controlar o nº do cliente, porque em cima diz que é o registo nº4, na textbox aparece -1 mas na base de dados é o 5.

Share this post


Link to post
Share on other sites
jpaulino

O que se passa com o login? E qual é o problema com o número do cliente?

Share this post


Link to post
Share on other sites
ReactionN

O que se passa com o login é que eu quando tento adaptar dá sempre algum erro, mas se o esse código tiver certo, posso ser eu que estou a fazer mal.

Em relação ao nº de cliente é que quando abro o form Registar ( onde crio os novos utilizadores ) no nº de cliente aparece -1, e eu quero que apareca o nº do novo registo, coisa que também n consigo fazer porque quando carrego no botão +, na barra que é inserida quando metemos uma coluna em detail no formulário, o código não aparece, porque a ideia é quando abro o formulário, aparecer tudo em branco excepto o nº de cliente que deve ter o valor do novo registo.

ps: O código que tens no teu blog funciona com o Access?

Obrigado desde já Jpaulino

Share this post


Link to post
Share on other sites
Andrepereira9

Boas

Em relação ao código de login, não vejo nenhum erro, e estive a testar e funcionou a 100%.

Mas se dizes que te dá erro, quando tentas adaptar, é porque estás a fazer algo mal

Para saber o valor do nº cliente ao abrir a form Registar, podes fazer isto no evento .Load do Form

Ou seja, vai buscar o valor mais alto ao campo Id, e incrementa mais um valor, para criar um  código de registo sequencial

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim ole As String = "SELECT Max(id) from Login;" ' Seleciona o valor mais alto do campo ID
        Dim myConnectionString As String = _
        "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Documents and Settings\Administrador\Ambiente de trabalho\BD.accdb"
        Dim connection As New OleDbConnection(myConnectionString)
        Dim command As New OleDbCommand(ole, connection)
        
        connection.Open()

        Dim x As Integer
        x = command.ExecuteScalar
        x += 1 ' Incrementa um valor ao ultimo registo inserido na BD
        MsgBox(x.ToString)

        connection.Close()
        connection = Nothing
        command = Nothing
End Sub


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
ReactionN

André, obrigado desde já

vou testar agora e já digo alguma coisa

Share this post


Link to post
Share on other sites
jpaulino

O que se passa com o login é que eu quando tento adaptar dá sempre algum erro, mas se o esse código tiver certo, posso ser eu que estou a fazer mal.

Em relação ao nº de cliente é que quando abro o form Registar ( onde crio os novos utilizadores ) no nº de cliente aparece -1, e eu quero que apareca o nº do novo registo, coisa que também n consigo fazer porque quando carrego no botão +, na barra que é inserida quando metemos uma coluna em detail no formulário, o código não aparece, porque a ideia é quando abro o formulário, aparecer tudo em branco excepto o nº de cliente que deve ter o valor do novo registo.

ps: O código que tens no teu blog funciona com o Access?

Obrigado desde já Jpaulino

Mas que erro? Parece estar certo.

Em relação ao nº de cliente usa o autonumber e não te ponhas a inventar.

Sim, o código funciona com o Access :)

Share this post


Link to post
Share on other sites
ReactionN

É isso que já tava feito, só que quando o form Registar aparece, no nº de cliente aparece lá -1 , mas depois aquilo volta ao normal.

Manda-me só o link sff que eu tinha isso aqui numa janela e fecheia sem querer sff.

Eu quando referi se funcionava é em relação aquele post que tu tens no teu site acerca do SQL.

Sendo assim, resta-me apenas por o programa a ir procurar o utilizador e passowrd á base de dados consoante aquilo que o utilizador põe nas text box.

Share this post


Link to post
Share on other sites
ReactionN

Eu já estive na wiki do portugal a programar e vi essa informação, mas para pesquisar não sei que tipo de select usar, se aquele que encontra os resultados todos ou aquele que encontra só um.

Outra duvida, quando ligamos a BD ao nosso programa em VB, se metermos a BD na pasta BIN\Debug o programa encontra, só que apesar de ter a BD nessa pasta, eu quando criei a ligação fiz com a que estava no ambiente de trabalho, será que tenho de criar uma nova ligação?

É que depois tenho medo que quando voltar a por os campos no form registar, que aquilo deixe de funcionar.

Share this post


Link to post
Share on other sites
Caça

Depende da maneira de como crias-te a ligação. Quando a crias-te ele fez-te essa pergunta...


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
ReactionN

certo caça, mas a minha professora disse que quando criamos a ligação, tinhamos de escolher a opção não porque só assim é que ele gravava na BD.

Qual é a tua opinião, devo escolher o sim ou continuo com o não?

Share this post


Link to post
Share on other sites
Caça

Eu recomendaria não(mesmo que a bd esteja na pasta do programa), mas tu é que sabes.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
ReactionN

É que hoje exprimentei noutro pc que não este, e deu erro, dizia que a BD n estava no caminho que pus aqui, é "pensares" que isto é um trabalho para ser apresentado num computador que não este.

O não a stora disse que assim, o pograma guardava tudo na BD e com o SI ele não guardava.

Continuo sem saber muito bem qual escolher

Share this post


Link to post
Share on other sites
Caça

O não a stora disse que assim, o pograma guardava tudo na BD e com o SI ele não guardava.

Dai eu te ter sugerido o não.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
ReactionN

Mas depois como é que contorno o facto de não funcionar em outros computadores?

Share this post


Link to post
Share on other sites
Caça

Tens de alterar a connectionstring


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • 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.