Como gerar um SetMVValue dinamicamente | Ti Responde 0164

No vídeo de hoje, vamos demonstrar como gerar um trecho preenchendo os parâmetros de um Pergunte usando uma query no SQL.

A dúvida de hoje, nos perguntaram, se teria alguma forma automatizada, de gerar um trecho para atualizar parâmetros com SetMVValue.

 

Pensando nisso, montamos um exemplo, onde vamos demonstrar uma query que montamos para gerar o molde para usar em AdvPL ou TLPP.

 

Segue abaixo o vídeo exemplificando:

 

E abaixo a query desenvolvida:

SELECT
	'SetMVValue("' + RTRIM(X1_GRUPO) + '", "MV_PAR' + X1_ORDEM + '", ' +
    CASE 
        WHEN X1_TIPO = 'N' AND X1_DEF01  = '' THEN '0'
        WHEN X1_TIPO = 'N' AND X1_DEF01 != '' THEN '1'
        WHEN X1_TIPO = 'D' THEN 'Date()'
        WHEN X1_TIPO = 'C' AND (UPPER(X1_PERGUNT) LIKE '%ATE%' OR UPPER(X1_PERGUNT) LIKE '%ATÉ%') THEN '"' + REPLICATE('Z', X1_TAMANHO) + '"'
        WHEN X1_TIPO = 'C' THEN '"' + REPLICATE(' ', X1_TAMANHO) + '"'
        ELSE '""'
    END
    + ') //' + X1_TIPO + ' - ' + RTRIM(X1_PERGUNT)
	+ CASE WHEN X1_DEF01 != '' THEN  '  1=' + RTRIM(X1_DEF01) ELSE '' END
	+ CASE WHEN X1_DEF02 != '' THEN ';  2=' + RTRIM(X1_DEF02) ELSE '' END
	+ CASE WHEN X1_DEF03 != '' THEN ';  3=' + RTRIM(X1_DEF03) ELSE '' END
	+ CASE WHEN X1_DEF04 != '' THEN ';  4=' + RTRIM(X1_DEF04) ELSE '' END
	+ CASE WHEN X1_DEF05 != '' THEN ';  5=' + RTRIM(X1_DEF05) ELSE '' END
	AS EXPRESSAO
FROM
	SX1990 SX1
WHERE
	X1_GRUPO = 'FIN130'
    AND D_E_L_E_T_ = ' '
ORDER BY
    X1_ORDEM

Bom pessoal, por hoje é só.

 

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação