Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal, fiz uma rotina para monitorar os processamentos. Vou em "Arquivo/Exportar para arquivo de script" e salvo um .qvs. No arquivo .qvw que quero monitorar incluo o script (Inserir/Arquivo de script) e está lá meu script, mas tenho q alterar os parâmetros em cada arquivo(hj temos 54), qual a melhor forma de reaproveitar? Teria como eu chamá-lo e passar apenas os parâmetros?
// Parametros:
LET vDiretorio = 'Extração';
LET vSistema = 'Veiculo';
LET vData = now();
LET vEtapa = 'Gera Log';
LET vSubetapa = 'Subetapa';
LET vStatus = 'Sucesso';
Log_Processamento:
LOAD diretorio,
sistema,
data,
etapa,
subetapa,
status
FROM
[..\..\Log_Processamento.qvd]
(qvd);
LOAD * INLINE [
diretorio, sistema, data, etapa, subetapa, status
$(vDiretorio), $(vSistema), $(vData), $(vEtapa), $(vSubetapa), $(vStatus)
];
STORE Log_Processamento INTO [..\..\Log_Processamento.qvd];
DROP TABLE Log_Processamento;
Acho que entendi.. Veja se é isso:
Você quer ter um "script" centralizado com todos valores possíveis de cada carga? Se sim, você pode usar a mesma técnica só que vamos modificar um pouco:
SUB SetaVariaveis(nome_carga)
Switch nome_carga
Case 'amarelo'
Trace 'Você escolheu a cor amarela';
case 'azul'
Trace 'Você escolheu a cor azul';
case 'roxo'
Trace 'Você escolheu a cor amarela';
Default
Trace 'Você não escolheu um cor válida';
EndSwitch
ENDSUB
Call SetaVariaveis('azul');
Call SetaVariaveis('vermelho');
O valor de cada case será o nome de cada uma das cargas que você está querendo setar, e dentro de cada um deles, os comandos que você precisar executar. No seu caso, setar variáveis.
Joga isso um arquivo externo e importa em cada um dos seus arquivos. Ai pra cada um deles você chama o case respectivo.
Quando surgir um app novo, basta você adicionar mais um case nesse SetaVariaveis.
Você tem todos os valores centralizados agora.
Seria isso?
Bom dia Jamir.
Você pode colocar todo esse script em um arquivo .txt e depois apenas utilizar o comando must_include para incluir o código na aplicação.
Dessa forma você altera só em 1 lugar ( arquivo de texto ) e todas as 54 aplicações serão atualizadas.
SET vArquivoTXT = 'SeuCaminho\NomeArquivo.txt';
$(must_include=$(vArquivoTXT));
rafaelattux, no arquivo texto tbem ficaria fixo, desculpe mas não entendi. Como passaria os parâmetros para o arquivo texto? Exemplo: LET vDiretorio = 'Extração'; além de Extração temos Transformação, Painel, Imagens, etc.
Obrigado
Bom dia Jamir
Você pode criar uma variável lendo a data do script:
Let vDataScript = Date(Today(),''YYYYMMDD);
No store você adiciona esta variável no nome do arquivo:
STORE Log_Processamento INTO ['..\..\Log_Processamento_$(vDataScript).qvd'];
E na hora de Ler o arquivo você chama o arquivo substituindo a data com * para carregar todos os logs:
Log_Processamento:
LOAD diretorio,
sistema,
data,
etapa,
subetapa,
status
FROM
[..\..\Log_Processamento_*.qvd]
(qvd);
Fala jovem. tudo certo?
É mais fácil você criar uma SUB e deixar num arquivo para fazer um include posterior.
Subs podem receber parâmetros ao ser chamada. então você poderia fazer o seguinte:
Vamos criar um arquivo "GeraLog.qvs" (ou txt, o que preferir). Nesse arquivo você terá o seguinte:
SUB GeraLog(parametro) //você pode adicionar quantos parâmetros forem necessários
TRACE $(parametro);
//completa com o que você precisa
ENDSUB
Arquivo no teu script de aplicativo você vai fazer:
$(Must_Include=GeraLog.qvs);
CALL GeraLog('amarelo');
No console será mostrado o valor "amarelo".
Agora só adaptar para o que você precisa.
Abraços
Acho q não fui bem claro, vou tentar explicar melhor. Estes parâmetros:
LET vDiretorio = 'Extração';
LET vSistema = 'Veiculo';
LET vData = now();
LET vEtapa = 'Gera Log';
LET vSubetapa = 'Subetapa';
LET vStatus = 'Sucesso';
serão diferentes para cada um dos 54 arquivos.
Acho que entendi.. Veja se é isso:
Você quer ter um "script" centralizado com todos valores possíveis de cada carga? Se sim, você pode usar a mesma técnica só que vamos modificar um pouco:
SUB SetaVariaveis(nome_carga)
Switch nome_carga
Case 'amarelo'
Trace 'Você escolheu a cor amarela';
case 'azul'
Trace 'Você escolheu a cor azul';
case 'roxo'
Trace 'Você escolheu a cor amarela';
Default
Trace 'Você não escolheu um cor válida';
EndSwitch
ENDSUB
Call SetaVariaveis('azul');
Call SetaVariaveis('vermelho');
O valor de cada case será o nome de cada uma das cargas que você está querendo setar, e dentro de cada um deles, os comandos que você precisar executar. No seu caso, setar variáveis.
Joga isso um arquivo externo e importa em cada um dos seus arquivos. Ai pra cada um deles você chama o case respectivo.
Quando surgir um app novo, basta você adicionar mais um case nesse SetaVariaveis.
Você tem todos os valores centralizados agora.
Seria isso?
Grande Marco!
Funcionou !
Muito obrigado!