• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

rogi_cps

[Resolvido] Duplicidade de Registros

13 mensagens neste tópico

:wallbash:

Preciso de ajuda urgente!!!!!!  Estou dando cabeçadas  neste ponto!!!

Explanando....  é o seguinte, tenho um banco de dados em Access 2003 e ele tem duas tabelas, uma chamada Amb e outra Geral.  Na tabela amb, tem cadastrado ambulatórios de um hospital e locais de atendimento no mesmo.  A tabela geral se refere aos dadsos de faltas dos ambulatórios. 

O ponto é o seguinte...  criei um formulário que une as duas tabelas, sendo que os dados da tabela amb não serão alterados, e sim, usados para criar a tabela Geral (complementar a tabela geral), pois as mesmas tem o mesmo campos.  A grande questão que não quero que seja cadastrados registros duplicados, mas não posso setar os cmapos da tabela como registros não duplicados (sim ele podem duplicar no campo, aliás em todos os campos).

O que eu chamo de registro duplicado, seria todos os campos a serem inseridos na tabela geral, mas que ele não venham duplicar com todos os dados já existentes.

o que na relaidade eu preciso é um metodo que execute um seek, ou find, ou seja o que for para que compare os dados de todos os campos que estou tentando inserir, com todos os campos que já estão cadastrados, e se caso todos os dados sejam duplicados com registros exitentes, avise a duplicidade e não grave.

Não estou conseguindo executar tal procedimento.  Será que teriam alguma idéia para tal problema???

Agradeço a ajuda!!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Caramba.....  Acho que estão como eu... sem idéias....

Porém tive uma e gostaria de saber se conseguem me ajudar a terminar de executar, pois estou tendo uma determinada dificuldade...

Tenho neste arquivo  os campos:Código (autonum), Cod(inteiro), Amb(Texto), Local(Texto), data1(data/hora), Data2(Data/Hora)

estou utilizando o Dlookup (Dpesquisa) para tentar chegar a duplicidade, porém estou com a dificuldade.

Preciso Pegar o campo Código através do Dpesquisa, só que com a entrada de data, e a resposta tem sido a mesma (Nulo).

Estou colando o comando que estou usando, por favor me ajudem!!

Bopm aí vai todo o procedimento que estou usando, ressalto que não está terminado devido a este problema....  por favor...ç sugestões.. escrevam

Public Sub Duplicidade()

'define os valores para as variáveis de acordo com os campos.
Cod.SetFocus
VPCod = Cod.Text
Localizacao.SetFocus
VPLoc = Localizacao.Text
DataEntrega.SetFocus
VPEntr = DataEntrega.Text
DataAbsenteismo.SetFocus
VPAbs = DataAbsenteismo.Text



'acha o código de autonumeração, baseado primeiramente na dataentrega
VPRet = DLookup("[Código]", "Geral", _
    "[DataEntrega] = " & VPEntr)

Carregamento:
'define os valores para os campos de acordo com a tabela Amb
VPCod2 = DLookup("[cod]", "Geral", _
    "[código] = " & VPRet)
VPLoc2 = DLookup("[local]", "Geral", _
    "[código] = " & VPRet)
VPEntr2 = DLookup("[dataentrega]", "Geral", _
    "[código] = " & VPRet)
VPAbs2 = DLookup("[dataabsenteismo]", "Geral", _
    "[código] = " & VPRet)

'verifica se os campos são identicos e caso seja exclui o registro
'não permitindo gravação de duplicidade
If VPEntr = VPEntr2 Then
    If VPAbs = VPAbs2 Then
        If VPCod = VPCod2 Then
            If VPLoc = VPLoc2 Then
                MsgBox "Registro Duplicado!" & vbCr _
                & "O Registro será deletado!", vbOKOnly + vbInformation, "Duplicidade"
                DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
                DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
                DoCmd.GoToRecord , , acLast
            Else
                GoTo SomaCarregamento
            End If
        Else
            GoTo SomaCarregamento
        End If
    Else
        GoTo SomaCarregamento
    End If
    Else
    GoTo SairCarregamento
End If

SomaCarregamento:
VPRet = VPRet + 1
GoTo Carregamento

SairCarregamento:

End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esta pensando.... seria possível usar uma chamada para abrir a tabela e procurar o registro compatível, retornando uma msg, caso venha achar, que o registro já existe e apagar o registro duplicado????  Essa tabela aberta me permitiria uma procura em todos os registros compatíveis....

Seria viável tal possibilidade???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A abertura de tabela no memso projeto me pareceu ineficaz, sendo que ficaria muito pesado.  O que me fez retornar ao plano inicial do comando DPesquisa, porém lendo algums tópicos na internet, vi que seria possível fazer com que a criteria não tivesse apenas um campo, mas vários campos como critério.  agora a dificuldade surgiu, sendoq ue tenho o comando  abaixo:

o campo dataentrega é date

o campo dataabsenteismo é date

o campo cod é inteiro

o campo localização / local é texto.

VPRet = DLookup("[Código]", "Geral", "[DataEntrega] =  #" & Form![DataEntrega] & "#" And "[DataAbsenteismo] = #" & Form![DataAbsenteismo] & "#" And "[Cod] = Form![Cod]" And "[Local] = '" & Form![Localizacao] & "'")

