Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Srs.
Boa tarde!
Criei um qvd que armazena uma foto diária através da validação de uma chave na clausula Where.
Porem agora tenho contratos duplicados, então me deparei com a necessidade de distinguir contratos novos dos contratos alterados.
Pensei em fazer da seguinte forma.
Carrego um qvd original.
Apos esta carga concateno um novo select onde o numero do contato not existis. Desta forma ele concatena os contratos que não existirem.
Agora concateno novamente onde as datas not existis. Desta forma ele concatena os contratos que tiveram alteração de datas.
Abaixo segue um exemplo do código que criei.
Porem onde esta o problema
Quanto tenho um contrato que foi alterado ele grava o mesmo duas vezes como novo e duas vezes como Contrato Novo e duas vezes como Contrato Alterado.
Alguem pode me ajudar ?
//-----------------------------
[Base]:
load
[tipo da carga]
chave_inclusao
chave_alteracao
numero do contrato
data1
data2
data3
nome do cliente
endereço
from
[base.qvd]
(qvd);
//-----------------------------
concatenate (Base)
'Contrato Novo' as [tipo da carga]
chave_inclusao
chave_alteracao
numero do contrato
data1
data2
data3
where
not existis ('chave_inclusao',numero do contrato);
sql
select
numero do contrato as chave_inclusao
data1 ||'|'|| data2 ||'|'|| data3 as chave_alteracao
numero do contrato
data1
data2
data3
nome do cliente
endereço
from
<Tabela>;
//-----------------------------
concatenate (Base)
'Contrato Alterado' as [tipo da carga]
chave_inclusao
chave_alteracao
numero do contrato
data1
data2
data3
where
not existis ('chave_alteracao',data1 &'|'& data2 &'|'& data3);
sql
select
numero do contrato as chave_inclusao
data1 ||'|'|| data2 ||'|'|| data3 as chave_alteracao
numero do contrato
data1
data2
data3
nome do cliente
endereço
from
<Tabela>;
Caros,
Obrigado pela ajuda de todos,
Mas a necessidade foi descontinuada.
Atte.
Mercadante
Não seria mais interessante gravar a data hora da foto tirada?
Eu gravo ela também, mas não na chave
Quando o contrato é alterado, você deseja manter somente a última "versão" dele?
Não, eu quero manter todas as alterações.
Por exemplo, tenho um campo que a data do cancelamento por inadimplência. Essa data pode ser preenchida varias vezes.
Então vou ter todo o histórico deste contrato.
Neste modelo de código que postei, ele funciona mas duplica quando o contrato tem alteração.
Vou dar um exemplo
contrato 0001 foi cadastrado dia 01/01/2015 e a data de cancelamento = null().
Na carga ele vai mostrar uma vez esse contrato com o tipo carga = Contrato Novo
Se o campo data de cancelamento for alterado " Neste caso ele entraria no segundo concatenate do código" ele fica assim
contrato 0001 cadastro 01/01/2015 Data de Cancelamento Null() tipo carga = contrato novo
contrato 0001 cadastro 01/01/2015 Data de Cancelamento Null() tipo carga = contrato novo
contrato 0001 cadastro 01/01/2015 Data de Cancelamento 24/01/2015 tipo carga = contrato alterado
contrato 0001 cadastro 01/01/2015 Data de Cancelamento 24/01/2015 tipo carga = contrato alterado
Sendo que deveria ser somente duas linhas.
contrato 0001 cadastro 01/01/2015 Data de Cancelamento Null() tipo carga = contrato novo
contrato 0001 cadastro 01/01/2015 Data de Cancelamento 24/01/2015 tipo carga = contrato alterado
Então acredito que você deva apenas ficar acumulando as linhas.
Como você sabe se o contrato teve alteração?
Pelo campo [tipo carga]
Eu acho que você pode manter todo o histórico e depois ir removendo as linhas e deixando somente o status que desejar.
O problema disso é o seguinte, quais são os campos que você verifica se teve alteração no contrato? somente o data de cancelamento?
Já conseguiu a resposta? Se sim, escolha uma e marque como "Correta" para fechar o tópico e nos ajudar a manter a comunidade organizada
Caros,
Obrigado pela ajuda de todos,
Mas a necessidade foi descontinuada.
Atte.
Mercadante