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


3 participantes

    Caixa de Combinação envia valor para outra caixa de combinação II

    avatar
    APALOOSA
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 29
    Registrado : 27/06/2017

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  APALOOSA 16/7/2017, 00:22

    Olá Tauron,

    Vc me quebrou o maior galho da ultima vez.
    Sobre a caixa de combinação que aparece e desaparece conforme o valor de outra caixa de combinação.
    Vc me enviou o formulario com o codigo ja pronto e foi muito certeiro.
    Tenho um outro problema envolvendo o mesmo assunto.
    Preciso que quando o campo DataSaida apareça e somente quando ela (DataSaida) apareça, o usuario seja obrigado a preenche-lo.
    Caso não apareça o formulario salvara o registro normalmente.

    Então:

    O usuario escolhe a opção "PARADA" , então salva normalmente ao clicar em ADICIONAR REGISTRO (salvar).
    O usuario escolhe cxcombinação "SAIDA" aparece ja preenchido a cxcombinação "GOODPICK" e tambem a cxtexto "DataSaida" e alem disso obriga o usuario a preencher essa cxTxto DataSaida.

    Assim que responder envio o BD pra vc ver.
    Nesse BD ja existe um registro salvo de numero 1234567890.
    Quero escolher esse registro e escolher a opção SAIDA.
    Logicamente vai aparecer na proxima cxCombo a opção ja preenchida "GOODPICK".
    Até ai tudo bem, só que note que posso salvar o registro com a opção GOODPICK sem cxTXT DataSaida preenchida (esse é o problema).
    Gostaria que quando aparecesse (e só quando aparecesse) a cxTxt DataSaida, o usuario fosse obrigado a prenche-la.

    Se vc ou alguém puder me ajudar nisso agradeço.
    abç
    avatar
    Phillip_Junior
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 179
    Registrado : 09/12/2016

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Re: Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  Phillip_Junior 16/7/2017, 01:57

    Olá APALOOSA

    Vejo que vc direcionou sua dúvida somente para um dos membros do fórum. Você pode fazer isso nas msgs privadas ok ?
    Mas se outros membros puderem ajudar, acredito que vc também terá sua dúvida ou problema sanado mais rápido.


    Em relação ao seu tópico,

    Se vc já tem o código que determina aparecer ou não a cxtexto "DataSaida", então basta vc colocar esse código descrito abaixo, nas propriedades da sua
    própria cxtexto "DataSaida" no evento após atualizar.

    'inicio comando
    If IsNull(DataSaida) Or Me.DataSaida.value = "" Then ' se campo DataSaida é nullo ou se campo DataSaida está vazio, então surge a mensagem
    Msgbox "Necessário inserir uma data!", vbCritical, "ATENÇÃO"

    Else

    'aqui vc pode terminar oq quer que seja feito se por acaso for preenchido a datasaida.
    'Você pode, pedir que o foco vá para o próximo campo, ou que finalize o registro e salve ou que não faça nada (nesse caso utilize Exit Sub).

    End If

    End Sub
    'fim comando

    Abraços e sucesso. Se não conseguir retorne.



    .................................................................................
    Phillip_Junior
    Analista de Sistemas
    avatar
    APALOOSA
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 29
    Registrado : 27/06/2017

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  APALOOSA 18/7/2017, 17:16

    Olá Philip,
    Minha duvida é direcionanada a todos os participantes do fórum, direcionei para o Tauron pq ele me enviou a resposta de uma duvida como arquivo ja pronto. Foi bem direto.
    Bem voltando ao assunto coloquei sua sujestão na propriedade "Apos Atualizar" do campo DataSaida, porem ele salva o arquivo mesmo que a DataSaida esteja em branco.
    Veja o exemplo que o Tauron me mandou, ele funciona perfeitamente e me quebrou maior galho, mas os problemas começam a aparecer conforme vai se usando. Então o que ocorreu foi que quando a DataSaida aparece (Ela esta oculta) eu gostaria que o usuario seja obrigado a preenche-la, caso não queira preeche-la ele escolhe o valor PARADA novamente e tudo bem. Mas o mais importante mesmo, é que o usuario NAO pode conseguir salvar esse registro sem que a data de saida estivesse preenchida.
    avatar
    APALOOSA
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 29
    Registrado : 27/06/2017

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  APALOOSA 18/7/2017, 17:28

    Tambem não posso colocar Valor Requerido = Sim na tabela, pois muitos aparelhos estão sem analise ainda e não tem uma DataSaida, só terão uma DataSaida quando o tecnico analisar/consertar e enviar para GOODPICK (placa boa), só nesse momento é que ele vai colocar a DataSaida, senão ela permanecerá "PARADA".
    avatar
    Phillip_Junior
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 179
    Registrado : 09/12/2016

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Re: Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  Phillip_Junior 18/7/2017, 17:54

    Ola


    Preciso saber o seguinte para lhe fazer um exemplo exato.

    O Campo DataSaida esta no formulario ou no SubForm?
    A cxselecao que vc seleciona GOODPICK esta no Form ou no Subform?
    O botao Salvar, esta no form ou no Subform?
    O botao salvar, esta sendo usado macro ou codigo vba?

    Se macro, preciso ver o banco exemplo para lhe dar a solucao exata ok.

    Nome do seu form,
    Nome do seu subform
    Nome do Botao que estas a utilizar para salvar

    aguardo


    .................................................................................
    Phillip_Junior
    Analista de Sistemas
    avatar
    APALOOSA
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 29
    Registrado : 27/06/2017

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  APALOOSA 19/7/2017, 18:09

    Segue uma parte do BD Apaloosa2017 - Formulario TsLinha e SubFormulario History

    Apenas algumas funções estão habilitadas mas acho que o problema principal dá para ser constatado.
    Note que ao escolher a opção "SAIDA", aparece a caixa de texto DataSaida, porem perceba que é possivel salvar o registro sem preenchela.
    Não posso colocar esse valor com padrão Requerido porque ele só sera preenchido quando o tecnico liberar esse aparelho para GOODPICK.

    Isira estes seriais para fazer os testes:

    SerialNumber
    8034400006
    8034400187
    8034484852

    Note que o Serial 8034400006 esta como GOODPICK mas não tem a DataSaida preenchida e ESSE é o problema. :/
    avatar
    APALOOSA
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 29
    Registrado : 27/06/2017

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  APALOOSA 19/7/2017, 18:13

    Segue uma parte do BD Apaloosa2017 - Formulario TsLinha e SubFormulario History

    Apenas algumas funções estão habilitadas mas acho que o problema principal dá para ser constatado.
    Note que ao escolher a opção "SAIDA", aparece a caixa de texto DataSaida, porem perceba que é possivel salvar o registro sem preenchela.
    Não posso colocar esse valor com padrão Requerido porque ele só sera preenchido quando o tecnico liberar esse aparelho para GOODPICK.

    Isira estes seriais para fazer os testes:

    SerialNumber
    8034400006
    8034400187
    8034484852

    Note que o Serial 8034400006 esta como GOODPICK mas não tem a DataSaida preenchida e ESSE é o problema. :/
    Anexos
    Caixa de Combinação envia valor para outra caixa de combinação II AttachmentApaloosa2017.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (114 Kb) Baixado 14 vez(es)
    avatar
    Phillip_Junior
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 179
    Registrado : 09/12/2016

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Re: Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  Phillip_Junior 19/7/2017, 19:06

    Olá

    Veja se isso lhe ajuda:


    Primeiro, no seu campo onde escolhes (saída ou parada) acrescente a linha de comando no mesmo evento após atualizar, informada na anotação abaixo:

    Private Sub StatusBone_AfterUpdate()
    If Me.StatusBone = "" Then
    Me.Destino.Value = ""
    Me.DataSaida.Visible = False
    End If
    If Me.StatusBone = "SAIDA" Then
    Me.Destino.Value = "GOODPICK"
    Me.DataSaida.Visible = True
    Me.DataSaida.SetFocus '<<<<<>>>>>........................anotação:........Esse comando fará o procedimento de sendo opção (saída) ele passa o foco para o campo DataSaída
    Else
    Me.Destino.Value = "ANALISE"
    Me.DataSaida.Visible = False
    End If
    End Sub


    Depois, no campo DataSaida, vc coloca no evento Ao sair esse código abaixo:


    If Me.StatusBone.Value = "SAIDA" Then 'Se a cx de combinação for igual a SAIDA, então passa para a próxima condição
    If IsNull(DataSaida.Value) Or Me.DataSaida.Value = "" Then ' Se campo DataSaida, for igual null ou vazio então
    MsgBox "Necessário inserir uma Data Saida!", vbCritical + vbOKOnly, "Atenção!" ' mensagem de erro
    Me.AdicionaReg.SetFocus ' Comando do foco para o botão adicionarreg para enganar o sistema a lançar o foco no campo desejado
    Me.DataSaida.SetFocus ' passa o foco para o campo DataSaida
    Else ' caso contrário ?
    Me.AdicionaReg.SetFocus ' passa o foco para o botão adicionar .
    ' Aqui vc pode colocar a condição que quiser caso o campo esteja preenchido. Ex: Passar foco próximo campo ou botão, etc
    End If
    Exit Sub
    End If


    Se tiver dúvidas, estamos por aqui


    Abraços


    .................................................................................
    Phillip_Junior
    Analista de Sistemas
    avatar
    APALOOSA
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 29
    Registrado : 27/06/2017

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  APALOOSA 20/7/2017, 01:03

    cheers cheers cheers cheers

    Funcionou perfeitamente Phillip_Junior...
    Muito Bom valeu mesmo!!!!!!

    Apenas um detalhe ocorre quando o usuario desiste de preencher a DataSaida,
    Coloquei no aviso "Ao Sair" da data de saida que ele pode teclar "ESC", porem
    ao faze-lo gostaria que o Campo "DataSaida" voltasse a ficar "Invisivel",
    pois pode confundir um pouco o usuario.

    Se for possivel agradesço desde ja, e desculpe a encheção rsrsrsrsrsrssrsr
    rabbit
    avatar
    Phillip_Junior
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 179
    Registrado : 09/12/2016

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Re: Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  Phillip_Junior 20/7/2017, 03:12

    Olá

    Poderíamos cancelar a ação criando um comando no evento do form ao pressionar a tecla esc, tal tipo Case vbKeyEscape, mas não vamos ficar criando caminhos desnecessários para algo que seja simples.

    Como o seu objetivo é que não possa ser adicionado um novo registro caso o campo datasaida esteja visualizado e sem preencher, altere o seu código no botão adicionar registro no evento clicar para esse código:

    On Error GoTo Err_AdicionaReg_Click
    If Me.StatusBone.Value = "SAIDA" Then 'Se a cx de combinação for igual a SAIDA, então passa para a próxima condição
    If IsNull(DataSaida.Value) Or Me.DataSaida.Value = "" Then ' Se campo DataSaida, for igual null ou vazio então
    MsgBox "Necessário inserir uma Data Saida!", vbCritical + vbOKOnly, "Atenção!" ' mensagem de erro
    Me.AdicionaReg.SetFocus ' Comando do foco para o botão adicionarreg para enganar o sistema a lançar o foco no campo desejado
    Me.DataSaida.SetFocus ' passa o foco para o campo DataSaida
    Else ' caso contrário ?
    Me.AdicionaReg.SetFocus ' passa o foco para o botão adicionar .
    ' Aqui vc pode colocar a condição que quiser caso o campo esteja preenchido. Ex: Passar foco próximo campo ou botão, etc
    End If
    Exit Sub
    End If

    DoCmd.GoToRecord , , acNewRec

    Exit_AdicionaReg_Click:
    Exit Sub

    Err_AdicionaReg_Click:
    MsgBox Err.Description
    Resume Exit_AdicionaReg_Click



    Ai vc retira o código do evento ao sair do campo datasaida.


    Obs: Faça todos os teste dentro do seu form. Observei uns bugs onde acaba que as condições impostas acabam abrindo caminhos para ter o feito do precedimento.

    Veja bem: Faça esse procedimento e observe o campo datasaída.

    No exemplo que me mandou ok ?

    Ao abrir o form, temos que não há registro no campo código correto?

    Ao localizarmos o código, no caso o que está na cx de seleção 8034400006, o campo status já passa para SAIDA correto, mas observe que o campo datasaida não apareceu.

    Para ele aparecer temos que, clicar na cx de seleção e retornar a escolher SAIDA.

    Assim ele passa o foco para o campo datasaida correto ?

    Após esse feito, digamos que vc não digite nada no campo datasaida, e mova o registro pelo botão próximo e depois retorne ao registro anterior, observe que o campo status vai estar SAIDA mas não vai estar aparecendo o campo datasaida.

    Agora fche o form e abra ele dinovo,
    Agora vamos fazer o seguinte, digamos que vc faça todo o procedimento acima, mas acabe colocando uma data no campo datasaida e após sair do campo obs: e clicar no botao novo registro e surja a msg perguntando se desejo alterar ou não aquele registro. Observe que se escolhermos sim, o campo status passa para PARADA, alguns campos ainda mantem registros e o campo datasaida continua visível.

    Resumo: Como não sei exatamente como funciona desde o inicio seu projeto, tipo abrir registro etc, estou detalhando falhas encima do exemplo que me enviou.

    Minha dica: Apague todos os registros que seu projeto tem, sendo muitos, faça uma copia, e com ele vazio, inicie o procedimento de uns 3 registros diferentes. Depois tente localizar e altere esse registro e observe cada detalhe que vc sabe que não pode deixar furo.

    Observando algo que realmente seja similar ao que relatei acima e não consiga resolver, solicite ajuda que iremos tentar ajudar ok.







    .................................................................................
    Phillip_Junior
    Analista de Sistemas
    avatar
    APALOOSA
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 29
    Registrado : 27/06/2017

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  APALOOSA 20/7/2017, 04:21

    Olá

    Phillip_Junior, tirei o evento do DataSaida e coloquei no AdicRegistro ...

    Funciona perfeitamente a regra de não conseguir salvar sem uma Data Saida preenchida..Otimo.
    Porem o foco permanece na DataSaida, e o mesmo continua visivel.
    Ele so some quando eu clico em "Atualizar" (botão que criei) Formulario.

    Fiz o que me mandou mas....

    Olha eu poedria te enviar um arquivo pra te mostrar melhor como esta acontecendo? (Video)?
    Vlew cara
    Abraço
    e muito mas muuuuito obrigado mesmo blz!!!! Wink

    avatar
    Phillip_Junior
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 179
    Registrado : 09/12/2016

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Re: Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  Phillip_Junior 20/7/2017, 06:25

    Olá amigo !


    Olhando melhor seu projeto, eu fiz três alterações para que funcionasse o que era seu objetivo.

    Observe as anotações
    Primeira alteração :


    Evento após atualizar da cx de combinação99 (campolocalizador) no frm TsLinha

    Private Sub Combinação99_AfterUpdate()
       ' Encontrar o registro que coincide com o controle.
       Dim rs As Object
       Set rs = Me.Recordset.Clone
       rs.FindFirst "[Code] = " & str(Nz(Me![Combinação99], 0))
       If Not rs.EOF Then Me.Bookmark = rs.Bookmark
         
         ' ........Anotações................................teste lógico para verificar se o campo Statusbone está diferente da condição imposta ao campo datasaida
         If Me.Texto139.Value > "" And frmHistory.Form!StatusBone = "SAIDA" Then
            frmHistory.Form.DataSaida.Visible = True
            Me!frmHistory.SetFocus      
            frmHistory!DataSaida.SetFocus
            ElseIf frmHistory.Form.StatusBone = "PARADA" Or frmHistory.Form.StatusBone = "" Or frmHistory.Form.Destino = "" Or frmHistory.Form.Destino = "ANALISE" Then
            frmHistory.Form.DataSaida.Visible = False
            Me!frmHistory.SetFocus
            frmHistory!StatusBone.SetFocus
            End If
    End Sub

    ' Isso foi necessário para que quando selecionado o código, após atualziar o campolocalizar, ele cerifica se o campo que recebe o código está preenchido, se sim, ele verifica se o campo statusbone está selecionado como SAIDA, se sim, ele visible no campo datasaida e já deixa o foco no campo data saida, (mas vc pode alterar o campo que deseja que receba o foco após a verificação.
    Logo após ele verifica se o campo statusbone tem outros valores e caso sim, joga o foco para o campo statusbone, podendo ser alterado também.



    ''''''''''''''''segunda parte

    ' Alteramos no evento click botão adicionaReg o código descrito na mensagem anterior para:
    ' Aqui simplesmente alterei a sequência da execução da condição.


    Private Sub AdicionaReg_Click()
    If Me.StatusBone.Value = "SAIDA" And Me.DataSaida.Visible = True Then
    If IsNull(DataSaida.Value) Or Me.DataSaida.Value = "" Then
    MsgBox "Necessário inserir uma Data Saida!", vbCritical + vbOKOnly, "Atenção!"
    Me.AdicionaReg.SetFocus
    Me.DataSaida.SetFocus
    End If
    Exit Sub
    Else
    If Me.StatusBone.Value = "PARADA" Or Me.StatusBone.Value = "" Or Me.Destino.Value = "" Or Me.Destino.Value = "ANALISE" Or _
    Me.DataSaida.Visible = False Then
    Me.DataSaida.Visible = False
    Me.AdicionaReg.SetFocus
    On Error GoTo Err_AdicionaReg_Click

    DoCmd.GoToRecord , , acNewRec

    Exit_AdicionaReg_Click:
    Exit Sub
    Err_AdicionaReg_Click:
    MsgBox Err.Description
    Resume Exit_AdicionaReg_Click
    End If
    End If
    End Sub



    '''''''''''''''terceira parte

    'inclui no form no evento  antes de atualizar, uma linha   (veja anotação na linha no código abaixo


    Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim intRet As Integer, dblReg As Boolean
    On Error GoTo AtualizaPedidos_Err
       'Antes de salvar ou alterar registro confirma
       dblReg = Me.NewRecord
       If dblReg Then
       'exibe a mensagem
           intRet = MsgBox("Você deseja adicionar o registro atual?", vbYesNo, "Atenção!")
       Else
           intRet = MsgBox("Você deseja alterar este registro? Se não deseja alterar clique em NÃO e depois Tecle ESC", vbYesNo, "Atenção!")
       End If
       
    If intRet = vbNo Then
       Cancel = True
       SendKeys "{ESC}"
       Exit Sub
    End If
    'se há algum campo nulo não salva
    If Not TestaCampos Then Cancel = True
    Me.DataSaida.Visible = False ' .......................anotação, após verificar campos se estiverem preenchidos ele false no campo datasaida
    AtualizaPedidos_Exit:
       Exit Sub
    AtualizaPedidos_Err:
       MsgBox Error$
       Resume AtualizaPedidos_Exit
    End Sub




    Segue códigos completos alterados para vc substituir e testar

    Código Completo do Form(sub) HistoryLine

    '''''''''''''''''''''''''

    Private Sub Form_AfterUpdate()
    'Após inserir ou alterar registro tenta salvar
    DoCmd.RunCommand acCmdSave
    End Sub

    Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim intRet As Integer, dblReg As Boolean
    On Error GoTo AtualizaPedidos_Err
       'Antes de salvar ou alterar registro confirma
       dblReg = Me.NewRecord
       If dblReg Then
       'exibe a mensagem
           intRet = MsgBox("Você deseja adicionar o registro atual?", vbYesNo, "Atenção!")
       Else
           intRet = MsgBox("Você deseja alterar este registro? Se não deseja alterar clique em NÃO e depois Tecle ESC", vbYesNo, "Atenção!")
       End If
       
    If intRet = vbNo Then
       Cancel = True
       SendKeys "{ESC}"
       Exit Sub
    End If
    'se há algum campo nulo não salva
    If Not TestaCampos Then Cancel = True
    Me.DataSaida.Visible = False
    AtualizaPedidos_Exit:
       Exit Sub
    AtualizaPedidos_Err:
       MsgBox Error$
       Resume AtualizaPedidos_Exit
    End Sub

    Private Sub Comando54_Click()
    On Error GoTo Err_Comando54_Click


       DoCmd.GoToRecord , , acPrevious

    Exit_Comando54_Click:
       Exit Sub

    Err_Comando54_Click:
       MsgBox Err.Description
       Resume Exit_Comando54_Click
       
    End Sub
    Private Sub Comando55_Click()
    On Error GoTo Err_Comando55_Click


       DoCmd.GoToRecord , , acNext

    Exit_Comando55_Click:
       Exit Sub

    Err_Comando55_Click:
       MsgBox Err.Description
       Resume Exit_Comando55_Click
       
    End Sub
    Private Sub censurado()
    On Error GoTo censurado


       DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
       DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

    censurado:
       Exit Sub

    censurado:
       MsgBox Err.Description
       Resume censurado
       
    End Sub
    Private Sub Salvar_Click()
    'No Access, todo campo tem uma propriedade Marca(tag)
    'Se a intenção é verificar se os campos de um formulario foram
    'preenchidos antes de gravar os dados na base de dados
    'coloque uma marca nestes campos obrigatórios e crie uma função
    'para testar estes campos como a função abaixo.

    If Not TestaCampos Then Exit Sub

    End Sub
    Private Function TestaCampos() As Boolean
       Dim I As Integer
       Dim strMsg As String
       Dim strTitle As String

       TestaCampos = True
       'inicia o loop pelos controle do formulário
       'a contagem começa em zero (0) até  x-1
       For I = 0 To Me.Count - 1
           'se o controle tem a marca(tag) = t então
           If Me(I).Tag = "t" Then
               'se o campo está vazio então
               If IsNull(Me(I)) Or Me(I) = "" Then
                   'emite mensagem acompanhado do nome do controle
                   strMsg = "É obrigatório o preenchimento do campo '" & Me(I).Name & "'!"
                   strTitle = "ATENÇÃO USUÁRIO! Registro Inconsistente - TroubleShooting"
                   MsgBox strMsg, 48, strTitle
                   'move o foco para o controle
                   Me(I).SetFocus
                   TestaCampos = False
                   Exit Function
               End If
           End If
       Next I
    End Function
    Private Sub AdicionaReg_Click()
    If Me.StatusBone.Value = "SAIDA" And Me.DataSaida.Visible = True Then
    If IsNull(DataSaida.Value) Or Me.DataSaida.Value = "" Then
    MsgBox "Necessário inserir uma Data Saida!", vbCritical + vbOKOnly, "Atenção!"
    Me.AdicionaReg.SetFocus
    Me.DataSaida.SetFocus
    End If
    Exit Sub
    Else
    If Me.StatusBone.Value = "PARADA" Or Me.StatusBone.Value = "" Or Me.Destino.Value = "" Or Me.Destino.Value = "ANALISE" Or _
    Me.DataSaida.Visible = False Then
    Me.DataSaida.Visible = False
    Me.AdicionaReg.SetFocus
    On Error GoTo Err_AdicionaReg_Click

    DoCmd.GoToRecord , , acNewRec

    Exit_AdicionaReg_Click:
    Exit Sub
    Err_AdicionaReg_Click:
    MsgBox Err.Description
    Resume Exit_AdicionaReg_Click
    End If
    End If
    End Sub
    Private Sub ADD_Histoc_Click()
    On Error GoTo Err_ADD_Histoc_Click


       DoCmd.GoToRecord , , acNewRec

    Exit_ADD_Histoc_Click:
       Exit Sub

    Err_ADD_Histoc_Click:
       MsgBox Err.Description
       Resume Exit_ADD_Histoc_Click
       
    End Sub
    Private Sub delet_Click()
    On Error GoTo Err_delet_Click


       DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
       DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

    Exit_delet_Click:
       Exit Sub

    Err_delet_Click:
       MsgBox Err.Description
       Resume Exit_delet_Click
       
    End Sub
    Private Sub LUPINHA_Click()
    On Error GoTo Err_LUPINHA_Click


       Screen.PreviousControl.SetFocus
       DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70

    Exit_LUPINHA_Click:
       Exit Sub

    Err_LUPINHA_Click:
       MsgBox Err.Description
       Resume Exit_LUPINHA_Click
       
    End Sub
    Private Sub deletaHistory_Click()
    On Error GoTo Err_deletaHistory_Click


       DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
       DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

    Exit_deletaHistory_Click:
       Exit Sub

    Err_deletaHistory_Click:
       MsgBox Err.Description
       Resume Exit_deletaHistory_Click
       
    End Sub

    Private Sub StatusBone_AfterUpdate()
    If Me.StatusBone = "" Then
    Me.Destino.Value = ""
    Me.DataSaida.Visible = False
    End If
    If Me.StatusBone = "SAIDA" Then
    Me.Destino.Value = "GOODPICK"
    Me.DataSaida.Visible = True
    Me.DataSaida.SetFocus
    Else
    Me.Destino.Value = "ANALISE"
    Me.DataSaida.Visible = False
    End If
    End Sub

    Private Sub StatusBone_Dirty(Cancel As Integer)
    If Me.StatusBone = "" Then
    Me.Destino.Value = ""
    Me.DataSaida.Visible = False
    End If
    If Me.StatusBone = "SAIDA" Then
    Me.Destino.Value = "GOODPICK"
    Me.DataSaida.Visible = True
    Else
    Me.Destino.Value = "ANALISE"
    Me.DataSaida.Visible = False
    End If
    End Sub






    Código Completo do Form TsLinha

    Option Compare Database
    Private Sub Combinação91_AfterUpdate()

       ' Encontrar o registro que coincide com o controle.
       Dim rs As Object

       Set rs = Me.Recordset.Clone
       rs.FindFirst "[PartNumber] = " & str(Nz(Me![Combinação91], 0))
       If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    End Sub




    Private Sub Comando156_Click()

    On Error GoTo Err_Comando156_Click
    'Declarei as variáveis strConsulta e strNomePlanilha
    Dim strConsulta, strNomePLanilha

    'Na variável strConsulta eu informei o nome exato da minha consulta
    strConsulta = "GoodPick_Hoje_ECI"


    'Na varivável strNomePlanilha eu informei o local e o nome do arquivo a ser gerado.
    strNomePLanilha = "Z:\Laboratorio\ECI\ATIVIDADE TECNICA\Log Jtag\Goodpick_Hoje_ECI.xls"

    'Aqui foi montado a expressao que faz exportar a cunsulta em um arquivo de excel.
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, strConsulta, strNomePLanilha

    Exit_Comando156_Click:
       Exit Sub

    Err_Comando156_Click:
       MsgBox Err.Description
       Resume Exit_Comando156_Click
       
    End Sub


    Private Sub Comando76_Click()

    End Sub

    Private Sub Combinação99_Exit(Cancel As Integer)
    Me.Combinação99 = Null
    End Sub

    Private Sub outForm_Click()
    On Error GoTo Err_outForm_Click


       DoCmd.Close

    Exit_outForm_Click:
       Exit Sub

    Err_outForm_Click:
       MsgBox Err.Description
       Resume Exit_outForm_Click
       
    End Sub
    Private Sub salvaReg_Click()
    On Error GoTo Err_salvaReg_Click


       DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

    Exit_salvaReg_Click:
       Exit Sub

    Err_salvaReg_Click:
       MsgBox Err.Description
       Resume Exit_salvaReg_Click
       
    End Sub
    Private Sub DeltearReg_Click()
    On Error GoTo Err_DeltearReg_Click


       DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
       DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

    Exit_DeltearReg_Click:
       Exit Sub

    Err_DeltearReg_Click:
       MsgBox Err.Description
       Resume Exit_DeltearReg_Click
       
    End Sub
    Private Sub localiza_Click()
    On Error GoTo Err_localiza_Click


       Screen.PreviousControl.SetFocus
       DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70

    Exit_localiza_Click:
       Exit Sub

    Err_localiza_Click:
       MsgBox Err.Description
       Resume Exit_localiza_Click
       
    End Sub
    Private Sub Comando70_Click()
    On Error GoTo Err_Comando70_Click


       DoCmd.GoToRecord , , acNewRec

    Exit_Comando70_Click:
       Exit Sub

    Err_Comando70_Click:
       MsgBox Err.Description
       Resume Exit_Comando70_Click
       
    End Sub
    Private Sub excluir_Ts_Click()
    On Error GoTo Err_excluir_Ts_Click


       DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
       DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

    Exit_excluir_Ts_Click:
       Exit Sub

    Err_excluir_Ts_Click:
       MsgBox Err.Description
       Resume Exit_excluir_Ts_Click
       
    End Sub
    Private Sub excluir_Click()
    On Error GoTo Err_excluir_Click


       DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
       DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

    Exit_excluir_Click:
       Exit Sub

    Err_excluir_Click:
       MsgBox Err.Description
       Resume Exit_excluir_Click
       
    End Sub

    Private Sub DELETAR_REG_Click()
    On Error GoTo Err_DELETAR_REG_Click


       DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
       DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

    Exit_DELETAR_REG_Click:
       Exit Sub

    Err_DELETAR_REG_Click:
       MsgBox Err.Description
       Resume Exit_DELETAR_REG_Click
       
    End Sub
    Private Sub DeletarReg_Click()
    On Error GoTo Err_DeletarReg_Click


       DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
       DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

    Exit_DeletarReg_Click:
       Exit Sub

    Err_DeletarReg_Click:
       MsgBox Err.Description
       Resume Exit_DeletarReg_Click
       
    End Sub
    Private Sub Combinação95_AfterUpdate()
       ' Encontrar o registro que coincide com o controle.
       Dim rs As Object

       Set rs = Me.Recordset.Clone
       rs.FindFirst "[Code] = " & str(Nz(Me![Combinação95], 0))
       If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    End Sub

    Private Sub localiza2_Click()
    On Error GoTo Err_localiza2_Click


       Screen.PreviousControl.SetFocus
       DoCmd.DoMenuItem acFormBar, acEditMenu, 10, , acMenuVer70

    Exit_localiza2_Click:
       Exit Sub

    Err_localiza2_Click:
       MsgBox Err.Description
       Resume Exit_localiza2_Click
       
    End Sub
    Private Sub Combinação99_AfterUpdate()
       ' Encontrar o registro que coincide com o controle.
       Dim rs As Object
       Set rs = Me.Recordset.Clone
       rs.FindFirst "[Code] = " & str(Nz(Me![Combinação99], 0))
       If Not rs.EOF Then Me.Bookmark = rs.Bookmark
         
         ' teste lógico para verificar se o campo statusbone está diferente da condição imposta ao campo datasaida
         If Me.Texto139.Value > "" And frmHistory.Form!StatusBone = "SAIDA" Then
            frmHistory.Form.DataSaida.Visible = True
            Me!frmHistory.SetFocus
            frmHistory!DataSaida.SetFocus
            ElseIf frmHistory.Form.StatusBone = "PARADA" Or frmHistory.Form.StatusBone = "" Or frmHistory.Form.Destino = "" Or frmHistory.Form.Destino = "ANALISE" Then
            frmHistory.Form.DataSaida.Visible = False
            Me!frmHistory.SetFocus
            frmHistory!StatusBone.SetFocus
            End If
    End Sub



    Teste tudo e retorne.

    Se houver algum problema só falar.


    Abraços


    .................................................................................
    Phillip_Junior
    Analista de Sistemas
    avatar
    APALOOSA
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 29
    Registrado : 27/06/2017

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  APALOOSA 6/8/2017, 03:25

    Olá
    Todos os controles como:
    Localizar...enviar para excel.. e tudo mais, não tem problemas.
    Meu problema ocorre somente no fato de o usuário conseguir salvar o registro
    com o campo DataSaida em "branco", e é isso, somente isso que me preocupa, pois preciso que ele seja obrigado a inserir essa data se ele escolher SAIDA em StatusBone.
    A função StatuBone esta funcionando perfeitamente, pois ao escolher SAIDA nela automaticamente aparece GOODPICK na cxcombo DESTINO a qual deixei a opção HABILITADA com "Não". Assim o usuário não tem acesso a ela, e é obrigado a escolher :SAIDA em StatusBone para que a opção GOODPICK seja automaticamente selecionada...até aqui ok....Porem, o usuário ainda consegue após tudo isso salvar o registro com DESTINO=GOODPICK sem ter a DataSaida preenchida. :/
    avatar
    Phillip_Junior
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 179
    Registrado : 09/12/2016

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Re: Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  Phillip_Junior 6/8/2017, 14:59

    Olá APALOOSA!


    Bom! Vc envio um exemplo do seu projeto para ser analisado, onde a gente para, senta e observa tudo para poder melhor ajudar no que for preciso.

    Eu na ultima msg havia mandado um completo resumo de o porque foi alterado tais linhas do seu projeto que afetariam diretamente o campo data saída, que seria o x da questão.
    Pois não bastaria verificar se o campo esta vazio somente na hora de sair se outros detalhes tbm influenciam.

    Um exemplo é que, o código para deixar visível o campo datasaida está no evento após atualizar da cx de combinacao StatusBone correto?

    Ai que fica a pergunta: se está no evento atualizar da cx de combinacao StatusBone, como irá aparecer esse campo datasaida se ao localizar um código e a cx de combinacao StatusBone estiver já como SAIDA e o campo datasaida já estiver preenchido?

    Sendo que somente aparece o campo datasaida se dar o foco e atualizar a cx de combinacao StatusBone.

    Por isso postei o código com anotações nas alterações na cx de combinação 99, e que talvez nem observar o motivo vc não observou.

    Ficando mais claro ainda: preste atenção

    Digamos que vc localizou um código, ai vc preencheu todos os campos necessários e entre eles a cx de combinacao StatusBone como saída e deu uma data de saída e salvou o registro.

    Quando vc retorna a localizar esse mesmo código, o correto seria ele mostrar todos os dados preenchidos e inclusive o campo datasaida certo ?

    No entanto, a cx de combinacao StatusBone estará como saída mas o campo datasaida não irá aparecer, pois ele só surge se atualizar a cx de combinacao StatusBone como saída.
    E detalhe, o campo datasaida vai estar com valor.

    Por isso eu criei uma condição nessa cx de combinação99 para verificar após vc localizar um código se a cx de combinacao StatusBone já estaria como saída e se estivesse ele deixaria visível o campo datasaida que com certeza estaria já preenchido.

    (Isso estou dizendo ao localizar um código e encima do exemplo que vc mandou. E sem mencionar o fato de vc utilizar as setas de navegação de próximo e anterior, uma vez que nelas o procedimento funcionaria ok. Mas... se vc utiliza outra forma de localizar o registro após registrar a datasaida etc, esquece o que estou dizendo.


    Quanto ao seu problema, vamos esclarecer uma coisa aqui:

    Vc menciona em suas msgs que: o usuário ainda consegue após tudo isso salvar o registro...

    Horas, se para nos que não conhecemos o seu projeto seria complicado entender isso se no exemplo que vc envio tem somente um botão escrito adicionar registro e não salvar registro.

    E outro detalhe, o comando desse botão ele faz diversos procedimentos tais como se alterar ou não o registro etc, isso significa que não é só salvar.

    Em problemas e dúvidas temos que ser claros e objetivos e usar toda a real informação que realmente estiver constando em nosso projeto para que o amigo que tenta ajudar saiba exatamente como e onde ajudar.

    E deixando claro que adicionar registro significa adicionar registro novo, que não consta no bd. Já salvar pode ser após alterar etc.
    Por isso quando abrimos novo cadastro num projeto a gente deixa um botão escrito novo, ou adicionar.
    Já para alterar ou editar esse registro que já existe a gente deixa um botão, salvar alterações, etc.

    Se seu objetivo era não deixar salvar o registro sem estar preenchido o campo datasaida, eu mandei o código na msg anterior na explicação 2 e aqui pra mim está funcionando muito bem.

    Veja o que envie na msgs abaixo e agora com procedimentos comentados


    ' Alteramos no evento click botão adicionaReg o código descrito na mensagem anterior para:


    Private Sub AdicionaReg_Click()

    If Me.StatusBone.Value = "SAIDA" And Me.DataSaida.Visible = True Then ' Se a cx de combinação statusbone for igual a SAIDA e o campo datasaida estiver visivel, então abre outra condição:

    If IsNull(DataSaida.Value) Or Me.DataSaida.Value = "" Then ' se o campo datasaida for null ou for igual a vazio então surge a msg de aviso para preencher o mesmo e depois passa o foco para o botao adicionar para enganar o sistema e depois para o campo datasaida para ser preeenchido.

    MsgBox "Necessário inserir uma Data Saida!", vbCritical + vbOKOnly, "Atenção!"
    Me.AdicionaReg.SetFocus
    Me.DataSaida.SetFocus

    ElseIf Me.Destino.Value = "GOODPICK" And IsNull(DataSaida.Value) Or Me.DataSaida.Value = "" Then ' aqui ele reforça a condição, verificando se a cx de combinação destino está como GOODPICK, se estiver ele obriga vc a preencher o campo datasaida novamente.

             MsgBox "Necessário inserir uma Data Saida!", vbCritical + vbOKOnly, "Atenção!"
             Me.AdicionaReg.SetFocus
             Me.DataSaida.SetFocus


    End If 'fechamos a condição de verificar o campo datasaida
    Exit Sub


    Else ' caso contrário, ele verifica se a cx de combinação statusbone esteja com valor diferente de saida ou Vazia ou cx de combinação destino vazia ou diferente de GOODPICK
    e se campo datasaida está oculto então, mantém o campo datasaida oculto, passa o foco para o botao adicionaregistro e conforme já estava seu projeto ele abre novo registro.


    If Me.StatusBone.Value <> "SAIDA" Or Me.StatusBone.Value = "" Or Me.Destino.Value = "" Or Me.Destino.Value <> "GOODPICK" Or Me.DataSaida.Visible = False Then
    Me.DataSaida.Visible = False
    Me.AdicionaReg.SetFocus


    On Error GoTo Err_AdicionaReg_Click

    DoCmd.GoToRecord , , acNewRec

    Exit_AdicionaReg_Click:
    Exit Sub

    Err_AdicionaReg_Click:

    MsgBox Err.Description
    Resume Exit_AdicionaReg_Click
    End If

    End If

    End Sub



    No meu teste aqui ficou assim:

    Caixa de Combinação envia valor para outra caixa de combinação II Testel10


    Se clicar no botão adicionar registro e estiver o campo statusbone como saida e o destino como goodpick e campo datasaida vazio ele executa a condição e mostra a msg.



    E por ultimo, eu tinha feito outra alteração que também era relacionada ao campo datasaida, mas que pelo que notei vc também não prestou atenção do motivo.

    Então se está tudo funcionando perfeitamente e somente o objetivo era ao clicar no botão adicionar registro não adicionar sem estar preenchido o campo data saida caso este estivesse visível, o código acima faz isso.


    Abraços e aguardo retorno para saber se deu certo.


    .................................................................................
    Phillip_Junior
    Analista de Sistemas
    avatar
    APALOOSA
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 29
    Registrado : 27/06/2017

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  APALOOSA 6/8/2017, 19:36

    Caro Philip, muito obrigado pela presteza e clareza de informações, estou aprendendo muito com suas dicas e talvez muitos outros usuarios tbm..

    Testei seu ultimo codigo no botão  "Adicionar Registro", aparece a mensagem certinho...tudo ok, mas
    se resolvo deixar a DataSaida em "Branco" e clico em Atualizar ou "Localizar Serial Number" na caixaCombo de RecordSet ele me da a opçãp de
    "Deseja Salvar esse Registro:- SIM ou Não"...Se escolho "SIM" o Form deixa "SALVAR" mesmo com a DataSaida em "Branco"...
    Veja a Figura:

    Entendi que no meu caso seria botão Salvar, pois ele salvaria um registro apos editda, visto que todos os registros novos ja tem algumas informações ja preenchidas como Data(), StatusBone=PARADA e Destino como "ANALISE".
    Deixei a Combobox DESTINO Desabilitada para que o usuario somente conseguisse o valor GOODPICK Escolhendo o valor SAIDA em StatusBone.
    Posso enviar o Bd completo para seu email se isso ajudar, ok!!

    Abraços amigo (não desista de mim por favor) Smile
    avatar
    Phillip_Junior
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 179
    Registrado : 09/12/2016

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Re: Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  Phillip_Junior 7/8/2017, 04:09

    Olá


    Bom! Eu entendi seu problema amigo e é nessa fase do desenvolvimento que começamos a observar que cada objetivo nosso deve ser calculado 100% antes de darmos continuidade ao desenvolvimento.

    O que quero dizer é que quando decidimos desenvolver algo, precisamos colocar isso num papel de alguma forma que possamos imaginar como tudo irá funcionar ou como exatamente queremos que tudo funcione.

    O seu problema esta relacionado a criar condições adversas s confundindo um pouco e em eventos de objetos e controles que não exatamente seria o correto ser executado. Isso ao meu ver ok?

    Seu projeto é bacana, está com um cara boa, acredito que o simples em condições e funções possa ser muito mais útil a vc do que a mistura que tens nas verificações.

    Podemos resolver qualquer um desses seus problemas com o elseif, ou seja, adicionando ao evento do form que antes de atualizar ele verifique se seu objetivo está ou não alcançado.
    Mas isso seria uma forma de criar uma gambiarra num projeto que pode ser muito melhor.


    Eu no seu lugar iria separar o formulário de cadastrar novo registro de outro que busque os dados cadastrados e possa ser editado/alterado. Isso lhe seria mais que correto dentro de um projeto igual ao seu.

    Desse modo poderia criar tabelas onde registraria os acessos as alterações etc. Não que dessa forma não possa ser feito, mas vc dessa forma terá sempre que verificar muitas e muitas possibilidades de furos tais como esse. E isso se tornaria até amador dimais se estamos a tratar de um sistema para um cliente, pois nada mais chato do que descobrir falhas graves depois do projeto já estar rodando.

    Claro que sempre existe falhas, faz parte, por isso existe as atualizações, mas não podemos deixar isso passar de um certo limite.


    Então! Aconselho vc a separar seus forms de adicionar registros e o de localizar e alterar/editar registros, bem como a alterar as condições que existem nos eventos do seus form para verificar condições, ou seja, deixar elas individuais em cada controle.

    Seu projeto é pequeno e não há necessidade de verificar teste em campos de preenchidos ou não da forma que estás a fazer. Basta separar os forms e criar barreiras para o usuário conforme vá se avançando no cadastro ou um campo que somente gere um código após ser preenchido todos os campos e que quando clicar no botão ele verifique o valor desse campo e informe que não está preenchido.

    Quanto a solução do seu problema de imediato, se deseja manter tudo como esta, basta criar a condição dentro da cx de seleção99 da mesma forma que está no botão adicionar registro e onde mais queira que verifique se o campo datasaida esta vazio, mas observando que a condição de verificar alterar ou não o registro está no evento do seu form, com certeza terá que criar outro caminho dentro desse mesmo evento para barrar caso o campo datasaida esteja vazio.

    Ou seja, como lhe disse, acaba se tornando muitas condições e caminhos para um mesmo objetivo.

    Pode parecer absurdo separar os forms etc, mas sinceramente lhe poupa de problemas tais como esses e muitos outros que vc poderá somente descobrir com o tempo.

    Caso queira mudar me coloco a disposição de ajudar a mudar, ou se preferir me de detalhes de como tudo funciona nesse form que vc está a postar e detalhes de como é o mecanismo de tudo, tipo, eu cadastro o código assim e o cliente aqui e tal e tal, que dessa forma entendendo as coisas eu mesmo criarei os códigos que melhor irão se adaptar nesse form com condições etc e lhe envio.

    Caso não, insira o código de condição que lhe ajudei a criar e está no botão adicionaregistro para verificar se vazio o campo datasaida no evento do controle que assim desejar.



    Abraços


    .................................................................................
    Phillip_Junior
    Analista de Sistemas
    avatar
    APALOOSA
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 29
    Registrado : 27/06/2017

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  APALOOSA 8/8/2017, 13:49

    Vlw pelas dicas Philip, seguindo-as verei o que podera ser feito e mudado.
    Abraços e muito obrigado Wink
    avatar
    APALOOSA
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 29
    Registrado : 27/06/2017

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  APALOOSA 8/8/2017, 23:49

    Olá Philip, tudo bem!
    Rabisquei alguns esboços e vi que terei bastante trabalho a mudar o projeto "Frankstain" agora.
    Notei tbm que existe um outro problema alem dessa regra de "Não deixar Salvar registro sem a Datasaida".

    Todos os registros e campos são preenchidos conforme o Tecnico vai concertando os defeitos da placa.
    Ele somente ira dar " SAIDA" quando a placa passar por todos os testes, ou seja quando ela for realmente GOODPICK.

    Esse processo pode durar dias pois talves não consiga terminar de arruma-la no mesmo dia (isso ocorre com frequencia), resultando em um registro que esse tecnico preencheu mas ainda não pode dar saida neste aparelho (placa), então todos os campos estarão preenchido menos a DataSaida.

    O campo DataSaida so será preenchido quando ele der "SAIDA" em "StatusBone" - Quando aparecer o valor "GOODPICK" na Cmbox "Destino" e o Foco for para DataSaida.
    Neste momento (quando o foco for para DataSaida) é que deve ocorrer o start de um código que impeça o tecnico de salvar esse registro sem preencher DataSaida.

    A unica maneira de o usuario (tecnico) cancelar esse procedimento serria teclando ESC ou Cancelar/OK na popup de "Aviso" de erro.

    Bem exite ainda um outro problema que ja começou a aparecer tambem que se refere a numneros de serie repetidos.
    Para esse problema eu fiz uma relação Numero de Serie (que não pode se repetir) com MODELO de placa.

    Assim o BD aceita um numero de serie repetido somente se o MODELO de placa for diferente (Ate aqui tudo certinho)
    Porem quando vou em Localizar Numero de Serie o BD ele só localiza um dos registro :/

    Amigo me passa seu email e enviarei o projeto completo com algumas explicações de como ele é usado no dia dia.

    Um gande abraço e obrigado por se dispor a me ajudar tanto...
    Smile
    avatar
    Phillip_Junior
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 179
    Registrado : 09/12/2016

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Re: Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  Phillip_Junior 9/8/2017, 09:16

    Olá

    segue


    xobjetivos@gmail.com


    Abraços


    .................................................................................
    Phillip_Junior
    Analista de Sistemas
    avatar
    APALOOSA
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 29
    Registrado : 27/06/2017

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  APALOOSA 10/8/2017, 17:15

    Olá Philip,

    Arquivo enviado para xobjetivos@gmail.com

    No aguardo

    avatar
    APALOOSA
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 29
    Registrado : 27/06/2017

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  APALOOSA 30/9/2017, 02:59

    Olá Philip, enviei o email, algo novo a apresentar?
    avatar
    APALOOSA
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 29
    Registrado : 27/06/2017

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  APALOOSA 1/11/2017, 19:54

    Philip´houve algum problema?
    Enviei o Banco de Dados no seu email e você sumiu?
    Esta tudo bem amigo?
    Poderia me retornar sobre o que esta havendo? Rolling Eyes Rolling Eyes Neutral

    Arquivo enviado para xobjetivos@gmail.com
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    Caixa de Combinação envia valor para outra caixa de combinação II Empty Re: Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  Alexandre Neves 1/11/2017, 22:21

    Boa noite,
    Respeite as regras do fórum. Eliminei-lhe o tema que abriu com a duplicação da mensagem que colocou neste tema


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    Conteúdo patrocinado


    Caixa de Combinação envia valor para outra caixa de combinação II Empty Re: Caixa de Combinação envia valor para outra caixa de combinação II

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 13:39