o que estaria de errado no meu código??? Pois o mesmo tem retorno o erro de daods incompatíveis.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nenhuma sugestão sobre esse último código???  Moderador, poderia dar uma ajudinha???

Agradeço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E que tal mostrares o ficheiro ?

o moderador já tentou ajudá, mais você nem deu bola pra ele!

faz o que ele pediu anda.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o moderador já tentou ajudá, mais você nem deu bola pra ele!

faz o que ele pediu anda.

Antes de mais nada, fiz mais do que o moderador pediu.  Infelizmente eu trabalho em local onde somente tenho acesso a sites .org, portanto, não posso postar.  Em conversar PM com o moderardor, ele me pediu para enviar o arquivo para ele, que ele mesmo postaria, mas vejo  que isso não aconteceu.  resolvi procurar mudar o código, precisando somente da sintaxe correta para o comando que forneci  acima, pois o mesmo não está funcionando, retornando tipo de variáveis incompatíveis.  O moderador não tem me respondido, ultimamente, creio que devivo ao grande volume de solicitações que ele tem.  Tenho pedido ajuda a ele por PM da mesma forma que postei esse código aki.

Mas creio que como fórum, todos os membros que tenham conhecimento possam ajudar e não ficar diretamente e somente na mão do moderador.

Portanto pergunto a você, gostaria de analizar o meu arquivo??  Te envio por e-mail, porém não posso postar ele aki, e o moderador não o fez para mim, como um favor pessoal, mas posso enviar por mail.

Pode ajudar??

Porte aki uma resposta.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E qual é o critério da procura ? O que deve ser pesquisado e que servirá como critério para identificar se é duplicado ou não.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenho o seguinte quadro:

Uma tabela  com os campos

o campo dataentrega é date

o campo dataabsenteismo é date

o campo cod é inteiro

o campo local é texto.

um form com os campos

o campo dataentrega é date

o campo dataabsenteismo é date

o campo cod é inteiro

o campo localização texto.

o que estou querendo é o seguinte....  preciso achar um registro especifico na tabela com os dados do campo, porém esse formulário não está vinculado a tabela, e a tabela tem todos os campos como duplicação autorizada, o que dificulta ainda mais.

Com o Dlookup, ele pode me tornar um resultado de verdadeiro ou falso, o que já serviria para mim, pois achando o registro com os valores requisitados, meu formulário apresentaria uma msgbox, dizendo que o mesmo existe e não pode ser cadastrado novamente.

o comando que tentei tem retornado variáveis incompatíveis, e provavelmente está na forma que eu estou escrevenodo o código, porém como já comentei, não tem como buscar ajuda em sites especidficos, pois os mesmo são extensões diferentes de .org.  To ´postando abaixo o comando novamente.  como vc tem o banco de dados...  se colocar no sub duplicidade e chamar ele em qualquer lost focus vai apresentar o mesmo erro.  Tabela Geral, formulario CadastroGeral.]

VPRet = DLookup("[Código]", "Geral", "[DataEntrega] =  #" & Form![DataEntrega] & "#" And "[DataAbsenteismo] = #" & Form![DataAbsenteismo] & "#" And "[Cod] = Form![Cod]" And "[Local] = '" & Form![Localizacao] & "'")

provavelmente essa forma esteja arrada.  Por favor, teria como verificar a escrita deste código???

Valeu!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá,

Desculpa o atraso na resposta mas tenho tido muito trabalho (e obviamente pouco tempo :D )

Mas aqui vai uma correcção ao que já tens feito e que deve funcionar:

VPRet = DLookup("[Código]", "Geral", "[DataEntrega] =  #" & Form![DataEntrega] & "# And [DataAbsenteismo] = #" & Form![DataAbsenteismo] & "# And [Cod] = " & Form![Cod] & " And [Local] = '" & Form![Localizacao] & "'")
If Not IsNull(VPRet) Then
    MsgBox "Registo duplicado!"
End If

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá,

Desculpa o atraso na resposta mas tenho tido muito trabalho (e obviamente pouco tempo :) )

Mas aqui vai uma correcção ao que já tens feito e que deve funcionar:

VPRet = DLookup("[Código]", "Geral", "[DataEntrega] =  #" & Form![DataEntrega] & "# And [DataAbsenteismo] = #" & Form![DataAbsenteismo] & "# And [Cod] = " & Form![Cod] & " And [Local] = '" & Form![Localizacao] & "'")
If Not IsNull(VPRet) Then
    MsgBox "Registo duplicado!"
End If

:) Compreendo que és ocupado, e que está cheio de trabalho para fazer a ainda tens a responsabilidade de moderar o fórum, por isso aguardei sua resposta, sabendo também que teria uma resposta definitiva, e realemnte foi definitiva. 

O código funcionou perfeitamente :cheesygrin: e agradeço imensamente a ajuda prestada.  Creio que podes fechar o tópico pois foi executado com extrem sucesso.

Realmente me admira sua experiência. :notworthy:

:D Meus agradecimentos, jpaulino!!!!  :)

rogi_cps.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora