Carga condicional de campos de um QVD

Em algumas situações precisamos saber se um QVD possui ou não um campo antes de carregar.

Abaixo segue uma possível solução que testa primeiramente no cabeçalho XML de um QVD se o campo existe no mesmo e ajusta o script para fazer a carga se o campo existir:

SET QVD=C:\tmp\Transactions.qvd;
QvdFieldHeader:
LOAD 
    FieldName 
FROM [$(QVD)] (XmlSimple, Table is [QvdTableHeader/Fields/QvdFieldHeader])    
where FieldName = 'Dim2';
SET Field='';
If NoOfRows('QvdFieldHeader') > 0 then
    SET Field='Dim2,';
endif;
LOAD TransLineID, 
     TransID, 
     Num, 
     Dim1, 
     $(Field)
     Dim3, 
     Expression1, 
     Expression2, 
     Expression3
FROM [$(QVD)](qvd);

Se quiser baixar o exemplo:
qvw
qvd

 

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *