Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal, boa tarde.
Tenho aqui na empresa uma solicitação cuja qual eu ainda não tratei.
Preciso trabalhar com vendas de dois bancos de dados. Um desses bancos de dados é de um antigo ERP meu, e o outro BD é do meu ERP atual.
Vamos lá, tenho as seguintes tabelas:
BD antigo (Viasoft):
Tabela: PPESCLI (possui campos de dados do cliente como, cnpj, razão social, nome fantasia etc..)
BD atual (Globus)
Tabela CODCLI (possui campos de dados do cliente como, cnpj, razão social, nome fantasia etc..)
Estou tratando aqui apenas uma das tabelas que tenho, que seriam em torno de 21 tabelas com informações de notas fiscais, vendas, quantidades, valores...
Preciso de uma força para saber qual a melhor maneira de tratar esses dados e unifica-los.
Obrigado comunidade
Pessoal, ficou assim depois de carregar as tabelas dos dois bancos.
Vejam que eu uni a CGC e CPF pois ela tem a mesma informação da NRINSCRICAOCLI, como faço agora pra unir as tabelas sem perder dados? Eu já tentei de tudo que é JOIN, KEEP, CONCATENATE.
O problema é que na validação o campo CLIENTE fica sem vinculo com o campo RSOCIAL e NFANTASIA.
LOAD
CODCLI,
NRCLI,
RSOCIALCLI,
NRINSCRICAOCLI,
NFANTASIACLI
FROM [lib://Ext Vendas (np_administrador)/BGM_CLIENTE.QVD](qvd);
LOAD CLIENTE,
NOME,
FANTASIA,
CGC& '|' &CPF as NRINSCRICAOCLI
FROM [lib://Ext Vendas (np_administrador)/PPESCLI.QVD](qvd);
Me ajudem nessa.
Obrigado.
Amigo bom dia , seu código deveria ser assim :
LOAD
CODCLI,
NRCLI,
RSOCIALCLI as NOME,
NRINSCRICAOCLI ,
NFANTASIACL as FANTASIA
FROM [lib://Ext Vendas (np_administrador)/BGM_CLIENTE.QVD](qvd);
concatenate
LOAD
CLIENTE as CODCLI , //se o campo cliente é o código igual a tabela superior.
NOME,
FANTASIA,
if(isnull(CGC),CPF,CGC) as NRINSCRICAOCLI //aqui você vai usar ou CGC ou CPF
FROM [lib://Ext Vendas (np_administrador)/PPESCLI.QVD](qvd);
Maicon,
Aqui if(isnull(CGC),CPF,CGC) as NRINSCRICAOCLI //aqui você vai usar ou CGC ou CPF porque devo escolher entre um ou outro? Queria entender se precisar em outras situações.
O que preciso é unir a coluna CGC (que é o cnpj) e tambem a CPF. Depois vou jogar dentro do campo NRINSCRICAOCLI porque esse campo tem as duas informações no meu banco atual, ou seja, no banco atual as informações estão no mesmo campo, diferente do erp antigo que tinha uma coluna para cada campo.
Obrigado
Certo amigo , dessa forma que te enviei , você terá um campo só com cnpj e cpf e nr da insrição do cliente.
Maicon,
Dentro do campo Incricaocli eu tenho as informações de cpf e cnpj no banco atual.
No outro banco esses dados são separados.
Tentei da forma que me falou, porém fica inconsiste. Fica com um ? em alguns clientes.
Amigão, desculpa, pode ser que não fui claro.
Essa validação if(isnull(CGC),CPF,CGC) as NRINSCRICAOCLI você vai fazer somente para o banco de dados que tem 2 campos CPF e CGC.
No outro não faça validação nenhuma, apenas carregue o campo NRINSCRICAOCLI .
O que eu entendi , que seu banco velho tem 2 campos.
Ou o cliente é PF ou PJ , quando PF terá CPF , quando PJ terá CGC.
Essa é a validação que é feita, se o campo PF esta nulo pega CNPJ se não usa o PF.
Maicon, bom dia.
Entendi agora sua validação e realmente deu certo, houve a junção do campo CGC com o CPF e renomeamos para NRINSCRICAOCLI. Até ai tudo bem.
Conforme a figura temos o código do cliente 729 do sistema atual e 8750 do antigo.
Veja que temos a mesma informação em bancos diferentes e conseguimos traze-las. Em exceção o campo fantasia que no banco antigo é nulo tudo está correto.
O que preciso para finalizar de vez é que apenas eu tenha uma linha e não duas, pois tenho a mesma informação nessas duas linhas, ou seja, preciso ter apenas uma linha, pois o campo INSCRICAOCLI agora é comum nos dois bancos de dados.
Obrigado.
Entendi amigo.
Para ficar uma linha só, você teria ai sim que fazer diferente.
BancoOLDtmp: //aqui criado um inline como se fosse seu banco antigo
LOAD * INLINE [
CNPJ,CPF, Nome_Cli, Razao_Cli
10 , ,Coca cola, Teste
20 , ,WEG, Teste1
30 , ,Marisol, Teste2
,01 ,Joao da Silva, Teste3
];
Bancounificado: Residente do seu banco antigo para tratar o CPF ou CNPJ em um banco so.
Load if(IsNull(CNPJ) or CNPJ = '',CPF,CNPJ) as NRInscricao,
Nome_Cli as Nome,
Razao_Cli as Razao Resident BancoOLDtmp; //Residente que comento em cima
drop Table BancoOLDtmp; //Deleto a tabela do banco antigo e crio uma nova tabela chamado BANCO UNIFICADO.
Concatenate
//Aqui é seu banco novo
LOAD * INLINE [
NRInscricao, Nome, Razao
10, Coca cola, Teste
20, WEG, Teste1
30, Marisol, Teste2
40, Malwee, Teste3
002,maicon,teste4
] where not Exists(NRInscricao); // Aqui eu digo que carregue só que não existe na leitura de cima, validando pelo NRIsncrição que é p CNPJ ou CPF do cliente.
Segue o modelo que simulei em anexo.
Agora para prevalecer o codigo do cliente novo por exemplo é só inverter o código.
BancoNovo:
LOAD * INLINE [
NRInscricao, Nome, Razao,CodCli
10, Coca cola, Teste,1000
20, WEG, Teste1,2000
30, Marisol, Teste2,3000
40, Malwee, Teste3,4000
002,maicon,teste4,5000
] ; // Aqui eu digo que carregue só que não existe na leitura de cima, validando pelo NRIsncrição que é p CNPJ ou CPF do cliente.
Concatenate
//Banco Antigo
Load if(IsNull(CNPJ) or CNPJ = '',CPF,CNPJ) as NRInscricao,
Nome_Cli as Nome,
Razao_Cli as Razao ,
cod as CodCli Resident BancoOLDtmp where not Exists(NRInscricao,if(IsNull(CNPJ) or CNPJ = '',CPF,CNPJ));
drop Table BancoOLDtmp;