Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

set#1

Comparar dados de duas tabelas iguais

Mensagens Recomendadas

set#1

Saudações.

Tenho uma base de dados em Access (2003) com algumas tabelas. Pretendo fazer um plano de dupla digitação, ou seja, fazer-se a 1a introdução de dados nas tabelas e depois fazer-se a 2a digitação (dos mesmos dados) noutras tabelas iguais.

No final desejo comparar se o que foi introduzido na 1a confere com o que foi introduzido na 2a vez.

Em suma, devo comparar cada campo se tem dados iguais aos mesmos campos noutras tabelas (iguais) e caso o dado for diferente emitir um relatório de quais campos os dados sao diferentes.

Ex: 1a tabela - Nome: set; Sexo: M

2a tabela - Nome: set; Sexo: F

Entao deve alertar que foi introduzido dados diferentes no campo "X" e depois o digitador ha-se ir ver no processo qual deve ser o dado real e rectificar.

Obrigado e espero ter sido claro.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rogi_cps

Pensou em criar um form que possa acrescentar os mesmo dados nas duas tabelas???  não precisaria de verificação, pois o que está digitando vai para as duas tabelas simultaneamente.

Pense nesta ideia!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
set#1

Ai 'e que ta...a ideia não 'e os dados irem ao mesmo tempo para as duas tabelas mas sim entrarem numa e depois fazer-se outra entrada e por fim comparar. Claro que estas entradas serão feitas num espaço de tempo determinado e não no mesmo dia.

O que se pretende: o Digitador pode na 1a vez errar um dado, ou na 2a errar. Assim 1o garantimos que as duas entradas foram Sucesso porque não se falhou nenhum dado, ou então, falhou algum dado e vamos verificar o que aconteceu!!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rogi_cps

Vamos ver uma coisa....  deixa eu entender...  estamos falando do seguinte...  vc tem um banco de dados o qual um alimentador insere os dados nele, e seja lá por qual motivo, vc exporta o registro do dia anterior para uma segunda tabela no dia seguinte a alimentação??

Mas.. que mal pergunte, por que ocorreria isso???

Vou ver se eu consigo saber quando foi a entrada de um registro, talvez pela data de entrada, possamos resolver isso da seguinte forma.  Seu banco de dados deve fechar, mas caso ele fique funcionando 24 horas por dia, podemos tb colocar uma rotina que a cada 24 horas ou hora marcada, ele verifique as datas de entrada e acrescente os registro com data do dia anterior.

comparações de tabela, dependendo de quanto registro vc tenha pode se tornar inviável pela demora e demanda da estação (é algo recomendado para reparar banco com backup).

Mas aí eu pergunto pra vc...  Como vão saber que os dados estão corretos, mesmo que isso sobre para o dia seguinte??? Porque se parar para pensar, e caso não consigam checar a consistência da informação, tanto faz acrescer os dados no mesmo dia ou dia posterior.  E também tem o seguinte, a alteração de dados poderia tb enviar os mesmo para segunda tabela.

Mais uma pergunta.. o segundo não é réplica do primeiro não, ou é?

Aguardo resposta.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
set#1

Vamos ver uma coisa....  deixa eu entender...  estamos falando do seguinte...  vc tem um banco de dados o qual um alimentador insere os dados nele, e seja lá por qual motivo, vc exporta o registro do dia anterior para uma segunda tabela no dia seguinte a alimentação??

Mas.. que mal pergunte, por que ocorreria isso???

Mas aí eu pergunto pra vc...  Como vão saber que os dados estão corretos, mesmo que isso sobre para o dia seguinte??? Porque se parar para pensar, e caso não consigam checar a consistência da informação, tanto faz acrescer os dados no mesmo dia ou dia posterior.  E também tem o seguinte, a alteração de dados poderia tb enviar os mesmo para segunda tabela.

Não seria assim. Deixa ver se explico melhor.

Tenho por exemplo um lote de 10 formulários diferentes por introduzir na BD ok. Abro a BD e o form la dentro e faço a introdução dos dados dos 10 certo...(numa 2a feira por exemplo). Guardo-os e numa 4a feira volto a pegar nos mesmos 10 e entro na BD numa interface de "2a digitação" e faço a digitação dos dados dos 10 de novo ok.

