Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Prezados,
estou utilizando o script abaixo para ler arquivos xlsx contidos num determinado diretório e logo em seguida gravar o seu QVD correspondente, porém quando a leitura de algum arquivo apresenta algum tipo de erro o QVD é gravado assim mesmo de forma equivocada. Qual ajuste devo realizar para que ao ser encontrado algum erro o processo 'pule' para o proximo arquivo, deixando de gravar o QVD do arquivo com erro
Abraços!!
FOR Each vArquivo in FileList ('$(vDadosPlanilha)\Cliente H\*.xlsx')
LET vNomeArquivo = SubField(SubField(vArquivo, '\', -1), '.xlsx', 1);
TRACE vNomeArquivo: $(vNomeArquivo);
$(vNomeArquivo):
LOAD Left(FileBaseName(),6) AS Cod_Cliente,
ReloadTime() as DataCarga,
Date(Date#(Right(FileBaseName(),6)&'01','YYYYMMDD')) AS Data_Estoque_Venda,
FileBaseName() as %File,
'2' as Status,
'Cliente H' AS Cliente,
FROM
[$(vDadosPlanilha)\Cliente H\*.xlsx]
(ooxml, no labels, header is 1 lines, table is Sheet1);
STORE $(vNomeArquivo) into ..\DadosExtraidos\$(vNomeArquivo).QVD;
DROP Table $(vNomeArquivo);
NEXT vArquivo
Prezados,
unificando as ajudas, encontrei a solução.
Obrigado a todos
FOR Each vArquivo in FileList ('$(vDadosPlanilha)\Cliente H\*.xlsx')
LET vNomeArquivo = SubField(SubField(vArquivo, '\', -1), '.xlsx', 1);
TRACE vNomeArquivo: $(vNomeArquivo);
set ErrorMode=0;
$(vNomeArquivo):
LOAD Left(FileBaseName(),6) AS Cod_Cliente,
ReloadTime() as DataCarga,
Date(Date#(Right(FileBaseName(),6)&'01','YYYYMMDD')) AS Data_Estoque_Venda,
FileBaseName() as %File,
'2' as Status,
'Cliente H' AS Cliente,
A AS Cod_Modelo,
B AS Qtd_Estoque,
C AS Qtd_Ven
FROM
[$(vDadosPlanilha)\Cliente H\$(vNomeArquivo).xlsx]
(ooxml, no labels, header is 1 lines, table is Sheet1)
Where Len(A)>0;
If ScriptError=0 AND len('$(vNomeArquivo)')=13 THEN
STORE $(vNomeArquivo) into ..\DadosExtraidos\$(vNomeArquivo).QVD;
DROP Table $(vNomeArquivo);
ELSE
DROP Table $(vNomeArquivo);
END IF
NEXT vArquivo
Paulo, olá!
Acredito que você pode trabalhar com as variáveis de erro no seu Script (inclusive se o erro não seja previsível). Vide help:
E com as funções condicionais para executar o bloco de código de "teste" em caso de erro. Esse link ilustra por meio de ex.:
Error Handling in Qlikview | Business Intelligence
e neste outro (método 3): QlikView Addict: Checking if a File Exists
Tente assim
$(vNomeArquivo):
LOAD Left(FileBaseName(),6) AS Cod_Cliente,
ReloadTime() as DataCarga,
Date(Date#(Right(FileBaseName(),6)&'01','YYYYMMDD')) AS Data_Estoque_Venda,
FileBaseName() as %File,
'2' as Status,
'Cliente H' AS Cliente,
FROM
[$(vDadosPlanilha)\Cliente H\*.xlsx]
(ooxml, no labels, header is 1 lines, table is Sheet1);
If alt(NoOfRows('$(vNomeArquivo)'),0) >0 then
STORE $(vNomeArquivo) into ..\DadosExtraidos\$(vNomeArquivo).QVD;
DROP Table $(vNomeArquivo);
endif
Hi Paulo,
Eu acho que é isso que você precisa. Por favor nos informe.
FOR Each vArquivo in FileList ('$(vDadosPlanilha)\*.xlsx')
LET vNomeArquivo = SubField(SubField(vArquivo, '\', -1), '.xlsx', 1);
TRACE vNomeArquivo: $(vNomeArquivo);
[$(vNomeArquivo)]:
LOAD Left('$(vNomeArquivo)',6) AS Cod_Cliente,
ReloadTime() as DataCarga,
Date(Date#(Right('(vNomeArquivo)',6)&'01','YYYYMMDD')) AS Data_Estoque_Venda,
'$(vNomeArquivo)' as %File,
'2' as Status,
'Cliente H' AS Cliente
AutoGenerate 1;
STORE [$(vNomeArquivo)] into [$(vDadosPlanilha)]\$(vNomeArquivo).qvd (qvd);
DROP Table [$(vNomeArquivo)];
NEXT vArquivo
Tamil,
está faltando o FROM no script!!
Hi Paulo,
Sí. Eliminé la parte de. Creo que desea almacenar detalles del archivo (no datos) en qvd's. Si no, por favor, hágame saber su requerimiento. Gracias
Prezados,
unificando as ajudas, encontrei a solução.
Obrigado a todos
FOR Each vArquivo in FileList ('$(vDadosPlanilha)\Cliente H\*.xlsx')
LET vNomeArquivo = SubField(SubField(vArquivo, '\', -1), '.xlsx', 1);
TRACE vNomeArquivo: $(vNomeArquivo);
set ErrorMode=0;
$(vNomeArquivo):
LOAD Left(FileBaseName(),6) AS Cod_Cliente,
ReloadTime() as DataCarga,
Date(Date#(Right(FileBaseName(),6)&'01','YYYYMMDD')) AS Data_Estoque_Venda,
FileBaseName() as %File,
'2' as Status,
'Cliente H' AS Cliente,
A AS Cod_Modelo,
B AS Qtd_Estoque,
C AS Qtd_Ven
FROM
[$(vDadosPlanilha)\Cliente H\$(vNomeArquivo).xlsx]
(ooxml, no labels, header is 1 lines, table is Sheet1)
Where Len(A)>0;
If ScriptError=0 AND len('$(vNomeArquivo)')=13 THEN
STORE $(vNomeArquivo) into ..\DadosExtraidos\$(vNomeArquivo).QVD;
DROP Table $(vNomeArquivo);
ELSE
DROP Table $(vNomeArquivo);
END IF
NEXT vArquivo