Jump to content
nelgaio

Inserir dados da BD

Recommended Posts

nelgaio

Boas tenho este código para inserir um aluno, mas não está a dar :)

Eu tenho uma outra tabela e gostava de também guardar nela, ou seja guardar os dados do aluno numa tabela e na outra o login e password do aluno.

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "\pap.accdb")
        Dim query As String = "INSERT INTO aluno([nome], [idade], [morada], [ano_nascimento], [saldo_cartao], [telefone], [id_login]) VALUES (@nome, @idade, @morada, @ano_nascimento, @saldo_cartao, @telefone, @id_login)"

        Dim command As New OleDbCommand(query, ConnectionString)

        command.Parameters.Add("@nome", OleDbType.VarChar).Value = txtNome.Text
        command.Parameters.Add("@idade", OleDbType.VarChar).Value = txtIdade.Text
        command.Parameters.Add("@morada", OleDbType.VarChar).Value = txtMorada.Text
        command.Parameters.Add("@ano_nascimento", OleDbType.VarChar).Value = txtNascimento.Text
        command.Parameters.Add("@saldo_cartao", OleDbType.VarChar).Value = txtSaldo.Text
        command.Parameters.Add("@telefone", OleDbType.VarChar).Value = txtTelefone.Text
        command.Parameters.Add("@id_login", OleDbType.VarChar).Value = txtID.Text

        ConnectionString.Open()

        Dim x As Integer = command.ExecuteNonQuery()

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

        ConnectionString.Close()
        command = Nothing
    End Sub

Neste código estava só para inserir o aluno, mas não está a dar e não consigo perceber porque 😲

Share this post


Link to post
Share on other sites
bioshock

Será possível, por ventura, quem sabe, se te apetecer claro, de nos dizeres qual é o erro que te é devolvido..?

Share this post


Link to post
Share on other sites
RobinHood

Eu tenho uma outra tabela e gostava de também guardar nela, ou seja guardar os dados do aluno numa tabela e na outra o login e password do aluno.

Podes fazer assim

Sub para inserir os alunos na tabela alunos

Sub inserirtabelaaluno()

        Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "\pap.accdb")
        Dim query As String = "INSERT INTO TABELA ALUNO (nome,idade,morada,ano_nascimento,saldo_cartao,telefone,id_login) VALUES (@nome, @idade, @morada, @ano_nascimento, @saldo_cartao, @telefone, @id_login)"

        Dim command As New OleDbCommand(query, ConnectionString)

        command.Parameters.Add("@nome", OleDbType.VarChar).Value = txtNome.Text
        command.Parameters.Add("@idade", OleDbType.VarChar).Value = txtIdade.Text
        command.Parameters.Add("@morada", OleDbType.VarChar).Value = txtMorada.Text
        command.Parameters.Add("@ano_nascimento", OleDbType.VarChar).Value = txtNascimento.Text
        command.Parameters.Add("@saldo_cartao", OleDbType.VarChar).Value = txtSaldo.Text
        command.Parameters.Add("@telefone", OleDbType.VarChar).Value = txtTelefone.Text
        command.Parameters.Add("@id_login", OleDbType.VarChar).Value = txtID.Text

        ConnectionString.Open()

        Dim x As Integer = command.ExecuteNonQuery()

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

        ConnectionString.Close()
        command = Nothing
    End Sub

Sub para inserires os alunos na tabela do login

   

Sub inserirtabelalogin()
        Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Application.StartupPath & "\pap.accdb")
        Dim query As String = "INSERT INTO TABELA LOGIN (nome,idade,morada,ano_nascimento,saldo_cartao,telefone) VALUES (@nome,@idade,@morada,@ano_nascimento,@saldo_cartao,@telefone)"
        Dim command As New OleDbCommand(query, ConnectionString)

        command.Parameters.Add("@nome", OleDbType.VarChar).Value = txtNome.Text
        command.Parameters.Add("@idade", OleDbType.VarChar).Value = txtIdade.Text
        command.Parameters.Add("@morada", OleDbType.VarChar).Value = txtMorada.Text
        command.Parameters.Add("@ano_nascimento", OleDbType.VarChar).Value = txtNascimento.Text
        command.Parameters.Add("@saldo_cartao", OleDbType.VarChar).Value = txtSaldo.Text
        command.Parameters.Add("@telefone", OleDbType.VarChar).Value = txtTelefone.Text


        ConnectionString.Open()

        Dim x As Integer = command.ExecuteNonQuery()

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

        ConnectionString.Close()
        command = Nothing
    End Sub  

Depois ao click do botão :

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        'insere os dados na tabela dos alunos
        inserirtabelaaluno()
        'insere os dados na tabela do login
        inserirtabelalogin()

    End Sub

Acho que assim não existe problema para inserir os dados em duas tabelas ao mesmo tempo, porque eu faço assim e não tenho razão de queixa... :)

Quanto ao erro 🤔

Share this post


Link to post
Share on other sites
nelgaio

As tuas tabelas estão com relação? É que não sei se tenho de ter o campo ID_login e introduzir alguma coisa para depois ficarem ligadas as duas tabelas.

Share this post


Link to post
Share on other sites
RobinHood

Tipo na tabela do login acho que não deves precisar.... mas tens de ter em atenção que um aluno só pode ter uma conta de login.... numa situação pratica... , por isso deverá ficar uma relação de 1- 1

Então como um a tabela principal deve ser a dos alunos(sempre com id_aluno) e depois a do login ir ligar á dos alunos

È ISSO???? 🤔 que tu queres??? Consegues acompanhar o meu raciocínio.... ?? 🤔 :thumbsup:

Mas de vez em quando passa-se... porque eu esta tarde tive um problema que não conseguia inserir os dados no sql e isso não apresenta-va nada 😡 ... depois cheguei á conclusão que o nome da tabela na query tinha tinha um ".".... 👎

Mas é bom usar o que tu disses-te.. eu uso sempre. :):thumbsup:

Share this post


Link to post
Share on other sites
nelgaio

Tipo na tabela do login acho que não deves precisar.... mas tens de ter em atenção que um aluno só pode ter uma conta de login.... numa situação pratica... , por isso deverá ficar uma relação de 1- 1

Então como um a tabela principal deve ser a dos alunos(sempre com id_aluno) e depois a do login ir ligar á dos alunos

È ISSO???? 🤔 que tu queres??? Consegues acompanhar o meu raciocínio.... ?? 🤔 :thumbsup:

Mas de vez em quando passa-se... porque eu esta tarde tive um problema que não conseguia inserir os dados no sql e isso não apresenta-va nada 😡 ... depois cheguei á conclusão que o nome da tabela na query tinha tinha um ".".... 👎

Mas é bom usar o que tu disses-te.. eu uso sempre. :):thumbsup:

Então a variável de ligação fica na tabela login, certo?

O Try Catch também server para Access?

Share this post


Link to post
Share on other sites
RobinHood

Ya podes por do tipo por todo o lado por exemplo um botão

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Try

            O TEU CÒDIGO

        Catch ex As Exception
            MsgBox(ex.Message)

        End Try
    End Sub

Ele é muito usável pra a aplicação toda......

Share this post


Link to post
Share on other sites
nelgaio

Pois, já vi que dá jeito :)

Só uma coisa, aquelas duas subs, são dentro do button? Ou são noutro sitio? E depois no button só tenho de chamar?

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.