Esta 2a entrada de dados vai ser feita num form igual ao 1o mas os dados vão a uma outra(s) tabela(s) iguais as da 1a onde estão jogados os 1os dados (da 2a feira). E feito isto, deve-se comparar os dados da 1a e os da 2a digitação (isto e', os dados das 2 tabelas iguais) para ver se foram introduzidos dados iguais. Caso seja diferente algum campo, deve-se verificar qual dos dados 'e o correcto e corrigir-se. Essa verificação sera feita pelo Digitador usando-se dos formulários (em papel) para ver o que falhou.

Mais uma pergunta.. o segundo não é réplica do primeiro não, ou é?

Teriamos o seguinte dentro da mesma BD:

t_paciente (a tabela da 1a digitação)

ID

Nome

Endereco

etc...

t_paciente2 (a tabela da 2a digitação)

ID_2

Nome_2

Endereco_2

etc...

Deu para matar a charada??

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rogi_cps

sim deu sim... entendendo melhor.. posso te dizer uma coisa...

realmente, o que eu faria é o seguinte:

eu colocaria um novo campo na primeira tabela o qual seria preenchido com um carimbo, pelo próprio sistema, com data e hora e com base nisso, eu pararia de digitar a 2ª vez os dados da tabela e apenas faria uma copia dos dados com apenas um botão em um form (o que vc pode até pedir para copiar pela data desejada) ou até fazer isso de forma automática.

Caso tenha interesse neste tipo de solução pode ler este artigo.

http://office.microsoft.com/pt-br/access/HA102358491046.aspx

Isso evita a 2ª digitação.

Agora vc se vc precisa fazer realmente a 2ª digitação, recomento que crie um o form, não vinculado a tabela, para que ele não atualize automacamente a tabela, e com um botão do tipo OK

o qual, quando acionado, ele usaria a Dlookup para pesquisar na 1ª tabela seo registro é igual e se for acrescenta na 2ª tabela.  Pelo que lembro, fiz algo parecido com o que estou te falando, só que usei ao contrário, para não permitir que fosse acrescido registro duplicados.

Ve se essas idéias te resolvem... 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
set#1

Bom, a 1a solução ate seria boa, mas estou a usar Office 2003

A 2a solução seria a melhor mas vejamos...tua ideia 'e eu acrescentar os dados depois de verificar mas o que eu desejo 'e verificar depois de acrescentar percebes!!? Isso porque não estou interessado em verificar antes mas sim depois de gravar na 2a tabela. Seguindo a mesma filosofia desta 2a solução por ti apresentada poderia funcionar?

Obrigado.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rogi_cps

agora me perdi...  porque verificar depois de acrescentar???  Isso ocasiona o seguinte fato:  se eu acrescento dados errados e faço uma verificação automática, o sistema me retorna a informação que está errado, e me gera mais um trabalho, o de consertar o que fiz de errado.  Então o que estou querendo dizer é o seguinte:  eu acrescento dados, estão errados e depois tenho que consertar.

se vc verifica antes o reparo é imediato. e esse tipo eu me refei a um BD que fiz ao qual eu tinha que verificar duplicidade antes de permitir o acrescimo no BD, o que no seu caso seria diferente, pois o que vc procura é exatamente a duplicidade de dados. 

bom o que podes fazer é acrescer um campo data no qual vai a data do sistema atual (podendo até ter horário) e um codificação de copia automática dos dados do dia X para tabela em questão (2), o que evita de ter que digitar a segunda vez, uma vez que os dados são idênticos.

Essa primeira solução funciona em bases de qualquer ano do office, uma vez que vc está inserindo um novo campo. Só não esqueça de deixar o sistema permitindo valor 0 e não requerido, por causa dos santos antigos.  Pode colocar os comandos de carimbo, quando fechar o registro que alimentou, assim ele carimba com a data.

Vou dar uma olhada para ver se tenho mais uma solução.

Retorno ainda.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
set#1

agora me perdi...  porque verificar depois de acrescentar???  Isso ocasiona o seguinte fato:  se eu acrescento dados errados e faço uma verificação automática, o sistema me retorna a informação que está errado, e me gera mais um trabalho, o de consertar o que fiz de errado.

Exactamente...a ideia é essa mesma. Eu estarei como o supervisor e tera quem vai entrar os dados. Essa pessoa nao tera acesso a essa verificacao senao a fazer as 2 entradas. Cabe a mim verificar se das 2 vezes introduziu dados correctos ou nao. Trabalhoso mas tem que ser assim segundo as regras impostas no que pediram. Como saimos desta?!!??

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
rogi_cps

Meu amigo....  estive pensando neste problema e o que vejo:  na sua tabela você tem dois campos ao qual vc já se referiu

"Nome: set; Sexo: M"

o que acontece??  poderíamos resolver esse problema, apenas usando um dlookup, o qual iria ver se os dados que foi inserido no BD é igual ao digitado.  como fariamos??  setar o ultimo registro, carregar em variavel e jogar dentro do comando dlookup, creio que seria o mais viavel, porém deve retornar isso em algum lugar, pois como checaria os erros??

bom o problema com isso é o seguinte...  esse comando faz a procura dentro de toda a tabela, e apenas com os dados que informou, e por ser nome, creio que pode haver duplicidade de dados, exceto que isso seja controlado com o campo nome no modo de permitir somente uma entrada. Ou outra solução colocar campo data para que ele procure na data específica Porém como informou antes, as 1ª entradas teriam uma determinada data, e as segundas outras, o que o a pessoa que está digitando teria que colocar manualmente quando o fizesse, ou então um algorítimo que, por exemplo, calcule a data de dois dias anteriores, e acrescente na tabela,

Ve se isso pode ajudar?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vbtipo

Para comparares os dados das tuas tabelas fazes o seguinte:

1 - Abres o recordset da tabela origional;

2 - Pões os respectivos dados em diversas variáveis globais;

3 - Fechas o recordset;

4 - Abre o recordset da tabela duplicada;

5 - Fazes vários if's com os respectivos dados para ver a existencia de alguma alteração;

6 - Se houve pedes o código de confirmação para poderes alterares os dados origionais.


Lema: Se eu não saber de alguma coisa não se preocupem porque tento sempre ajudar alguma coisita, nem que seja, por palpites/sugestões.

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.