E ai pessoal, já vimos como criar o pergunte manualmente no artigo “Criação de Pergunte”, mas desta vez veremos como fazer isso utilizando a função PutSx1.
Porque utilizar esta função ao invés de fazer manualmente?
A resposta mais pratica é que criando na mão, você precisaria repetir o processo para cada uma das empresas que forem utilizar o relatório. Então, é mais simples utilizar o PutSx1 no programa para que o processo seja realizado automaticamente.
Sintaxe:
PutSx1(cGrupo,; //Grupo cOrdem,; //Ordem cPergunt,; //Título da pergunta em português cPerSpa,; //Título da pergunta em espanhol cPerEng,; //Título da pergunta em inglês cVar,; //Variavel Ex: mv_ch1 - Detalhe inportante é que o ultimo caracter no nome começa com 1 e vai aumentando sequencialmente, mas depois do 9 passa para letras. cTipo,; //Tipo de campo - C=Caracter;N=Numerico;D=Data nTamanho,; //Tamanho nDecimal,; //Decimais nPresel,; //Pre selecao (Combo) cGSC,; //Objeto - G=Edit;C=Combo cValid,; //Validação cF3,; //F3 cGrpSxg,; //Grupo de campos cPyme,; //Pyme cVar01,; //Variavel Ex: mv_par01 cDef01,; //1ª opção do comboboxcheckbox em português cDefSpa1,; //1ª opção do comboboxcheckbox em espanhol cDefEng1,; //1ª opção do comboboxcheckbox em inglês cCnt01,; // cDef02,; //2ª opção do comboboxcheckbox em português cDefSpa2,; //2ª opção do comboboxcheckbox em espanhol cDefEng2,; //2ª opção do comboboxcheckbox em inglês cDef03,; //3ª opção do comboboxcheckbox em português cDefSpa3,; //3ª opção do comboboxcheckbox em espanhol cDefEng3,; //3ª opção do comboboxcheckbox em inglês cDef04,; //4ª opção do comboboxcheckbox em português cDefSpa4,; //4ª opção do comboboxcheckbox em espanhol cDefEng4,; //4ª opção do comboboxcheckbox em inglês cDef05,; //5ª opção do comboboxcheckbox em português cDefSpa5,; //5ª opção do comboboxcheckbox em espanhol cDefEng5,; //5ª opção do comboboxcheckbox em inglês aHelpPor,; //Array com dicas em português aHelpEng,; //Array com dicas em inglês aHelpSpa) //Array com dicas em espanhol
Como pode ver acima, coloquei a explicação sobre cada um dos parâmetros da função.
Coloquei bastante comentário no fonte de exemplo pra facilitar o entendimento.
#Include "Protheus.ch" /* ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± ±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±± ±±ºPrograma ³ RESPA01 ºAutor ³ Vinícius Moreira º Data ³ 31/10/2013 º±± ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±± ±±ºDesc. ³ Testando criação de pergunte com PutSx1. º±± ±±º ³ º±± ±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±± ±±ºUso ³ º±± ±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±± ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß */ User Function RESPA01 () //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //³Definição dos arrays que serão utilizados para criação das dicas das ³ //³perguntas. ³ //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Local cPerg := PadR("RESPA01", Len(SX1->X1_GRUPO)) //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //³Definição dos arrays que serão utilizados para criação das dicas das | //|perguntas. ³ //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Local aHelpPor := {} Local aHelpEng := {} Local aHelpSpa := {} //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //³Carregando arrays de dicas. Note que cada lingua que um array próprio. ³ //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ aAdd( aHelpPor, "Selecione o código do banco. ")//Português aAdd( aHelpSpa, "Seleccione el código de banco.")//Espanhol aAdd( aHelpEng, "Select the bank code. ")//Inglês //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //³Agora chamamos a função para criar as peruntas. ³ //³Lembrando que a função é executada uma vez pra cada pergunta do grupo. ³ //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ PutSx1( cPerg, "01","Do Banco ?" ,"¿De Banco ?","From Bank ?","mv_ch1",; "C",3,0,0,"G","","SA6","007","S","MV_PAR01","","","","","","","","","",; "","","","","","","",aHelpPor,aHelpEng,aHelpSpa) PutSx1( cPerg, "02","Ate Banco ?","¿A Banco ?" ,"To Bank ?" ,"mv_ch2",; "C",3,0,0,"G","","SA6","007","S","MV_PAR02","","","","","","","","","",; "","","","","","","",aHelpPor,aHelpEng,aHelpSpa) //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //³Zera arrays e em seguida carrega com as novas dicas dos campos. ³ //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ aHelpPor := {} aHelpEng := {} aHelpSpa := {} aAdd( aHelpPor, "Selecione a data de emissão ") aAdd( aHelpSpa, "Seleccione la fecha de expedición") aAdd( aHelpEng, "Infome the date of issue ") //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //³Criando mais duas perguntas. ³ //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ PutSx1( cPerg, "03","Da Emissao ?" ,"¿De Emision ?" ,"From Issue Date ?",; "mv_ch3","D",8,0,0,"G","","","","S","MV_PAR03","","","","","","","","","",; "","","","","","","",aHelpPor,aHelpEng,aHelpSpa) PutSx1( cPerg, "04","Ate a Emissao ?","¿Ate Emision ?","To Issue Date ?" ,; "mv_ch4","D",8,0,0,"G","","","","S","MV_PAR04","","","","","","","","","",; "","","","","","","",aHelpPor,aHelpEng,aHelpSpa) //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //³Zera arrays e em seguida carrega com as novas dicas dos campos. ³ //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ aHelpPor := {} aHelpEng := {} aHelpSpa := {} aAdd( aHelpPor, "Selecione qual moeda deve ser ") aAdd( aHelpPor, "considerada. ") aAdd( aHelpSpa, "Elija la moneda que se debe ") aAdd( aHelpSpa, "considerar. ") aAdd( aHelpEng, "Select the currency that must ") aAdd( aHelpEng, "be considered. ") //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //³Criando a última pergunta. ³ //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ PutSx1( cPerg, "05","Qual Moeda ?","¿Que Moneda ?","Wich Currencies ?",; "mv_ch5","N",2,0,1,"C","","","","S","MV_PAR05","Moeda 1","Moneda 1",; "Currency 1","","Moeda 2","Moneda 2","Currency 2","Moeda 3","Moneda 3",; "Currency 3","Moeda 4","Moneda 4","Currency 4","Moeda 5","Moneda 5",; "Currency 5",aHelpPor,aHelpEng,aHelpSpa) //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ-¿ //³Abre a tela do pergunte para visualização e preenchimento das | //|informações. ³ //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Pergunte(cPerg, .T.) Return
É isso ai galera, a sintaxe e o fonte sozinhos já explicam tudo.
Clique aqui para baixar o arquivo fonte.
Abraço
Muito bom esse post cara… Sou novo na área e to apanhando para fazer uma integração word pois não seu relacionar as variáveis com query na verdade nunca criei uma query. Os exemplos que tem na web de integração word são só de com atribuição direto na variável se é que me entende se sim e puder postar algo sobre o assunto … Desde já agradeço… Júnior
Opa, bom que curtiu o artigo.
Vou colocar integração com Word aqui na nossa lista de tutoriais.
Valeu pela dica.
Abraço
[…] PutSx1 – Criação de pergunte via programa […]