Jump to content
Daniela C

Form nova refeição - erro

Recommended Posts

Daniela C

Olá boa tarde, espero que alguém me possa ajudar.

Tenho um form com dados para preencher uma nova refeição e guardá-la. Mas ao guardá-los aparece o seguinte erro: As alterações solicitadas para a tabela não foram satisfatórias já que criariam valores duplicados no índice, chave primária ou relação. Altere os dados no campo ou campos que contêm os dados duplicados, remova o índice ou redefina o índice para possibilitar entradas duplicadas e tente novamente!

No código : ligacao_bd.objCmd.ExecuteNonQuery()

alguém me pode ajudar? mando o código todo do form para perceberem melhor

Imports System.Data
Imports System.Data.OleDb

Public Class Form9
    Public objconnection As OleDbConnection
    Public objcmd As OleDbCommand
    Public configuracao_ligacao As String
    Public strsql As String

    Public Sub nver()
        txt_nome.Enabled = False
        cb_tipo.Enabled = False
        txt_id.Enabled = False
        txt_preco.Enabled = False
        CheckBox1.Enabled = False
    End Sub

    Private Sub limpa()
        txt_nome.Enabled = ""
        cb_tipo.Enabled = ""
        txt_id.Enabled = ""
        txt_preco.Enabled = ""
        CheckBox1.Enabled = ""
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_novo.Click
        If cmd_novo.Enabled = True Then
            desligado()
            MsgBox("PREENCHA TODOS OS CAMPOS OBRIGATÓRIOS!", MsgBoxStyle.Information, "PREENCHER")
            ver()
            liga_bd()
        End If
    End Sub

    Public Sub ver()
        txt_nome.Enabled = True
        cb_tipo.Enabled = True
        txt_id.Enabled = True
        txt_preco.Enabled = True
        CheckBox1.Enabled = True
    End Sub

    Private Sub ligado()
        cmd_novo.Enabled = False
        cmd_gravar.Enabled = True
        CheckBox1.Enabled = True
   End Sub

    Private Sub desligado()
        cmd_novo.Enabled = False
        cmd_gravar.Enabled = False
        CheckBox1.Enabled = False
        
    End Sub

    Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        nver()
    End Sub

    Public accao As String

    Private Function verificar()
        If txt_id.Text <> "" And cb_tipo.Text <> "" And txt_nome.Text <> "" And txt_preco.Text <> "" Then
            Return True
        Else
            Return False
        End If
    End Function

    Private Sub limpar()
        txt_nome.Enabled = ""
        cb_tipo.Enabled = ""
        txt_id.Enabled = ""
        txt_preco.Enabled = ""
        CheckBox1.Enabled = ""
    End Sub

    Public Sub liga_bd()
        ligacao_bd.LIGACAO()
        ligacao_bd.objConnection = New OleDbConnection(ligacao_bd.configuracao_ligacao)
        ligacao_bd.objConnection.Open()
    End Sub

  

    Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If verificar() = True Then
            'maiusculas()
            liga_bd()

            Dim resp As String
            resp = MsgBox("DESEJA GUARDAR O REGISTO ?", MsgBoxStyle.YesNo, "GUARDAR?")
            If resp = vbYes Then
                Dim strsql As String
                Dim semana As Integer = DatePart(DateInterval.WeekOfYear, Now())
                Dim disp As Boolean
                If CheckBox1.Checked = True Then
                    disp = True
                Else
                    disp = False
                End If
                strsql = "INSERT INTO refeicao(id_ref,tipo,nome,preco,semana,disponivel) VALUES('" & txt_id.Text & "','" & cb_tipo.Text & "','" & txt_nome.Text & "','" & txt_preco.Text & "'," & semana & "," & disp & ")"
                ligacao_bd.objCmd = New OleDbCommand(strsql, ligacao_bd.objConnection)
                ligacao_bd.objCmd.ExecuteNonQuery()
                MsgBox("REGISTO GUARDADO COM SUCESSO!", MsgBoxStyle.Information, "REGISTO GUARDADO")
            Else
                MsgBox("REGISTO NÃO FOI GUARDADO!", MsgBoxStyle.Information, "REGISTO NÃO GUARDADO")
            End If
        End If

        ligacao_bd.objConnection.Close()

        nver()
        limpar()



    End Sub

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

    End Sub
End Class

Share this post


Link to post
Share on other sites
Daniela C

Mas eu preciso de ter valores idênticos , como faço para isto não me dar este erro?

Por exemplo quando quisesse sopa - automaticamente aparecia S1, se inserisse outra automaticamente aparecia S2

Carne - C1, C2 - quando inseri-se novo prato de carne, etc..

Não sei se me faço entender.

Share this post


Link to post
Share on other sites
Daniela C

Ou seja teria que ser numeração automática certo? É que eu ainda só estou no inicio e ainda não percebo muito disto.  :bored:

É que se tiver que mudar para numeração automática se calhar vou ter que mudar muita coisa no meu programa :s

Share this post


Link to post
Share on other sites
Daniela C

IDLocalizacao (Número) » Obrigatório (será ligada a uma sub-tabela)

Sim já li , mas peço desculpa não estou a entender .

Share this post


Link to post
Share on other sites
bioshock

É assim que deves proceder. O problema pode existir caso precises de relações (no Access), se assim for não podes usar a maneira como no link está exposto porque não te vai deixar criar duplicações (que é o que te está acontecer).

Caso não precises de relações (pelo menos as convencionais que utilizas no Access » Menu Relações), podes utilizar essa forma que não te dará problemas em duplicação de campos.

No entanto, deves ter em atenção que: num campo de numeração automática constará números e apenas só números. Se pretendes algo como exemplificaste (entenda-se: S1, S2) isto são strings. Para uma melhor percepção podes nos apresentar as/os tabelas/campos com que estás a trabalhar neste momento.

Edit: E agora vou trabalhar, portanto, só te poderei responder mais logo.

Share this post


Link to post
Share on other sites
Daniela C

Ok obrigado pelas dicas.

Eu vou tentar resolver o problema com o meu professor, se não contacto mais logo  :)

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.