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]If com duas condições

    avatar
    emacsabino
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 190
    Registrado : 29/08/2011

    [Resolvido]If com duas condições Empty If com duas condições

    Mensagem  emacsabino 7/3/2012, 02:28

    Amigos do forum, estou com um pequeno problema que não consigo resolver, eu estou querendo que ao clicar em um botão em um formulário um determinado registro que está em um subformulário seja salvo de acordo com a condição abaixo
    If DCount("*", "Produto", "Número=" & Me.Código) < 1 Then
    MsgBox "Para salvar o registro é preciso que haja pelo menos 1 ítem para a mesma, por favor digite o(s) ítem(ns) para o registro ou cancele", vbCritical, "Atenção"

    Else

    If DCount("*", "Produto", "Número=" & Me.Código) > 1 And IsNull(Me!ProdutoItens.Form!Alimento) Then
    MsgBox "Você iniciou a digitação de um ítem e depois apagou deixando-o em branco, redigite o ítem ou cancele o registro do mesmo", vbCritical, "Atenção"

    Else


    DoCmd.GoToRecord , , acNewRec
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

    End If
    End If

    A única coisa que não tou entendendo é que para esse código DCount("*", "Produto", "Número=" & Me.Código) > 1 And IsNull(Me!ProdutoItens.Form!Alimento) se eu deixasse o campo do subformulário em branco não era para ele salvar, mas só que ele salva, então tem alguma coisa que não consigo ajeitar
    avatar
    Convidad
    Convidado


    [Resolvido]If com duas condições Empty Re: [Resolvido]If com duas condições

    Mensagem  Convidad 7/3/2012, 03:18


    A função DCount faz a contagem dos registros na tabela Produto onde o campo Número seja igual ao campo Código do form, e se for menor que um, significa que não há itens lançados.

    Fiz algumas correções no código. Teste:

    If DCount("*", "Produto", "Número=" & Me.Código) < 1 Then
    MsgBox "Para salvar o registro é preciso que haja pelo menos 1 ítem para a mesma, por favor digite o(s) ítem(ns) para o registro ou cancele", vbCritical, "Atenção"

    ElseIf DCount("*", "Produto", "Número=" & Me.Código) > 0 And IsNull(Me!ProdutoItens.Form!Alimento) Then
    MsgBox "Você iniciou a digitação de um ítem e depois apagou deixando-o em branco, redigite o ítem ou cancele o registro do mesmo", vbCritical, "Atenção"

    Else
    DoCmd.GoToRecord , , acNewRec
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
    End If
    avatar
    emacsabino
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 190
    Registrado : 29/08/2011

    [Resolvido]If com duas condições Empty Re: [Resolvido]If com duas condições

    Mensagem  emacsabino 7/3/2012, 20:07

    Norbs eu tou querendo melhorar isso, é o seguinte, eu só quero esbarrar o salvamento se no subformulário a pessoa tiver começado a digitar algo e ai depois apagou, pois quando se começa o número é gerado automaticamente em um outro campo que tem o nome "ID". OU seja se após salvar um registro no próximo ele não fizer nada então ele poderá salvar no formulário pai o registro todo. Até modifiquei o código no que vc postou, ficando assim
    ElseIf DCount("*", "Produto", "ID") > 0 And IsNull(Me!ProdutoItens.Form!Alimento) Then
    MsgBox "Você iniciou a digitação de um ítem e depois apagou deixando-o em branco, redigite o ítem ou cancele o registro do mesmo", vbCritical, "Atenção"

    Mas não deu certo, pq ele travou o salvamento, sendo que eu nem tinha digitado nada ainda no campo do suboformulário então presumia-se que o ID ainda estava e "Autonumer.."
    avatar
    Convidad
    Convidado


    [Resolvido]If com duas condições Empty Re: [Resolvido]If com duas condições

    Mensagem  Convidad 7/3/2012, 20:34


    Na função DCount, entre o terceiro conjunto de aspas, colocamos o(s) critério(s). Vc colocou o critério "ID", sem comparar com nada.
    Mas nem vem ao caso...

    Quanto a solução da questão, creio que o código para isso deve ser colocado no subform, e não neste botão do form principal. Afinal é o subform que vc está salvando.

    Então tente um código como este, no evento AntesDeAtualizar do subform:
    Confira sempre se os Nomes de tabelas e campos combinam com a propriedade Nome.


    Private Sub Form_BeforeUpdate(Cancel As Integer)
    If IsNull(Me.SeuCampo) Then
    Cancel = True
    Me.SeuCampo.SetFocus
    MsgBox "Texto da Mensagem"
    End If
    End Sub

    avatar
    emacsabino
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 190
    Registrado : 29/08/2011

    [Resolvido]If com duas condições Empty Re: [Resolvido]If com duas condições

    Mensagem  emacsabino 7/3/2012, 20:53

    Qual a referência que eu faço a um campo autonumérico quando ele ainda não gerou o número, está só em "autonúmer.." esperando ser mexido em algum campo para gerar o número. o valor é 0, ou null...? tipos digamos que eu tenho um campo chamado ID e nele tá "autonumero", então seria como, Me.Id="0", Isnull(ID)...?
    avatar
    Convidad
    Convidado


    [Resolvido]If com duas condições Empty Re: [Resolvido]If com duas condições

    Mensagem  Convidad 7/3/2012, 21:02


    Não tem como interagir com um campo autonumeração. Basta digitar um único caractere e o número é gerado automaticamente. Se o registro não for salvo o número é automaticamente descartado.
    O fato do número ter sido gerado não significa que o registro já tenha sido salvo.
    E nisso reside a vantagem e o motivo de usar este tipo de chave sempre que possível.
    Acaso sua preocupação é com a falha na sequência de numeração?
    avatar
    emacsabino
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 190
    Registrado : 29/08/2011

    [Resolvido]If com duas condições Empty Re: [Resolvido]If com duas condições

    Mensagem  emacsabino 7/3/2012, 21:24

    Norbs amigão eu consegui resolver aqui do jeito que eu queria deixando assim:

    If DCount("*", "Produto", "Número=" & Me.Código) < 1 Then
    MsgBox "Para salvar o registro é preciso que haja pelo menos 1 ítem para a mesma, por favor digite o(s) ítem(ns) para o registro ou cancele", vbCritical, "Atenção"

    ElseIf (Me!ProdutoItens.Form!Id)>0 And IsNull(Me!ProdutoItens.Form!Alimento) Then
    MsgBox "Você iniciou a digitação de um ítem e depois apagou deixando-o em branco, redigite o ítem ou cancele o registro do mesmo", vbCritical, "Atenção"

    Else
    DoCmd.GoToRecord , , acNewRec
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
    End If

    Deu tudo certo. Valeu
    avatar
    Convidad
    Convidado


    [Resolvido]If com duas condições Empty Re: [Resolvido]If com duas condições

    Mensagem  Convidad 7/3/2012, 21:39


    Muito bem.
    Grato pelo retorno!

    Conteúdo patrocinado


    [Resolvido]If com duas condições Empty Re: [Resolvido]If com duas condições

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 29/4/2024, 11:57