MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Salvando novos dados

    Compartilhe

    PauloSemblano
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1
    Registrado : 23/04/2018

    Salvando novos dados

    Mensagem  PauloSemblano em 4/10/2018, 11:56

    Tenho o código VBA abaixo que salva um novo lançamento.
    Ao Fechar o Formulário, mesmo que eu tenha digitado um nome qualquer, ele não é salvo.
    Mas notei que automaticamente o Access gera uma nova chave primária, ou seja pula uma chave primária que não será mais utilizada.
    Exemplo: se eu tinha até a chave primária 9, ao fechar o formulário o Access irá saltar a chave primária 10, e ao abrir novamente o formulário a próxima chave primária será 11.
    É normal ou tem como evitar?

    Código:
    Option Compare Database

    Private Sub Form_Load()
        DoCmd.GoToRecord , , acNewRec
        Me.NomeGrupo.SetFocus
    End Sub


    Private Sub btSalvar_Click()
        Me.NomeGrupo.SetFocus
        If Me.NomeGrupo.Text = Empty Then
            MsgBox "Operação cancelada!" & vbNewLine & vbNewLine & _
            "O campo Nome do grupo está vazio!", vbInformation, " CADASTRO DE GRUPOS"
            Exit Sub
        End If
        If (Not IsNull(DLookup("[NomeGrupo]", "tabGrupos", "[NomeGrupo] ='" & Me!NomeGrupo & "'"))) Then
            MsgBox "Operação cancelada!" & vbNewLine & vbNewLine & _
            "O grupo " & Me.NomeGrupo.Text & " já está cadastrado no sistema!", vbInformation, "CADASTRO DE GRUPO"
            Cancel = True 'cancela o evento.
            Me!NomeGrupo.Undo 'desfaz a digitação.
        Else
            DoCmd.GoToRecord , , acNewRec
            MsgBox "Cadastro realizado com sucesso!", vbInformation, " CADASTRO DE GRUPOS"
        End If

    End Sub

    Private Sub btFechar_Click()
        Me.Undo
        DoCmd.Close acForm, "FormGrupos"
    End Sub
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4064
    Registrado : 20/04/2011

    Re: Salvando novos dados

    Mensagem  Silvio em 4/10/2018, 13:25

    Bom dia, bem vindo ao fórum.

    Sim é normal sim acontecer isso.

    Abaixo uma breve explicação a ti:

    Uma chave primária corresponde a um campo ou conjunto de campos que distingue cada registo de todos os outros registos, dado que cria um índice automático em que as referências de cada registo têm de ser sempre diferentes.

    Com o fim de identificar e organizar os registos, as tabelas do Access devem de ter pelo menos um campo ao qual é atribuído uma propriedade especial: Chave primária. Esta propriedade deve ser usada internamente pelo Access, principalmente quando relacionam tabelas e, também, prevenir a repetição de inserções com o mesmo número ou conteúdo igual.

    A chave primária também lhe permite relacionar duas tabelas, para que consiga evitar a duplicação de dados. Por ambos os motivos, é um item de informação muito importante. As propriedades de uma chave primária são as seguintes:

    Não pode ter duplicação – o campo que for definido como chave primária não pode ser igual em dois registos diferentes;


    Não pode ser nula – o campo que é chave primária tem que ter um valor inserido. Não pode ser nulo, num assumir valor zero;


    A primeira tabela – conjunto de dados – dum ficheiro tem de ter pelo menos uma chave primária atribuída a um campo para identificar inequivocamente os registos da tabela. A segunda e seguintes tabelas dum ficheiro podem ter, ou não, chaves primárias atribuídas.
    Como exemplos de campos possíveis de ter o atributo de chave primária temos os números de bilhetes de identidade, números de contribuinte, códigos de produtos, quotas de livros, matrículas de carros, etc. Todos estes campos são únicos para cada caso, não havendo duas situações com o mesmo valor.

    Atribuir chave primária a um campo

    Para inserirmos a chave primária num campo temos de posicionar – na vista de estrutura de uma tabela – o cursor do rato no campo desejado e clicar no comando Chave primária existente no friso Estrutura, o qual irá aparecer na coluna de selecção antes do nome do campo na forma de desenho duma chave.

    Se precisar de atribuir mais do que uma chave primária na mesma tabela em diferentes campos pretendidos, mantendo a tecla Ctrl premida e clicar no comando Chave primária.

    Os tipos de chave primária

    Existem três tipos de chaves primárias que podem ser definidas no Access:

    Chaves primárias de numeração automática – um campo de numeração automática podem ser definida para introduzir automaticamente um número sequencial sempre que um registo é adicionado à tabela. A designação desse campo como chave primária de uma tabela é a forma mais simples de criar uma chave primária. Se não definir uma chave primária antes de guardar uma tabela recém-criada, o Access pergunta-lhe se quer que cria uma chave primária.

    Chaves primárias de campos simples – se tiver um campo que contenha valores exclusivos, como o número de código ou número de referência, pode designar esse campo chave primária. Assim, podemos especificar uma chave primária para um campo que já contenha dados, desde que esse campo não contenha valores duplicados ou nulos.

    Chaves primárias de múltiplos números – em situações em que não possa garantir a exclusividade de nenhum campo simples, podem designar dois ou mais campos como chave primária. A situação mais comum em que isto acontece é na tabela utilizada para relacionar duas ou outras


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]

      Data/hora atual: 23/10/2018, 00:53