Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde pessoal,
Tenho a seguinte duvida: estou fazendo acesso ao banco de dados de um cliente, porém não sei a estrutura de tabelas do ERP usado.
O fornecedor do ERP criou umas procedures para consumirmos somente os dados que queremos.
Exemplo:
EXECUTE itensEstoque
SELECT * FROM ##itensEstoque.
Gostaria de saber se tem alguma forma de criar uma carga que passe esse comando e o mesmo retornar os dados para um QVD.
Como fazer para acessar somente os dados do retorno da procedure?
No QVD, consigo adicionar dados novos e não excluir os antigos?
Grato pelo auxilio quem souber.
Atenciosamente.
Bom dia Marcel,
É possível realizando um load precedente
Algo nesses moldes:
Tabela:
Load
*;
SQL EXECUTE itensEstoque;
Para a inclusão dos novos itens, você teria que carregar o QVD antigo e realizar alguma forma de verificação para identificar quais são os valores antigos e quais os novos que estão sendo carregados pela procedure (por data ou id por exemplo).
// Supondo que há um ID
NoConcatenate
QVD:
Load
*
From QVD;
Load
// Segundo load para carregar os dados
Load
*
Resident Tabela
where not exists(ID) // verificaria se há IDs que já foram carregados anteriormente na tabela 'Tabela').
Felipe.
Bom dia Marcel,
É possível realizando um load precedente
Algo nesses moldes:
Tabela:
Load
*;
SQL EXECUTE itensEstoque;
Para a inclusão dos novos itens, você teria que carregar o QVD antigo e realizar alguma forma de verificação para identificar quais são os valores antigos e quais os novos que estão sendo carregados pela procedure (por data ou id por exemplo).
// Supondo que há um ID
NoConcatenate
QVD:
Load
*
From QVD;
Load
// Segundo load para carregar os dados
Load
*
Resident Tabela
where not exists(ID) // verificaria se há IDs que já foram carregados anteriormente na tabela 'Tabela').
Felipe.
Muito obrigado pela ajuda Felipe.
Outra pergunta, dessa forma eu também posso criar um novo QVD?
Passo um caminho de pasta local, para armazenar esse QVD? Como posso fazer?
Grato mais uma vez pelo auxilio.
Oi Marcel,
Você pode criar um novo QVD ou sobrescrever o antigo que você tinha.
Tabela:
Load
*;
SQL EXECUTE itensEstoque;
// Supondo que há um ID
NoConcatenate
QVD:
Load
*
From QVD;
// Segundo load para carregar os dados
Concatenate (QVD)
Load
*
Resident Tabela
where not exists(ID) // verificaria se há IDs que já foram carregados anteriormente na tabela 'Tabela').
Store QVD into [QVD.qvd] (qvd); //local onde estaria o arquivo.
Seria algo mais ou menos nessa linha Pedro.
Poderia marcar a resposta como correta / ou se te ajudou por favor?
Felipe.
Bom dia Felipe,
Muito obrigado pela ajuda, estou começando a caminhar melhor.
Tenho a seguinte duvida: não tenho nenhum QVD montado ainda.
Preciso consultar uma procedure em outro servidor por conexão e montei a seguinte sintaxe:
LIB CONNECT TO '192.168.0.251'
Load
*;
SQL EXECUTE dbo.wGetItem;
Store itens into [lib:/Itens/itens.qvd];
Ao carregar os dados, da a seguinte msg:
Carga de arquivos iniciada
Os dados não foram carregados. Solucione o erro e tente carregar novamente.
Mas não apresenta erro algum, onde será que estou errando? Preciso montar um QVD com os campos que retornam do execute ou ele gera automaticamente?
Oi Marcel,
As mensagens que ele mostra realmente são meio inconsistentes com o erro que deveria dar.
Tenta rodar várias vezes pra ver se muda a mensagem (não sei porque, mas as vezes não mostra uma mensagem explicativa, algumas sim).
Eu estou chutando, mas teria que entender se por exemplo, a conexão está ok, podendo ser também a procedure que é usada está certa.
Boa tarde Felipe,
Obrigado pela ajuda, consegui fazer a leitura direto criando uma tabela.
Porém agora estou querendo passar para um QVD e esta me dando erro:
ErrorSource: Microsoft OLE DB Provider for SQL Server,
ErrorMsg: Incorrect syntax near 'Store'.
Store Itens into [lib://itens (stoant_danilo)/itens.qvd] (qvd)
Preciso criar na mão um arquivo "itens.qvd"? Pois esse arquivo não existe (estou tentando criar do zero).
O que posso estar fazendo de errado?