MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


2 participantes

    Problema para localizar índice chave primária

    avatar
    FabianaOli
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 45
    Registrado : 09/09/2013

    Problema para localizar índice chave primária Empty Problema para localizar índice chave primária

    Mensagem  FabianaOli 6/10/2013, 12:43

    Tenho uma tabela de cadastro com a chave primária numérica (campo CodigoReq) e sendo formada no evento "antes de atualizar" do botão gravar, conforme abaixo. O CodigoReq é o último gravado na tabela + 1. Porém, num dado momento, o sistema não detecta mais o último código gravado e por isso ocorre a duplicidade não permitindo, assim, a gravação do novo registro.

    Private Sub CmdGravar_Click()

       On Error Resume Next
       
       DoCmd.RunCommand acCmdSaveRecord
                 
       Call Bloqueiabotoes
       
       CmdAlterar.Enabled = True
       CmdNovo.Enabled = True
       cboListaReq.Enabled = True
       Me.Refresh
             
       Me.txtBairro = ""
       Me.txtCidade = ""
       Me.txtUF = ""
       Me.txtCEP = ""
             
    End Sub


    Private Sub Form_BeforeUpdate(Cancel As Integer)
    On Error Resume Next
    Dim strMsg As String
    Dim strTitle As String
    Dim IntRetVal As Integer
    Dim strRegistro As String
    Dim numUltCodigoReq As Integer
    Dim numCodForm As Integer

    Dim db As Database
    Dim t As Recordset
    Set db = DBEngine(0)(0)
    Set db = CurrentDb
    Set t = db.OpenRecordset("CadastroReq", dbOpenTable)
                       
       If Me.Dirty Then
       
                 
           If Me.NewRecord Then
                                   
                   strMsg = "Confirma a inserção deste registro?"
                   strTitle = "Inserindo Novo"
                   IntRetVal = MsgBox(strMsg, vbExclamation + vbYesNo, strTitle)
                   
               If IsNull([CodigoReq]) Then
                   If t.BOF = True And t.EOF = True Then
                       [CodigoReq] = 1
                                   
                   Else
                       t.MoveLast
                       numUltCodigoReq = t![CodigoReq]
                       [CodigoReq] = numUltCodigoReq + 1
                   End If
                           
                     
               End If
           Else
                   
                   strMsg = "Confirma a alteracao do registro?"
                   strTitle = "Alterando registro"
                   IntRetVal = MsgBox(strMsg, vbExclamation + vbYesNo, strTitle)
           End If
               
                         
           Select Case IntRetVal
               Case vbNo
                  Me.Undo
             End Select
       
       Else
           DoCmd.CancelEvent
           Me.Undo
       End If
         
       t.Close
       db.Close
     
    End Sub
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    Problema para localizar índice chave primária Empty Re: Problema para localizar índice chave primária

    Mensagem  JPaulo 7/10/2013, 15:29

    Ola Fabiana, algumas correções ae;

    Até recomendaria, usar DAO (Dim db As DAO.Database e Dim t As DAO.Recordset)


    Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim strMsg As String
    Dim strTitle As String
    Dim IntRetVal As Integer
    Dim db As Database
    Dim t As Recordset

    Set db = CurrentDb
    Set t = db.OpenRecordset("SELECT * FROM CadastroReq", dbOpenDynaset)
                     
    t.MoveFirst
    t.MoveLast
     
      If Me.Dirty Then
     
                 
          If Me.NewRecord Then
                                 
                  strMsg = "Confirma a inserção deste registro?"
                  strTitle = "Inserindo Novo"
                  IntRetVal = MsgBox(strMsg, vbExclamation + vbYesNo, strTitle)
                 
              If IsNull(Me.CodigoReq) Then
                  If t.BOF = True And t.EOF = True Then
                      Me.CodigoReq = 1
                  Else
                      Me.CodigoReq = t!CodigoReq + 1
                  End If
              End If
          Else
                  strMsg = "Confirma a alteracao do registro?"
                  strTitle = "Alterando registro"
                  IntRetVal = MsgBox(strMsg, vbExclamation + vbYesNo, strTitle)
          End If
             
                       
          Select Case IntRetVal
              Case vbNo
                 Me.Undo
            End Select
      Else
          DoCmd.CancelEvent
          Me.Undo
      End If
         
      t.Close: Set t = Nothing
      db.Close: Set db = Nothing
    End Sub


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    Problema para localizar índice chave primária Folder_announce_new Utilize o Sistema de Busca do Fórum...
    Problema para localizar índice chave primária Folder_announce_new 102 Códigos VBA Gratuitos...
    Problema para localizar índice chave primária Folder_announce_new Instruções SQL como utilizar...
    avatar
    FabianaOli
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 45
    Registrado : 09/09/2013

    Problema para localizar índice chave primária Empty Não localiza o último registro

    Mensagem  FabianaOli 10/10/2013, 01:18

    Muito obrigada pela sua atenção. Porém, agora o sistema parou de localizar o último registro da tabela Correspondencias. Nessa tabela, o código de controle é o CodCorresp que é um sequencial que retorna ao número 0001 no ínicio de cada ano. Consegui cadastrar vários registros, mas agora está voltando para o 0001 /2013. Desculpe, mas não consegui transcrever o seu código para esse novo problema.
    Obrigada.



    Private Sub Form_BeforeUpdate(Cancel As Integer)
    On Error Resume Next

    Dim strUltCorresp As String ' código completo do último pedido
    Dim dataUltCorresp As Date ' data do último pedido
    Dim ano As String ' parte ano+mês do código (parte 1)
    Dim numUltCorresp As Integer ' parte numérica seqüencial do código (parte 2)
    Const formatoNum As String = "000#" 'formato da parte numérica: 4 dígitos

    Dim strMsg As String
    Dim strTitle As String
    Dim IntRetVal As Integer
    Dim strRegistro As String
    ' Abre o banco de dados e a tabela tabPedidos
    Dim db As Database
    Dim t As Recordset
    Set db = DBEngine(0)(0)
    Set db = CurrentDb
    Set t = db.OpenRecordset("Correspondencias", dbOpenTable)
    ' Parte 1 do código: ano e mês atuais (ambos com 2 dígitos)
    ano = Right(CStr(Year(Now)), 4)

    '--------------------------------------------------
    ' Montagem da parte 2 do código: número seqüencial
    '--------------------------------------------------
    ' A tabela não tem registros; começa a contagem

    If Me.Dirty Then

    If Me.NewRecord Then
    strMsg = "Confirma a inserção deste registro?"
    strTitle = "Inserindo Novo"
    IntRetVal = MsgBox(strMsg, vbExclamation + vbYesNo, strTitle)

    If IsNull([CodCorresp]) Then

    If t.BOF = True And t.EOF = True Then
    [CodCorresp] = Format(1, formatoNum) & " /" & ano

    ' A tabela tem registro; então, vai para o último

    Else

    t.MoveLast 'Obtém código e data do último pedido

    strUltCorresp = t![CodCorresp]
    dataUltCorresp = t![Data]
    numUltCorresp = Val(Left(strUltCorresp, 4))

    ' Novo pedido é feito no mesmo mês do anterior

    If Year(Now) = Year(dataUltCorresp) Then
    [CodCorresp] = Format(numUltCorresp + 1, formatoNum) & " /" & ano
    ' O mês atual é diferente; reinicia a contagem

    Else
    [CodCorresp] = Format(1, formatoNum) & " /" & ano

    End If
    End If
    End If
    Else
    strMsg = "Confirma a alteracao do registro?"
    strTitle = "Alterando registro"
    IntRetVal = MsgBox(strMsg, vbExclamation + vbYesNo, strTitle)
    End If

    Select Case IntRetVal
    Case vbNo
    Me.Undo
    End Select


    Else
    DoCmd.CancelEvent
    Me.Undo

    End If

    ' Fecha a tabela e o banco de dados
    t.Close
    db.Close

    End Sub
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    Problema para localizar índice chave primária Empty Re: Problema para localizar índice chave primária

    Mensagem  JPaulo 10/10/2013, 09:06

    No seu código estou a ver que não fez como lhe passei.

    Pode por favor, anexar aqui parte do seu banco ?


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    Problema para localizar índice chave primária Folder_announce_new Utilize o Sistema de Busca do Fórum...
    Problema para localizar índice chave primária Folder_announce_new 102 Códigos VBA Gratuitos...
    Problema para localizar índice chave primária Folder_announce_new Instruções SQL como utilizar...
    avatar
    FabianaOli
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 45
    Registrado : 09/09/2013

    Problema para localizar índice chave primária Empty Re: Problema para localizar índice chave primária

    Mensagem  FabianaOli 10/10/2013, 09:41

    Obrigada pela atenção. Eu fiz na outra tabela:CadastroReq (cadastro de requerentes / Clientes). Esse problema está ocorrendo, agora, em outra tabela: Correspondencias. Na tabela CadastroReq, o CodigoReq é uma chave primária de sequencial numérico e coloquei seu código - funcionando perfeitamente. Porém, agora estou com problema na tabela Correspondencias para a geração de novos registros na qual é necessário que o sistema encontre o último registro, ou seja, seu CodCorresp somando 1 ao gravar o novo registro. O campo é string, pois, é formado assim: sequencial (0001, 0002, 0003 etc), um espaço, uma barra e o ano corrente. Na mudança de ano, esse código vai passar a formar 0001 /2014, 0002 /2014... ;; 0001 /2015 etc. Já cadastrei vários registros novos com o código de programação que lhe passei, porém, como parou de localizar o último + 1 e está retornando como se fosse o início do ano - > 0001 /2013 o que dá erro porque esse código já existe, gostaria de verificar se você poderia transcrever o seu código, que foi perfeito na CadastroReq, para o da Correspondencia. Obrigada.

    Conteúdo patrocinado


    Problema para localizar índice chave primária Empty Re: Problema para localizar índice chave primária

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 26/4/2024, 20:34