SQL-ADVPL (extensão VSCode)Beautify e conversão de queries entre AdvPL/TLPP ( Como usarSelecione um bloco de query no editor → botão direito → SQL-ADVPL → escolha o destino. Obs: Sem seleção, a extensão usa o documento inteiro. Placeholders canônicos internosPara reaproveitar o mesmo parser nos dois formatos AdvPL, tudo é normalizado para:
Exemplo de Query após o uso da extensão (ADVPL Embeded)BeginSql Alias cAliasQry SELECT MAX(SC5.R_E_C_N_O_) REG , SC5.C5_NUM AS NUMERO , CAST(SC5.C5_EMISSAO AS DATA) DATA_EMISSAO FROM %Table:SC5% SC5 WHERE 1=1 AND SC5.C5_FILIAL BETWEEN %Exp:MV_PAR01% AND %Exp:MV_PAR02% AND SC5.C5_NUM BETWEEN %Exp:MV_PAR03% AND %Exp:MV_PAR04% AND SC5.C5_CLIENTE BETWEEN %Exp:MV_PAR05% AND %Exp:MV_PAR07% AND SC5.C5_LOJACLI BETWEEN %Exp:MV_PAR06% AND %Exp:MV_PAR08% AND SC5.C5_EMISSAO BETWEEN %Exp:MV_PAR09% AND %Exp:MV_PAR10% AND SC5.%NotDel% GROUP BY SC5.C5_NUM , SC5.C5_EMISSAO HAVING 1=1 AND MAX(SC5.R_E_C_N_O_) > 10000 AND SC5.C5_EMISSAO >= '20260101' ORDER BY 1 , SC5.C5_EMISSAO EndSql Exemplo de Query após o uso da extensão (ADVPL String)cQuery := "SELECT " cQuery += " MAX(SC5.R_E_C_N_O_) REG " cQuery += " , SC5.C5_NUM AS NUMERO " cQuery += " , CAST(SC5.C5_EMISSAO AS DATA) DATA_EMISSAO " cQuery += "FROM " + RetSqlName("SC5") + " SC5 " cQuery += "WHERE 1=1 " cQuery += "AND SC5.C5_FILIAL BETWEEN " + MV_PAR01 + " AND " + MV_PAR02 + " " cQuery += "AND SC5.C5_NUM BETWEEN " + MV_PAR03 + " AND " + MV_PAR04 + " " cQuery += "AND SC5.C5_CLIENTE BETWEEN " + MV_PAR05 + " AND " + MV_PAR07 + " " cQuery += "AND SC5.C5_LOJACLI BETWEEN " + MV_PAR06 + " AND " + MV_PAR08 + " " cQuery += "AND SC5.C5_EMISSAO BETWEEN " + MV_PAR09 + " AND " + MV_PAR10 + " " cQuery += "AND SC5." + "D_E_L_E_T_ = ' '" + " " cQuery += "GROUP " cQuery += "BY SC5.C5_NUM " cQuery += ", SC5.C5_EMISSAO " cQuery += "HAVING 1=1 " cQuery += "AND MAX(SC5.R_E_C_N_O_) > 10000 " cQuery += "AND SC5.C5_EMISSAO >= '20260101' " cQuery += "ORDER " cQuery += "BY 1 " cQuery += ", SC5.C5_EMISSAO " |