COMPARAR DADOS ENTRE DUAS TABELAS ACCESS

LEONARDOSILVEIR 27/06/2011 14:00:26
#377853
Pessoal, preciso fazer uma comparação entre os dados de duas tabelas e identificar as diferenças e aponta-las em um campo. Preciso identificar pela chave de acesso de uma tabela e localiza-la na segunda tabela e verificar se o numero da NF, a serie, o valor, o icms e se o ipi estão diferentes, quando for identificado diferença quero fazer um update na primeira tabela no campo DESCR_DIVERG, informando tal divergencia. Caso exista mais de uma divergencia no mesmo lançamento, quero ir concatenando a descrição no mesmo campo (EX. ICMS Divergente/ IPI Divergente). Em anexo disponibilizo alguns dados e a estrutura de como irá ficar as tabelas no access.


KERPLUNK 27/06/2011 14:15:39
#377855
faça um union:
Select [ô]tabela 1[ô] as tabela, chave, id from tabela1 order by chave
union
select [ô]tabela 2[ô] as tabela, chave, id form tabela2
LEONARDOSILVEIR 27/06/2011 20:58:08
#377890
Mas em um mesmo registro posso ter mais de uma divergencia, o union só irá me apontar a primeira encontrada.
KERPLUNK 28/06/2011 09:38:02
#377907
Aí é que está, com o union, vc mostra os dados das duas tabelas e pode comparar todos os campos que quiser...
LEONARDOSILVEIR 28/06/2011 20:53:22
#377984
To apanhando pra caramba com esse select com union, o que está errado?

tabela.Open([Ô]Select MMC_CHAVE_ACS_NFE FROM MMC_NFE_LANC_FISCAIS UNION SELECT MMC_CHAVE FROM MMC_NFE_TOTAIS WHERE MMC_NFE_LANC_FISCAIS.MMC_CHAVE_ACS_NFE = MMC_NFE_TOTAIS.CHAVE_ACESSO AND MMC_NFE_LANC_FISCAIS.ICMSTAX_BRL_AMT <> MMC_NFE_TOTAIS.ICMSTAX_BRL_AMT[Ô], Conexao)
KERPLUNK 29/06/2011 09:17:54
#378001
Tenta assim:

Select * from (Select MMC_CHAVE_ACS_NFE ChaveLancamentos, [ô][ô] as ChaveAcesso, ICMSTAX_BRL_AMT IcmsLancamento, [ô][ô] IcmsTotal FROM MMC_NFE_LANC_FISCAIS
UNION
SELECT MMC_CHAVE ChaveTotais, CHAVE_ACESSO, [ô][ô], ICMSTAX_BRL_AMT FROM MMC_NFE_TOTAIS)
WHERE
ChaveLancamentos = ChaveAcesso AND
IcmsLancamento <> IcmsTotal

Nota: Não testei essa SQL, sintaticamente me parece correta, se não for extamente assim, é algo bem parecido.
LEONARDOSILVEIR 02/07/2011 03:06:04
#378268
Kerplunk, ajustei o select às minhas tabelas e campos, porém dá o erro [Ô]Nenhum valor foi fornecido para um ou mais parâmetros necessários.[Ô]

tabela.Open([Ô]SELECT * FROM (SELECT A.MMC_CHAVE_ACS_NFE, A.ICMSTAX_BRL_AMT FROM MMC_NFE_LANC_FISCAIS A UNION SELECT B.CHAVE_ACESSO, B.ICMSTAX_BRL_AMT FROM MMC_NFE_TOTAIS) WHERE A.MMC_CHAVE_ACS_NFE = B.CHAVE_ACESSO AND A.ICMSTAX_BRL_AMT <> B.ICMSTAX_BRL_AMT[Ô], Conexao)
LEONARDOSILVEIR 04/07/2011 19:36:12
#378467
Alguém para dar um apoio?
LEONARDOSILVEIR 11/07/2011 23:33:11
#378968
O que está errado neste select?

SELECT A.ICMSTAX_BRL_AMT, A.CHAVE_ACESSO, B.ICMSTAX_BRL_AMT, (A.ICMSTAX_BRL_AMT - B.ICMSTAX_BRL_AMT), CASE WHEN ((A.ICMSTAX_BRL_AMT - B.ICMSTAX_BRL_AMT) >
0,04) OR ((A.ICMSTAX_BRL_AMT - B.ICMSTAX_BRL_AMT) < -0.04) THEN [ô]ICMS DIVERGENTE[ô] END AS STATUS
FROM MMC_NFE_TOTAIS AS A, MMC_NFE_LANC_FISCAIS B
WHERE (((A.CHAVE_ACESSO)=[ô]55110992877354001111550010000079331024476010[ô]))
quando rodo dá erro de sintaxe (operador faltando)
Tópico encerrado , respostas não são mais permitidas