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

    [Resolvido]Mensagem do Access

    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Mensagem do Access Empty [Resolvido]Mensagem do Access

    Mensagem  Assis Seg 04 Fev 2019, 11:40 pm

    Boa noite Amigos

    Estou a receber esta informação da imagem que anexo,

    [Resolvido]Mensagem do Access Sem_tz71


    Depois de executar o seguinte comando.

    Mas tudo o que quero que o comando execute é executado

    Private Sub Comando10_Click()

    Dim Cancel As Integer
    If IsNull(Me!Data) Or Me!Data = "" Then
    MsgBox "Falta A Data", vbExclamation, "Aviso"
    Cancel = True 'Cancela o evento
    Me.Data.SetFocus
    Exit Sub


    Else
    If IsNull(Me!Cliente) Or Me!Cliente = "" Then
    MsgBox "Falta o Nome do Cliente", vbExclamation, "Aviso"
    Cancel = True 'Cancela o evento
    Me.Cliente.SetFocus
    Exit Sub

    Else
    If IsNull(Me!Tipo) Or Me!Tipo = "" Then
    MsgBox "Falta o Tipo de Recebimento", vbExclamation, "Aviso"
    Cancel = True 'Cancela o evento
    Me.Tipo.SetFocus
    Exit Sub

    Else
    If IsNull(Me!Doc) Or Me!Doc = "" Then
    MsgBox "Falta o N? do Documento", vbExclamation, "Aviso"
    Cancel = True 'Cancela o evento
    Me.Doc.SetFocus
    Exit Sub

    Else
    If IsNull(Me!ValorPE) Or Me!ValorPE = "" Or Me!ValorPE = 0 Then
    MsgBox "Falta o Valor do Pedido de Encomenda", vbExclamation, "Aviso"
    Cancel = True 'Cancela o evento
    Me.ValorPE.SetFocus
    Exit Sub

    Else
    If IsNull(Me!Recebido) Or Me!Recebido = "" Or Me!Recebido = 0 Then
    MsgBox "Falta o Valor do Recebimento Adiantado", vbExclamation, "Aviso"
    Cancel = True 'Cancela o evento
    Me.Recebido.SetFocus
    Exit Sub


    End If
    End If
    End If
    End If
    End If
    End If


    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim Confirma
    Confirma = MsgBox("Confirma a Grava??o dos Dados Inseridos ?", vbYesNo, "Aviso")
    If Confirma = vbYes Then

    '--------------------------------------------------------------
       Dim rs As Recordset
       Set db = CurrentDb()
       Set rs = db.OpenRecordset("Clientes", dbOpenDynaset)
       rs.FindFirst "[Nome] = '" & Me![Cliente] & "'"
       rs.Edit
       rs("adiantado") = Nz(rs("adiantado"), 0) + Me.Recebido
       rs.Update
       rs.Close
       Set rs = Nothing
       Set db = Nothing
     '--------------------------------------------------
     
    Set rst = CurrentDb.OpenRecordset("Adiantado")
    With rst

    .AddNew
    rst("Data") = Me.Data
    rst("cliente") = Me.Cliente
    rst("Tipo") = Me.Tipo
    rst("banco") = Me.Banco
    rst("vrecebido") = Me.Recebido
    rst("porcontade") = Me.PorContaDe
    rst("Loja") = Forms.menu.Loja
    rst("Doc") = Me.Doc
    rst("valorencomenda") = Me.ValorPE
    rst("saldo") = Me.Saldo 'Me.ValorPE - Me.Recebido
    .Update
    End With


    Final:
    Me.Incorporado37.Requery

    Me.Data = Date
    Me.Cliente = ""
    Me.Tipo = ""
    Me.Banco = ""
    Me.Doc = ""
    Me.Recebido = ""
    Me.PorContaDe = ""
    Me.ValorPE = ""
    Me.Saldo = "0.00"
    Me.Texto26.Visible = False
    Call Form_Current
    Me.Data.SetFocus


    '------------------------
    If MsgBox("Imprimir Recibo Adiantado ?", vbYesNo, "Aviso") = vbYes Then

     DoCmd.openForm "ReciboAD"
    Else
     DoCmd.Close acForm, "ReciboAD"
    End If
    '-------------------------
    'Exit Sub

    Else
    MsgBox "Cancelar Gravação ?", vbCritical, "Aviso"
    Me.Data = Date
    Me.Cliente = ""
    Me.Tipo = ""
    Me.Doc = ""
    Me.Banco = ""
    Me.Recebido = ""
    Me.PorContaDe = ""
    Me.ValorPE = ""
    Me.Texto26.Visible = False
    Me.Saldo = "0.00"
    Call Form_Current
    Me.Data.SetFocus
    Exit Sub
    End If


    End Sub


    .................................................................................
    *** Só sei que nada sei ***
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Mensagem do Access Empty Re: [Resolvido]Mensagem do Access

    Mensagem  JPaulo Ter 05 Fev 2019, 9:51 am

    Olá;

    O amigo Assis vai-me desculpar, mas o que vejo aqui é nada mais do que uma MIXÓRDIA sem qualquer modelagem.

    Normalmente essa mensagem aparece, quando se está a utilizar palavras reservadas do Ms Access e não somente.

    Exempo: Nome, Data, Cancel, etc...

    Muito para além disso, você está a utilizar mal a modelagem de dados, ou seja, está a utilizar inumeros Else`s quando deveria de utilizar ElseIf, ou os If`s separados.

    Esta instrução está incorreta, jamais irá cancelar o evento, porque esse cancel não faz parte do evento Click():

    Cancel = True 'Cancela o evento

    Ainda mais trechos bem mal:

    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim Confirma
    Confirma = MsgBox("Confirma a Grava??o dos Dados Inseridos ?", vbYesNo, "Aviso")
    If Confirma = vbYes Then

    '--------------------------------------------------------------
      Dim rs As Recordset
      Set db = CurrentDb()
      Set rs = db.OpenRecordset("Clientes", dbOpenDynaset)
      rs.FindFirst "[Nome] = '" & Me![Cliente] & "'"
      rs.Edit
      rs("adiantado") = Nz(rs("adiantado"), 0) + Me.Recebido
      rs.Update
      rs.Close
      Set rs = Nothing
      Set db = Nothing
    '--------------------------------------------------


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

    [Resolvido]Mensagem do Access Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Mensagem do Access Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Mensagem do Access Folder_announce_new Instruções SQL como utilizar...
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Mensagem do Access Empty Re: [Resolvido]Mensagem do Access

    Mensagem  JPaulo Ter 05 Fev 2019, 10:14 am

    Aconselho a mudar todos os nomes dos controles e campos que usam palavras reservadas do Ms Access.

    Uma modelagem correta:

    Código:
    Private Sub Comando10_Click()
    Dim db As DAO.Database
    Dim db1 As DAO.Database
    Dim rs As DAO.Recordset
    Dim rst As DAO.Recordset
    Dim Msg$

        If IsNull(Me!Data) Or Me!Data = "" Then
            MsgBox "Falta A Data", vbExclamation, "Aviso"
            Me.Data.SetFocus
            Exit Sub
        End If

        If IsNull(Me!Cliente) Or Me!Cliente = "" Then
            MsgBox "Falta o Nome do Cliente", vbExclamation, "Aviso"
            Me.Cliente.SetFocus
            Exit Sub
        End If

        If IsNull(Me!Tipo) Or Me!Tipo = "" Then
            MsgBox "Falta o Tipo de Recebimento", vbExclamation, "Aviso"
            Me.Tipo.SetFocus
            Exit Sub
        End If

        If IsNull(Me!Doc) Or Me!Doc = "" Then
            MsgBox "Falta o N? do Documento", vbExclamation, "Aviso"
            Me.Doc.SetFocus
            Exit Sub
        End If
       
        If IsNull(Me!ValorPE) Or Me!ValorPE = "" Or Me!ValorPE = 0 Then
            MsgBox "Falta o Valor do Pedido de Encomenda", vbExclamation, "Aviso"
            Me.ValorPE.SetFocus
            Exit Sub
        End If

        If IsNull(Me!Recebido) Or Me!Recebido = "" Or Me!Recebido = 0 Then
            MsgBox "Falta o Valor do Recebimento Adiantado", vbExclamation, "Aviso"
            Me.Recebido.SetFocus
            Exit Sub
        End If

        If MsgBox("Confirma a Gravação dos Dados Inseridos ?", vbYesNo, "Aviso") = vbNo Then
            Me.Data = Date
            Me.Cliente = ""
            Me.Tipo = ""
            Me.Doc = ""
            Me.Banco = ""
            Me.Recebido = ""
            Me.PorContaDe = ""
            Me.ValorPE = ""
            Me.Texto26.Visible = False
            Me.Saldo = "0.00"
            Call Form_Current
            Me.Data.SetFocus
            Exit Sub
        Else
    '--------------------------------------------------------------
      Set db = CurrentDb()
      Set rs = db.OpenRecordset("Clientes", dbOpenDynaset)
        rs.FindFirst "[Nome] = '" & Me![Cliente] & "'"
        rs.Edit
        rs("adiantado") = Nz(rs("adiantado"), 0) + Nz(Me.Recebido, 0)
        rs.Update
      rs.Close: Set rs = Nothing
      db.Close: Set db = Nothing
     '--------------------------------------------------
     
        Set db1 = CurrentDb()
        Set rst = db1.OpenRecordset("Adiantado", dbOpenDynaset)
        With rst
        .AddNew
            rst("Data") = Me.Data.Value
            rst("cliente") = Me.Cliente.Value
            rst("Tipo") = Me.Tipo.Value
            rst("banco") = Me.Banco.Value
            rst("vrecebido") = Me.Recebido.Value
            rst("porcontade") = Me.PorContaDe.Value
            rst("Loja") = Forms!menu.Form!Loja
            rst("Doc") = Me.Doc.Value
            rst("valorencomenda") = Me.ValorPE.Value
            rst("saldo") = Me.Saldo.Value 'Me.ValorPE - Me.Recebido
        .Update
        End With
      rst.Close: Set rst = Nothing
      db1.Close: Set db1 = Nothing
    '......................................................................
       
        Me.Incorporado37.Requery
        Me.Data = Date
        Me.Cliente = ""
        Me.Tipo = ""
        Me.Banco = ""
        Me.Doc = ""
        Me.Recebido = ""
        Me.PorContaDe = ""
        Me.ValorPE = ""
        Me.Saldo = "0.00"
        Me.Texto26.Visible = False
            Call Form_Current
        Me.Data.SetFocus

    '------------------------
        If MsgBox("Imprimir Recibo Adiantado ?", vbYesNo, "Aviso") = vbYes Then
        DoCmd.OpenForm "ReciboAD"
        Else
        Exit Sub
        End If
    '-------------------------
    Exit_1:
        DoCmd.Hourglass False
        DoCmd.Echo True
        Exit Sub

    1:
        DoCmd.Hourglass False
        DoCmd.Echo True
        Msg = "Erro # " & Str(Err.Number) & " gerado na " & Err.Source _
            & vbNewLine & vbNewLine & "Descrição: " & Err.Description _
            & vbNewLine & vbNewLine & "Por favor contate o Administrador do Sistema."
        MsgBox Msg, vbMsgBoxHelpButton + vbCritical, "Erro", Err.HelpFile, Err.HelpContext
        Resume Exit_1
    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

    [Resolvido]Mensagem do Access Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Mensagem do Access Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Mensagem do Access Folder_announce_new Instruções SQL como utilizar...
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Mensagem do Access Empty Re: [Resolvido]Mensagem do Access

    Mensagem  Assis Ter 05 Fev 2019, 1:19 pm

    Boa tarde JPaulo

    Apliquei o seu código e a Aviso do Access continuou.

    Cheguei a conclusão que o erro está na formatação de uma caixa de combinação, para não mostrar casas decimais.

    Mas a caixa de combinação é alimentada por um campo da tabela que não tem casas decimais. Na tabela esta formatado como "Numero Inteiro", casas decimais "0"

    Se formatar a caixa de combinação ----> Dá o Aviso

    Se não formatar a caixa ------------------> Não dá o Aviso

    Obrigado

    [Resolvido]Mensagem do Access Sem_tz73


    .................................................................................
    *** Só sei que nada sei ***
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Mensagem do Access Empty Re: [Resolvido]Mensagem do Access

    Mensagem  JPaulo Ter 05 Fev 2019, 1:35 pm

    Certo.

    Você não mencionou nada do que está mal e eu lhe disse acima, mas vá por mim, corriga tudo o que está mal, porque um dia destes o banco vai corromper.

    Teste assim:

    Código:
    NDOC: CInt([DOC])

    Mas retire toda a formatação da caixa de combinação, deixe esse trabalho para o SQL da origem.


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

    [Resolvido]Mensagem do Access Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Mensagem do Access Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Mensagem do Access Folder_announce_new Instruções SQL como utilizar...
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    [Resolvido]Mensagem do Access Empty Re: [Resolvido]Mensagem do Access

    Mensagem  Assis Ter 05 Fev 2019, 1:53 pm

    JPaulo

    Esta última resolveu. NDOC: CInt([DOC])

    Quanto á sua pergunta: Sim mudei os nomes dos campos e controles

    Obrigado.

    PS : Esta BD já funciona á quatro anos e até hoje tudo OK, e está sempre em evolução, com a ajuda do Forum.

    Obrigado



    .................................................................................
    *** Só sei que nada sei ***
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Mensagem do Access Empty Re: [Resolvido]Mensagem do Access

    Mensagem  JPaulo Ter 05 Fev 2019, 1:59 pm

    Fico feliz e espero que funcione por mais 4 anos.

    Obrigado pelo retorno o forum agradece.


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

    [Resolvido]Mensagem do Access Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Mensagem do Access Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Mensagem do Access Folder_announce_new Instruções SQL como utilizar...

    Conteúdo patrocinado


    [Resolvido]Mensagem do Access Empty Re: [Resolvido]Mensagem do Access

    Mensagem  Conteúdo patrocinado


      Data/hora atual: Sex 08 Nov 2024, 7:49 pm