Jump to content

Recommended Posts

Posted

: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!!!

Posted

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
Posted

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???

Posted

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.

Posted

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.

Posted

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!!

Posted

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
Posted

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 😁 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:

😄 Meus agradecimentos, jpaulino!!!!  🙂

rogi_cps.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.