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


    [Resolvido]Impedir gravação de registo vazio no Sub-Formulário. Formulário: Vendas - Sub-Formulário_ VendasDe

    avatar
    Convidado
    Convidado


    [Resolvido]Impedir gravação de registo vazio no Sub-Formulário. Formulário: Vendas - Sub-Formulário_ VendasDe Empty [Resolvido]Impedir gravação de registo vazio no Sub-Formulário. Formulário: Vendas - Sub-Formulário_ VendasDe

    Mensagem  Convidado 6/1/2023, 15:14

    Olá amigos;

    Espero que tenham entrado da melhor forma no novo ano.

    Queria pedir-vos ajuda no seguinte.

    O meu sistema de vendas, é composto pelo formulário principal: "frmMov_Vendas" e pelo subformulário dos detalhes da venda: "frmMov_VendasDet".

    Tenho alguns campos obrigatórios no Cabeçalho da venda(frmMov_Venda). Já tenho o código para não deixar gravar a venda,  sem esses campos estarem preenchidos. Está a funcionar bem.

    O problema, é que o utilizador pode gravar a venda sem inserir os produtos. "frmMov_VendasDet"

    Eu queria um código para colocar no botão de guardar ou salvar a venda, que aparecesse uma mensagem a dizer que não podia salvar sem inserir os produtos.

    Podem ajudar-me?

    Fiz um pequeno vídeo para explicar melhor. Assistir ao vídeo.

    Obrigado

    Joaquim

    ---------------------------------------------------------------------------------------------------------------------
    Para os campos do cabeçalho da venda tenho um um módulo, e código no botão salvar.

    Módulo:

    Option Compare Database

    Public Function CampoObrigatorio(Campo As TextBox) As Boolean

    If Campo = "" Or IsNull(Campo) Then
    CampoObrigatorio = True

    MsgBox "Campo de preenchimento obrigatorio: " & Campo.Tag, vbCritical, "Atenção"
    Campo.SetFocus
    End If
    End Function

    Public Function CampoObrigatorio1(Campo As ComboBox) As Boolean
    If Campo = "" Or IsNull(Campo) Then
    CampoObrigatorio1 = True
    MsgBox "Campo de preenchimento obrigatorio: " & Campo.Tag, vbCritical, "Atenção"
    Campo.SetFocus

    End If
    End Function

    Código no botão:

       If CampoObrigatorio1(TxtCliente) = True Then Exit Sub


    Nome do campo:

    Nas propriedades do formulário, na aba "Outros", em Marca, dou o nome de cada campo.

    Seria ótimo:

    Seria ótimo se neste código que está a funcionar bem, quando aparece a mensagem, o campo ficasse com a linha de contorno em vermelho. Mas está a funcionar.

    O que não tenho então, é a obregação do utilizador inserir os produtos.

    agradeço se me puderem ajudar.

    Um abraço e votos de um excelente 2023.

    Com a amizade

    Joaquim


    Última edição por amilq em 6/1/2023, 15:36, editado 1 vez(es) (Motivo da edição : Inserir o link do vídeo.)
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3217
    Registrado : 13/12/2016

    [Resolvido]Impedir gravação de registo vazio no Sub-Formulário. Formulário: Vendas - Sub-Formulário_ VendasDe Empty Re: [Resolvido]Impedir gravação de registo vazio no Sub-Formulário. Formulário: Vendas - Sub-Formulário_ VendasDe

    Mensagem  Alexandre Fim 6/1/2023, 15:19

    Olá Joaquim,

    Para ficar mais fácil e rápido de resolver, compartilhe aqui uma cópia do seu bd, somente objetos (tabelas/formulários/consultas/relatorios/modulos) envolvidos na questãso, para análise e solução.

    Grato

    Att

    Alexandre Fim


    .................................................................................
    Arrow  Marcar tópico como Resolvido: clique aqui
    Arrow  Postar anexos no fórum: clique aqui

    [Resolvido]Impedir gravação de registo vazio no Sub-Formulário. Formulário: Vendas - Sub-Formulário_ VendasDe Setinf11
    Sistemas e Tecnologia Ltda
    avatar
    Convidado
    Convidado


    [Resolvido]Impedir gravação de registo vazio no Sub-Formulário. Formulário: Vendas - Sub-Formulário_ VendasDe Empty Re: [Resolvido]Impedir gravação de registo vazio no Sub-Formulário. Formulário: Vendas - Sub-Formulário_ VendasDe

    Mensagem  Convidado 6/1/2023, 15:38

    Olá amigo;

    Acabei de inserir um link com um pequeno vídeo para explicar melhor.
    Assistir ao vídeo.

    Obrigado
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3217
    Registrado : 13/12/2016

    [Resolvido]Impedir gravação de registo vazio no Sub-Formulário. Formulário: Vendas - Sub-Formulário_ VendasDe Empty Re: [Resolvido]Impedir gravação de registo vazio no Sub-Formulário. Formulário: Vendas - Sub-Formulário_ VendasDe

    Mensagem  Alexandre Fim 6/1/2023, 16:01

    Joaquim, o video não ajuda muito, pois é necessário o nome da tabela de detalhe das vendas, mas vou tentar de ajudar.

    No botão "Guardar" do formulário de vendas, coloque a seguinte instrução no inicio:

    Código:


        If DCount("*", "[nome_da_tabela_detalhe_vendas]", "[campo_id_venda] = " & [CAMPO_ID_VENDA_FORMULARIO_VENDAS] & "") = 0 Then
            MsgBox "O sistema não localizou os itens do pedido. Informe.", vbExclamation, "Aviso"
            Exit Sub
        End If


    No botão "Sair" do formulário de Vendas, coloque a seguinte instrução no início:
    Código:


        If DCount("*", "[nome_da_tabela_detalhe_vendas]", "[campo_id_venda] = " & [CAMPO_ID_VENDA_FORMULARIO_VENDAS] & "") = 0 Then
            If MsgBox("O sistema não localizou os itens do pedido e o pedido será desconsiderado. Confirmar?(S/N)", vbQuestion + vbYesNo, "Cancelar Pedido (S/N)") = vbYes Then
                Me.Undo
                DoCmd.Close acForm, Me.Name, acSaveNo
            End If
        End If


    Acredito que irá funcionar.

    OBS: Substitua os campos em COLCHETES pelos respetivos nomes no teu sistema.

    Att,

    Alexandre Fim


    .................................................................................
    Arrow  Marcar tópico como Resolvido: clique aqui
    Arrow  Postar anexos no fórum: clique aqui

    [Resolvido]Impedir gravação de registo vazio no Sub-Formulário. Formulário: Vendas - Sub-Formulário_ VendasDe Setinf11
    Sistemas e Tecnologia Ltda
    avatar
    Convidado
    Convidado


    [Resolvido]Impedir gravação de registo vazio no Sub-Formulário. Formulário: Vendas - Sub-Formulário_ VendasDe Empty Re: [Resolvido]Impedir gravação de registo vazio no Sub-Formulário. Formulário: Vendas - Sub-Formulário_ VendasDe

    Mensagem  Convidado 7/1/2023, 16:29

    Olá Alexandre;

    Tentei nos dois eventos do botão mas dava erro. Pode ser pelo facto de ter outro código para os campos vazios do formulário, não sei.

    Depois de muitas tentativas com os seus dois códigos, fiz só um e está a funcionar como eu quero.

    Coloquei no evento: Ao fazer clique no botão:

    Código:

                     
            If DCount("*", "[tblMovVendasdet]", "[IDVVendas] = " & [IDV] & "") = 0 Then
            MsgBox "Ainda não inseriu nenhum produto.", vbExclamation, "Aviso"
              
        
            Exit Sub
            End If
                  
                  
            btNovo.Enabled = True
            btAtualizar.Enabled = False
            btGuardar.Enabled = False
            btEliminar.Enabled = True
            btAlterar.Enabled = True
            btanular.Enabled = False
            btDuplicarVenda.Enabled = True
            
            frmMov_VendasDet.Enabled = False
        
            TxtIDV.Enabled = False
            TxtDataVenda.Enabled = False
            TxtCliente.Enabled = False
            TxtUtilizador.Enabled = False
            TxtObservacoes.Enabled = False
            
            
            If DCount("*", "[tblMovVendasdet]", "[IDVVendas] = " & [IDV] & "") > 0 Then
            MsgBox "A Venda foi realizada com êxito.", vbExclamation, "Sucesso"
        
            Exit Sub
            End If
            Me.Refresh

    Se achar que eu deva alterar alguma coisa, por favor diga-me que eu faço-o. Se não houver problemas, eu deixo assim.

    Um feliz 2023 para si e para todo o Fórum.

    Atenciosamente

    Joaquim


    Última edição por amilq em 8/1/2023, 09:24, editado 2 vez(es) (Motivo da edição : Correção no código)

    Conteúdo patrocinado


    [Resolvido]Impedir gravação de registo vazio no Sub-Formulário. Formulário: Vendas - Sub-Formulário_ VendasDe Empty Re: [Resolvido]Impedir gravação de registo vazio no Sub-Formulário. Formulário: Vendas - Sub-Formulário_ VendasDe

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/4/2024, 17:12