COMPARAR BASE DE DADOS E EMITIR RELATORIO DA DIFER

XXXANGELSXXX 26/10/2009 16:47:16
#326309
Boa noite amigos, estou precisando fazer um sistema aqui da seguinte forma, eu tenho um cadastro de clientes por exemplo e nele eu tenho um campo para cadastrar o valor do contrato do cliente, exemplo 60,00, eu recebo um arquivo txt de comissao vindo de uma empresa parceira, que exemplo o cliente codigo 19099 = 60,00, quando eu importo o arquivo se vier no cliente codigo 19099 = 35,00 ou seja, o valor da comissao veio diferente do definido no cadastro.. qual a melhor forma de eu fazer esse sistema? queria so que as diferenças fossem impressas num relatorio para mim, entenderam? ha, o arquivo txt logico vou importar para uma tabela, chamada de MOVIMENTACOES, e ele tem que comparar na tabela CLIENTES os campos exemplo :

na tabela CLIENTES tem um campo com nome VALORCONTRATO
na tabela MOVIMENTACOES tem um campo que chama VALORRECEBIDO

como vou fazer para as duas tabelas chocarem, e as diferenças serem impressas para mim em um relatorio?

Desde ja agradeço a atençao.
RCMRO 26/10/2009 19:33:46
#326315
Resposta escolhida
Angel,

Supondo que as tabelas tenham as características mínimas a seguir:
    CREATE TABLE Clientes
( CodCli INT,
ValorContrato NUMERIC(15,2))

CREATE TABLE Movimentos
( Data DATETIME,
CodCli INT,
ValorRecebido NUMERIC(15,2),
Processado CHAR(1))

Voce pode criar uma Stored Procedure como a abaixo e na volta alimentar um RECORSET (ou similar) ou usar no CRISTAL (ou similar)
CREATE PROCEDURE ProcessaDiferencas
AS
BEGIN
CREATE TABLE #Diferentes
( Data DATETIME,
CodCli INT,
ValorRecebido NUMERIC(15,2))

INSERT INTO #Diferentes
(Data, CodCli, ValorRecebido)
SELECT Data, CodCli, ValorRecebido
FROM Movimentos
WHERE Processado <> [ô]S[ô]

UPDATE Movimentos
SET Processado = [ô]S[ô]
WHERE Processado <> [ô]S[ô]

SELECT Dif.Data,
Dif.CodCli,
Dif.ValorRecebido,
Cli.ValorContrato,
Cli.ValorContrato - Dif.ValorRecebido AS Diferenca
FROM #Diferentes Dif
INNER JOIN Clientes Cli
ON Cli.CodCli = Dif.CodCli
WHERE Cli.ValorContrato <> Dif.ValorRecebido
END
LEANDRO 27/10/2009 09:19:11
#326334
Você pode fazer uma tabela temporaria que armazena esses valores e depois imprima a tabela
RCMRO 05/11/2009 17:01:10
#327050
XXXANGELSXXX,

E ai, atendeu à sua necessiadade? Se sim, feche o tópico.

Obrigado,
Tópico encerrado , respostas não são mais permitidas