Ir para conteúdo
Fórum Script Brasil
  • 0

Antes De Atualizar


Humm

Pergunta

to querendo uma rotina aqui mas n to me achando numa coisa..

tenho um form Produtos

no campo Referencia, quero que após digitar e dar enter, ele verifique se esse codigo já existe.

se existir, então ele cancela o dado entrado e vai para esse registro. tipo localizar ou docmd.findrecord

se não, ele continua o cadastramento.

como se faz isso?

Private Sub REF_BeforeUpdate(Cancel As Integer)
    If Not IsNull(DLookup("[REF]", "PRODUTOS", "[REF]=" & Me.REF)) Then
    ?????
    ?????
    End If
End Sub

Link para o comentário
Compartilhar em outros sites

16 respostass a esta questão

Posts Recomendados

  • 0

Fera seguinte eu tive que fazer algo semelhante mais no meu caso para busca de processos, então eu criei uma caixa de texto não acoplada onde eu informo o numero e ocultei a caixa codProcesso e toda que vez que digito um processo diferente já faz a validação e quando encontra ele move para o registro encontrado veja a seguir:

If Not IsNull(DLookup("[numero]", "procExiste")) Then

Dim rs As Object

Set rs = Me.Recordset.Clone

rs.FindFirst "[numero]='" & Me.tstProc & "'"

Me.Bookmark = rs.Bookmark

Else

Me.numero.Value = Me.tstProc

End If

Acho que no seu caso poderia ficar mais ou menos assim:

If Not IsNull(DLookup("[REF]", "PRODUTOS", "[REF]=" & Me.REFtxt)) Then

Dim rs As Object

Set rs = Me.Recordset.Clone

rs.FindFirst "[ref]='" & Me.reftxt & "'"

Me.Bookmark = rs.Bookmark

Else

Me.ref.Value = Me.reftxt

End If

Bom imaginando a minha solução, eu ocultaria a caixa de texto REF e criaria uma não acoplada "reftxt" acho que isso resolve, confirme pra nós!

Link para o comentário
Compartilhar em outros sites

  • 0
Fera seguinte eu tive que fazer algo semelhante mais no meu caso para busca de processos, então eu criei uma caixa de texto não acoplada onde eu informo o numero e ocultei a caixa codProcesso e toda que vez que digito um processo diferente já faz a validação e quando encontra ele move para o registro encontrado veja a seguir:

If Not IsNull(DLookup("[numero]", "procExiste")) Then

Dim rs As Object

Set rs = Me.Recordset.Clone

rs.FindFirst "[numero]='" & Me.tstProc & "'"

Me.Bookmark = rs.Bookmark

Else

Me.numero.Value = Me.tstProc

End If

Acho que no seu caso poderia ficar mais ou menos assim:

If Not IsNull(DLookup("[REF]", "PRODUTOS", "[REF]=" & Me.REFtxt)) Then

Dim rs As Object

Set rs = Me.Recordset.Clone

rs.FindFirst "[ref]='" & Me.reftxt & "'"

Me.Bookmark = rs.Bookmark

Else

Me.ref.Value = Me.reftxt

End If

Bom imaginando a minha solução, eu ocultaria a caixa de texto REF e criaria uma não acoplada "reftxt" acho que isso resolve, confirme pra nós!

fera! pior que eu pensei nisso hehehe em ao invez de usar o controle diretamente, usar uma caixa de texto desacoplada so pra capturar o texto.

até porque eu tentei fazer rotinas, mas no momento que jogo um me.ref.undo ou cancel = true ele apaga o valor e ai n da pra seguir pra um localizar recordset

vou tentar assim.. valeu pela atencao

Link para o comentário
Compartilhar em outros sites

  • 0

fiz aqui esse procedimento mas ainda não deu certo.. assim que digito um codigo existente, os subformularios exibem dados vinculados mas o form principal ainda fica em branco..

to dando uma olhada mais a fundo.. depois retorno o resultado

depois:

é não da certo.. assim que eu digito mesmo numa caixa não acoplada, o access já subentende que esse registro está sendo editado.

ai ele da msgs de erro dizendo que o procedimento está impedindo de salvar dados e não prossegue. além do mais, no criteiro do recordset ele indica campos incompativeis. ai eu troqueo o "=" por LIKE

eu acho que a forma correta de fazer isso é, assim que eu dou enter ele roda o before update

logo, ele deveria armazenar o valor digitado temporariamente numa variavel, realizar um "cancel = true" ou "me.undo" pra liberar aquele registro em questao, ai sim rodar o IF

como poderiamos fazer isso? tem como capturar o valor de um campo para a memoria e ai da undo na caixa? e então trabalhar com esse valor capturado?

Editado por Humm
Link para o comentário
Compartilhar em outros sites

  • 0

Fera esse procedimento funciona perfeitamente aqui, tenho algumas aplicaçõe e funcionam bem, no caso de armazenar valores temporariamente você poderia utilizar umas variaveis locais ou publicas para isso!

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Gteubl --

Olá,

Eu fiz um banco de dados para a minha empresa e estou tentando aproveitar o código de Vocês, porém, não funciona.

Autor = campo no forumulário acoplado à tabela "ACOES JUR", campo "AUTOR"

Tabela = ACOES JUR (nesta tabela os nomes estão no campo Autor)

Nome = campo no forumuário não acomplado

Veja o código que estou tentando fazer:

If Not IsNull(DLookup("[Autor]", "[ACOES JUR]", "[Autor]=" & Me.Nome)) Then

Dim rs As Object

Set rs = Me.Recordset.Clone

rs.FindFirst "[Autor]='" & Me.Nome & "'"

Me.Bookmark = rs.Bookmark

Else

Me.Autor.Value = Me.Nome

End If

End Sub

O que está errado ?

Só para esclarecer, eu pretendo fazer o mesmo que o nosso amigo ou seja:

Toda vez que eu for colocar um nome novo, ele verificará se o nome já existe:

1) Se existir, irá para o registro

2) Se não existir, criar-se-á um novo registro.

Desde já agradeço !

Link para o comentário
Compartilhar em outros sites

  • 0

Fera eu até posto um exemplo mais no momento estou meio cheio e sem tempo de preparar mais assim que desafogar eu faço um e posto, toh vindo só pra ver como estão os tópicos e quando esquento a cabeça com o que toh fazendo...rsrsrs

:)

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Gteubl --

Mestre,

Eu não estou conseguindo fazer o registro no fórum.

O e-mail de confirmação não está no anti-apam nem na caixa de entrada.

Tentei enviar um e-mail para Vocês, forum@scriptbrasil.com.br porém não sei se Vocês receberam.

O meu login é Gteubl e meu e-mail é guilherme@lenoxxsound.com.br

Ps. Peço desculpas por estar pedindo isto por meio de post, mas não tenho outra forma de comunicar-me com Vocês, assim, peço por gentileza que apague este post tão logo receber esta mensagem.

Muito Obrigado !

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...