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

    Se não estiver na lista

    scandinavo
    scandinavo
    Super Avançado
    Super Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 878
    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
    Super Avançado
    Super Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 878
    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"

      Data/hora atual: 16/6/2021, 14:38