GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Registro em duplicidade
Go
Novo
Procurar
Notificar
Ferramentas
Responder
  
-star Rating Vote!  Login/Cadastrar 
Programador Pleno

Figura de  Jeser
postado
Olá galera.
Olha, eu até tentei achar alguma resposta no Forum pelo "Procurar", mas, juro que não achei exatamente o que preciso.
Vamos lá.
Quero emitir uma mensagem ao usuário quando ele estiver, por exemplo, cadastrando um pedido. Se ele tentar cadastrar um produto já cadastrado no "mesmo pedido", recebe uma mensagem avisando que o "produto" já existe no pedido.
Na tabela "Pedido", os campos "NumPed" e "CodProduto", estão indexados com o nome "PedProd".
Qual a melhor forma? "DLookup" ou "Seek"? Como faço?
Por favor, aguardo a valiosa ajuda de todos.

Um grande abraço.

Jeser
"Todas as coisas contribuem para o bem daqueles que amam a Deus"
 
Postagens: 288 | Localização: Rio de Janeiro | Registrado: 31 October 2005Reply With QuoteReport This Post
Programador Pleno

postado Hide Post
Jeser,

O código a seguir faz o processo procurando pelo CNPJ. Se você adptar para o seu BD, vai funcionar direitinho...

Se tiver dúvidas, entre em contato...

Ewoks



'Inicio --------------------------------
On Error GoTo DEUPAU
Me.CodBase = CDbl(CNPJ)
If Not IsNull(CNPJ) Then
On Error GoTo Err_CodBase
Dim SeExiste, SimNão, PulaLinha
Dim NomeForm As Form
Set NomeForm = Screen.ActiveForm
PulaLinha = Chr$(10) & Chr$(10)
SeExiste = DLookup("CodBase", "TBL_CadastroClientes", "CodBase = '" & Me!CodBase & "'")
If Not IsNull(SeExiste) Then
SimNão = MsgBox("Já existe cliente com o código " & [CodBase] & "." & PulaLinha & "Deseja localizá-lo agora?", 36, " Aviso ao Usuário: ")
If SimNão = 6 Then
Dim stLinkCriteria As String
stLinkCriteria = "[CodBase]=" & "'" & SeExiste & "'"
SendKeys "{ESC}", True
SendKeys "{ESC}", True
docmd.OpenForm NomeForm.name, , , stLinkCriteria
Else
SimNão = MsgBox("Altere o nome do CNPJ para poder continuar." & PulaLinha & "Pressione a tecla 'ESC' uma ou duas vezes para descartar o registro atual.", 64, " Aviso ao Usuário: ")
End If
End If
End If

Exit_CodBase:
Exit Sub

Err_CodBase:
Resume Exit_CodBase

DEUPAU:
If Err.Number = 94 Then
MsgBox "Não foi indicado o CNPJ desse registro", vbCritical, " Aviso ao Usuário: "
End If
Resume Exit_CodBase
'Fim ----------------------
 
Postagens: 203 | Localização: Blumenau, SC, Brazil | Registrado: 15 September 2005Reply With QuoteReport This Post
Analista Pleno

Figura de  Balemberg
postado Hide Post
Para pesquisar se um registro já existe em uma determinada tabela, o ideal é usar a pesquisa por número para evitar erros de digitação.
Então, no teu caso, usaremos o "NumPed"
Na propriedade AntesDeAtualizar da caixa de texto NumPed coloque o seguinte código:

If Dcount("*", "Pedido","[NumPed] =" & me.NumPed) > 0 then
msgbox "Esse registro já existe !"
Endif
Se o campo NumPedido é tipo string:
mude para essa linha:
=Dcount("*", "Pedido","[NumPed] ='" & me.NumPed & "'")


Balemberg
==========================
Procure ver os posts diretamente no fórum, geralmente eu edito os meus.
----------------------------------
Exemplos em MSAccess:
http://www.esnips.com/web/ebalem

 
Postagens: 939 | Localização: Florianópolis-SC | Registrado: 12 March 2001Reply With QuoteReport This Post
Programador Pleno

Figura de  Jeser
postado Hide Post
Balemberg
Ewoks

Me perdoe, mas deixei de mencionar o seguinte na minha situação:

O minha tela de lançamento tem um "form" acoplado a tabela "Pedido" e um "subform" acoplado a tabela "DetalhesPedido".
Quando abro a tela, o número do pedido é automático "NumPed". Depois o cursor vai para o "subform" para preencher os campos "CodProd", "Quant", etc...
Então, ao lançar, eu quero que o sistema verifique se estou lançando um produto "duas vezes" no mesmo ("NumPed"), ou seja, não pode haver lançamento de um mesmo "produto" duas vezes no mesmo pedido, entenderam?
Logo, acho que o sistema tem que verificar o "número do Pedido" e o "código do Produto".

Mais uma vez, obrigado pela atenção de voces.
Um abraço.

Jeser
"Todas as coisas contribuem para o bem daqueles que amam a Deus!"


Jeser
jbcotrim@gmail.com

"Todas as coisas contribuem para o bem daqueles que amam a Deus!"
 
Postagens: 288 | Localização: Rio de Janeiro | Registrado: 31 October 2005Reply With QuoteReport This Post
Analista Pleno

Figura de  Balemberg
postado Hide Post
Usando o mesmo código:

Na propriedade AntesDeAtualizar da caixa de texto "CodProd" coloque o seguinte código:

If Dcount("*", "DetalhesPedido","[NumPed] =" & Parent!NumPed & " AND [CodProd] =" & me.CodProd) > 0 then
msgbox "Produto já lançado nesse pedido !"
Endif
Funciona assim, quando é lançado o código do produto no subform, ele verifica (contando) se existe na tabela detalhesPedido um Pedido(NumPed)igual ao do form principal com esse produto digitado. Se a contagem for maior que zero, ou seja, 1, ele avisa que já foi lançado.
Obs.: Fiz o código direto no editor do forum, talvez tenha erros de sintaxe.


Balemberg
==========================
Procure ver os posts diretamente no fórum, geralmente eu edito os meus.
----------------------------------
Exemplos em MSAccess:
http://www.esnips.com/web/ebalem

 
Postagens: 939 | Localização: Florianópolis-SC | Registrado: 12 March 2001Reply With QuoteReport This Post
Programador Pleno

Figura de  Jeser
postado Hide Post
Valeu Balemberg.
Perfeito e funcionando a sua dica.
Obrigado por mais essa cara.

Um grande abraço e que Deus te abençoe!

Jeser
 
Postagens: 288 | Localização: Rio de Janeiro | Registrado: 31 October 2005Reply With QuoteReport This Post
  Powered by Social Strata  
 

GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Registro em duplicidade

©