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

    Se não estiver na lista

    scandinavo
    scandinavo
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1049
    Registrado : 11/11/2009

    Se não estiver na lista Empty Se não estiver na lista

    Mensagem  scandinavo 3/9/2010, 15:54

    Isto pode não ser uma novidade, mas não encontrei nenhum exmplo que faça isto;
    adiciona um novo nome na tabela "geralmente a de cadastro"sem presisar digitar no form de cadastro.


    Formato tradicionar

    Private Sub cmbNome_NotInList(NewData As String, Response As Integer)
    Response = acDataErrContinue  ' Inibe msg padrão do Access.
       If MsgBox("Nome não cadastrado:  '" & NewData & "'" & vbCrLf _
           & "Deseja Cadastrar?", 32 + vbYesNo) = 6 Then
           DoCmd.OpenForm "SeuForm", , , , acFormAdd, _
              acDialog, NewData
           ' A execução deste código fica interrompida aqui até o
           ' fechamento do formulário SeuFormCadastro.
           
           Response = acDataErrAdded
       Else
           Response = acDataErrContinue
       End If
       
    End Sub


    Um jeito que fiz sem ter que digitar no form de cadastro novamente


    Private Sub cmbNome_NotInList(NewData As String, Response As Integer)
    ' "Scandinavo" 01/09/10
    Response = acDataErrContinue  ' Inibe msg padrão do Access.
       If MsgBox("Nome não cadastrado:  '" & NewData & "'" & vbCrLf _
           & "Deseja Cadastrar?", 32 + vbYesNo) = 6 Then

             
              DoCmd.OpenForm "seuform", , , , acFormAdd, acHidden
             
              Forms!seuform.seucampo = NewData 'pega o arquivo
         
              DoCmd.Close acForm, "seuform"

           Response = acDataErrAdded
       Else
           Response = acDataErrContinue
       End If

    End Sub


    Última edição por scandinavo em 10/1/2014, 23:32, editado 1 vez(es)
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    Se não estiver na lista Empty Re: Se não estiver na lista

    Mensagem  criquio 3/9/2010, 17:37

    Olá, como o post não tem nenhum bd como exemplo, transferi-o para essa seção.

    Eu estou criando uma aplicação na qual fiz algo semelhante, mas usando DLookUp no evento "Após atualizar" do campo:

    Private Sub cboPaís_AfterUpdate()

    If IsNull(DLookup("NomePaís", "tblPaíses", "NomePaís='" & Me!cboPaís & "'")) Then

    If MsgBox("Não existe nenhum país com o nome """ & Me.cboPaís & """ cadastrado no sistema." & vbCrLf & "Verifique se digitou o nome corretamente ou clique em ""Sim"" para cadastrá-lo agora." & vbCrLf & vbCrLf & "Deseja cadastrar o país """ & Me.cboPaís & """ no sistema?", vbYesNo, "País """ & Me.cboPaís & """ inexistente") = vbYes Then

    Dim DB As Database
    Dim RS As Recordset
    Set DB = CurrentDb
    Set RS = DB.OpenRecordset("tblPaíses", dbOpenTable)
    RS.AddNew

    RS("NomePaís") = Me.cboPaís

    RS.Update
    RS.Close
    Set RS = Nothing
    Set DB = Nothing

    Else

    Me.cboPaís = Null
    Me.txtNome.SetFocus
    Me.cboPaís.SetFocus

    End If

    End If

    End Sub


    e o nome digitado na combo permanece lá para que seja salvo na tabela tblClientes normalmente.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    scandinavo
    scandinavo
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1049
    Registrado : 11/11/2009

    Se não estiver na lista Empty Re: Se não estiver na lista

    Mensagem  scandinavo 8/9/2010, 00:55

    Legal
    Agora ja temos mais uma opção.
    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    Se não estiver na lista Empty Re: Se não estiver na lista

    Mensagem  Dilson 16/9/2010, 16:36

    Eu uso este e de tanto funcionar no perfeito, nem penso em trocá-lo

    Dim sql As String
    If MsgBox("SeuCampo não cadastrado" & Chr(13) & Chr(13) & "Deseja cadastrar este Campo " & UCase(NewData) & " agora?", vbYesNo, "Cadastro de Campo") = vbYes Then
    DoCmd.SetWarnings False
    sql = "INSERT INTO SuaTabela (SeuCampo) VALUES ('" & NewData & "')"
    DoCmd.RunSQL sql
    DoCmd.SetWarnings True
    Response = acDataErrAdded
    Else
    Response = acDataErrDisplay
    End If


    Coloque no evento: Se não estiver na lista
    No Limitar a uma lista coloque "Sim"

    Conteúdo patrocinado


    Se não estiver na lista Empty Re: Se não estiver na lista

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 19/5/2024, 16:24