- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Validação de de Pergunta
×
Linguagem de Programação ADVPL
Perguntas Validação de de Pergunta
- dzf6762
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 18
- Obrigados Recebidos: 0
10 anos 9 meses atrás #21045
por dzf6762
Validação de de Pergunta foi criado por dzf6762
Ola estou tentando achar algum meio para criar uma opção para selecionar mais de uma opção de uma consulta padra, em algumas perguntas usa-se uma validação, alguem sabe algum jeito?
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
10 anos 9 meses atrás #21066
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Validação de de Pergunta
Denis boa tarde, não entendi sua duvida ?
seria tipo, abrir uma janela e o cara marcar varias opções ?
seria tipo, abrir uma janela e o cara marcar varias opções ?
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- dzf6762
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 18
- Obrigados Recebidos: 0
- Gui_Nasc
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 4
- Obrigados Recebidos: 0
10 anos 9 meses atrás #21084
por Gui_Nasc
Respondido por Gui_Nasc no tópico Validação de de Pergunta
Ola Denis se entendi o que vc quer.
você pode criar parâmetros na SX1, ou usar a função ParamBox()
ambos vão criar uma tela para perguntas ao usuário onde a partir dai vc programa para filtrar da melhor maneira para você.
EXEMPLO PARAMETROS DA SX1
User function INICIO()
CriaSX1(cPerg)
pergunte(cPerg,.F.)
// Retorna parametros nas variaveis mv_par01,mv_par02,mv_par03,[...]
return
Static Function CriaSX1(cPerg)
PutSx1(cPerg, "01","Analise por:" ,"","","mv_ch01","C",40,00,00,"C","NaoVazio()","" ,"","","mv_Par01","MEdia Periodo" ,"","","","Media desde inicio" ,"","","Total Cliente","","","","","","","","","","","")
PutSx1(cPerg, "02","Data inicial:" ,"","","mv_ch02","D",08,00,00,"G","" ,"" ,"","" ,"mv_Par02","" ,"","","","" ,"","","" ,"","","" ,"","","","","","","","")
PutSx1(cPerg, "03","Data final:" ,"","","mv_ch03","D",08,00,00,"G","NaoVazio()","" ,"","","mv_Par03","" ,"","","","" ,"","","" ,"","","" ,"","","","","","","","")
PutSx1(cPerg, "04","Cliente de:" ,"","","mv_ch04","C",06,00,00,"G","" ,"SA1","","","mv_Par04","" ,"","","","" ,"","","" ,"","","" ,"","","","","","","","")
PutSx1(cPerg, "05","Loja de:" ,"","","mv_ch05","C",02,00,00,"G","" ,"" ,"","","mv_Par05","" ,"","","","" ,"","","" ,"","","" ,"","","","","","","","")
PutSx1(cPerg, "06","Cliente até:" ,"","","mv_ch06","C",06,00,00,"G","" ,"SA1","","","mv_Par06","" ,"","","","" ,"","","" ,"","","" ,"","","","","","","","")
PutSx1(cPerg, "07","Loja até:" ,"","","mv_ch07","C",02,00,00,"G","" ,"" ,"","","mv_Par07","" ,"","","","" ,"","","" ,"","","" ,"","","","","","","","")
PutSx1(cPerg, "08","Vendedor de:" ,"","","mv_ch08","C",06,00,00,"G","" ,"SA1","","","mv_Par08","" ,"","","","" ,"","","" ,"","","" ,"","","","","","","","")
PutSx1(cPerg, "09","Vendedor até: " ,"","","mv_ch09","C",06,00,00,"G","" ,"SA1","","","mv_Par09","" ,"","","","" ,"","","" ,"","","" ,"","","","","","","","")
PutSx1(cPerg, "10","Gerente de: " ,"","","mv_ch10","C",06,00,00,"G","" ,"SA3","","","mv_Par10","" ,"","","","" ,"","","" ,"","","" ,"","","","","","","","")
PutSx1(cPerg, "11","Gerente até:" ,"","","mv_ch11","C",06,00,00,"G","" ,"SA3","","","mv_Par11","" ,"","","","" ,"","","" ,"","","" ,"","","","","","","","")
PutSx1(cPerg, "12","Situação:" ,"","","mv_ch12","C",40,00,00,"C","NaoVazio()","" ,"","","mv_Par12","Todos" ,"","","","Vendas" ,"","","Doação","","","Comodato" ,"","","","","","","","")
PutSx1(cPerg, "13","Imprimir:" ,"","","mv_ch13","C",40,00,00,"C","NaoVazio()","" ,"","","mv_Par13","PDF" ,"","","","Excel" ,"","","PDF e Excel","","","Spool" ,"","","","","","","","")
PutSx1(cPerg, "14","Exibir:" ,"","","mv_ch14","C",40,00,00,"C","NaoVazio()","" ,"","","mv_Par14","Equipamento" ,"","","","Equip+Sistema" ,"","","","","","" ,"","","","","","","","")
// Explicação PutSx1 : tdn.totvs.com/pages/releaseview.action;j...62D27?pageId=6815029
Return
EXEMPLO DA FUNÇÂO PAARAMBOX:
você pode criar parâmetros na SX1, ou usar a função ParamBox()
ambos vão criar uma tela para perguntas ao usuário onde a partir dai vc programa para filtrar da melhor maneira para você.
EXEMPLO PARAMETROS DA SX1
Cuidado: Spoiler!
[Clique para expandir]
[Clique para ocultar]
User function INICIO()
CriaSX1(cPerg)
pergunte(cPerg,.F.)
// Retorna parametros nas variaveis mv_par01,mv_par02,mv_par03,[...]
return
Static Function CriaSX1(cPerg)
PutSx1(cPerg, "01","Analise por:" ,"","","mv_ch01","C",40,00,00,"C","NaoVazio()","" ,"","","mv_Par01","MEdia Periodo" ,"","","","Media desde inicio" ,"","","Total Cliente","","","","","","","","","","","")
PutSx1(cPerg, "02","Data inicial:" ,"","","mv_ch02","D",08,00,00,"G","" ,"" ,"","" ,"mv_Par02","" ,"","","","" ,"","","" ,"","","" ,"","","","","","","","")
PutSx1(cPerg, "03","Data final:" ,"","","mv_ch03","D",08,00,00,"G","NaoVazio()","" ,"","","mv_Par03","" ,"","","","" ,"","","" ,"","","" ,"","","","","","","","")
PutSx1(cPerg, "04","Cliente de:" ,"","","mv_ch04","C",06,00,00,"G","" ,"SA1","","","mv_Par04","" ,"","","","" ,"","","" ,"","","" ,"","","","","","","","")
PutSx1(cPerg, "05","Loja de:" ,"","","mv_ch05","C",02,00,00,"G","" ,"" ,"","","mv_Par05","" ,"","","","" ,"","","" ,"","","" ,"","","","","","","","")
PutSx1(cPerg, "06","Cliente até:" ,"","","mv_ch06","C",06,00,00,"G","" ,"SA1","","","mv_Par06","" ,"","","","" ,"","","" ,"","","" ,"","","","","","","","")
PutSx1(cPerg, "07","Loja até:" ,"","","mv_ch07","C",02,00,00,"G","" ,"" ,"","","mv_Par07","" ,"","","","" ,"","","" ,"","","" ,"","","","","","","","")
PutSx1(cPerg, "08","Vendedor de:" ,"","","mv_ch08","C",06,00,00,"G","" ,"SA1","","","mv_Par08","" ,"","","","" ,"","","" ,"","","" ,"","","","","","","","")
PutSx1(cPerg, "09","Vendedor até: " ,"","","mv_ch09","C",06,00,00,"G","" ,"SA1","","","mv_Par09","" ,"","","","" ,"","","" ,"","","" ,"","","","","","","","")
PutSx1(cPerg, "10","Gerente de: " ,"","","mv_ch10","C",06,00,00,"G","" ,"SA3","","","mv_Par10","" ,"","","","" ,"","","" ,"","","" ,"","","","","","","","")
PutSx1(cPerg, "11","Gerente até:" ,"","","mv_ch11","C",06,00,00,"G","" ,"SA3","","","mv_Par11","" ,"","","","" ,"","","" ,"","","" ,"","","","","","","","")
PutSx1(cPerg, "12","Situação:" ,"","","mv_ch12","C",40,00,00,"C","NaoVazio()","" ,"","","mv_Par12","Todos" ,"","","","Vendas" ,"","","Doação","","","Comodato" ,"","","","","","","","")
PutSx1(cPerg, "13","Imprimir:" ,"","","mv_ch13","C",40,00,00,"C","NaoVazio()","" ,"","","mv_Par13","PDF" ,"","","","Excel" ,"","","PDF e Excel","","","Spool" ,"","","","","","","","")
PutSx1(cPerg, "14","Exibir:" ,"","","mv_ch14","C",40,00,00,"C","NaoVazio()","" ,"","","mv_Par14","Equipamento" ,"","","","Equip+Sistema" ,"","","","","","" ,"","","","","","","","")
// Explicação PutSx1 : tdn.totvs.com/pages/releaseview.action;j...62D27?pageId=6815029
Return
EXEMPLO DA FUNÇÂO PAARAMBOX:
Cuidado: Spoiler!
[Clique para expandir]
[Clique para ocultar]
// Função exemplo utilizando a função ParamBox()
//
User Function xParamBox()
Local aRet := {}
Local aParamBox := {}
Local aCombo := {"Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"}
Local i := 0
Private cCadastro := "xParambox"
//
// Abaixo está a montagem do vetor que será passado para a função
//
aAdd(aParamBox,{1,"Produto",Space(6),"","","","",0,.F.}) // Tipo caractere
aAdd(aParamBox,{1,"Valor",0,"@E 9,999.99","mv_par02>0","","",20,.F.}) // Tipo numérico
aAdd(aParamBox,{1,"Data" ,Ctod(Space(),"","","","",50,.F.}) // Tipo data
// Tipo 1 -> MsGet()
// [2]-Descricao
// [3]-String contendo o inicializador do campo
// [4]-String contendo a Picture do campo
// [5]-String contendo a validacao
// [6]-Consulta F3
// [7]-String contendo a validacao When
// [8]-Tamanho do MsGet
// [9]-Flag .T./.F. Parametro Obrigatorio ?
aAdd(aParamBox,{2,"Informe o mês",1,aCombo,50,"",.F.})
// Tipo 2 -> Combo
// [2]-Descricao
// [3]-Numerico contendo a opcao inicial do combo
// [4]-Array contendo as opcoes do Combo
// [5]-Tamanho do Combo
// [6]-Validacao
// [7]-Flag .T./.F. Parametro Obrigatorio ?
// Cuidado, há um problema nesta opção quando selecionado a 1ª opção.
aAdd(aParamBox,{3,"Mostra deletados",1,{"Sim","Não"},50,"",.F.})
// Tipo 3 -> Radio
// [2]-Descricao
// [3]-Numerico contendo a opcao inicial do Radio
// [4]-Array contendo as opcoes do Radio
// [5]-Tamanho do Radio
// [6]-Validacao
// [7]-Flag .T./.F. Parametro Obrigatorio ?
aAdd(aParamBox,{4,"Marca todos ?",.F.,"Marque todos se necessário for.",90,"",.F.})
// Tipo 4 -> Say + CheckBox
// [2]-Descricao
// [3]-Indicador Logico contendo o inicial do Check
// [4]-Texto do CheckBox
// [5]-Tamanho do Radio
// [6]-Validacao
// [7]-Flag .T./.F. Parametro Obrigatorio ?
aAdd(aParamBox,{5,"Marca todos ?",.F.,50,"",.F.})
// Tipo 5 -> Somente CheckBox
// [2]-Descricao
// [3]-Indicador Logico contendo o inicial do Check
// [4]-Tamanho do Radio
// [5]-Validacao
// [6]-Flag .T./.F. Parametro Obrigatorio ?
aAdd(aParamBox,{6,"Buscar arquivo",Space(50),"","","",50,.F.,"Todos os arquivos (*.*) |*.*"})
// Tipo 6 -> File
// [2]-Descricao
// [3]-String contendo o inicializador do campo
// [4]-String contendo a Picture do campo
// [5]-String contendo a validacao
// [6]-String contendo a validacao When
// [7]-Tamanho do MsGet
// [8]-Flag .T./.F. Parametro Obrigatorio ?
// [9]-Texto contendo os tipos de arquivo, exemplo: "Arquivos .CSV |*.CSV"
// [10]-Diretorio inicial do cGetFile
// [11]-Número relativo a visualização, podendo ser por diretório ou por arquivo (0,1,2,4,8,16,32,64,128)
aAdd(aParamBox,{7,"Monte o filtro","SX5","X5_FILIAL==xFilial('SX5')"})
// Tipo 7 -> Montagem de expressao de filtro
// [2]-Descricao
// [3]-Alias da tabela
// [4]-Filtro inicial
aAdd(aParamBox,{8,"Digite a senha",Space(15),"","","","",80,.F.})
// Tipo 8 -> MsGet Password
// [2]-Descricao
// [3]-String contendo o inicializador do campo
// [4]-String contendo a Picture do campo
// [5]-String contendo a validacao
// [6]-Consulta F3
// [7]-String contendo a validacao When
// [8]-Tamanho do MsGet
// [9]-Flag .T./.F. Parametro Obrigatorio ?
aAdd(aParamBox,{9,"Texto aleatório, apenas demonstrativo.",150,7,.T.})
// Tipo 9 -> Somente uma mensagem, formato de um título
// [2]-Texto descritivo
// [3]-Largura do texto
// [4]-Altura do texto
// [5]-Valor lógico sendo: .T. => fonte tipo VERDANA e .F. => fonte tipo ARIAL
aAdd(aParamBox,{10,"Cliente",Space(6),"SA1",40,"C",6,".T."})
// Tipo 10 -> Range de busca
// [2] = Título
// [3] = Inicializador padrão
// [4] = Consulta F3
// [5] = Tamanho do GET
// [6] = Tipo do dado, somente (C=caractere e D=data)
// [7] = Tamanho do espaço
// [8] = Condição When
aAdd(aParamBox,{11,"Informe o motivo","",".T.",".T.",.T.})
// Tipo 11 -> MultiGet (Memo)
// [2] = Descrição
// [3] = Inicializador padrão
// [4] = Validação
// [5] = When
// [6] = Campo com preenchimento obrigatório .T.=Sim .F.=Não (incluir a validação na função ParamOk)
// Parametros da função Parambox()
//
// 1 - < aParametros > - Vetor com as configurações
// 2 - < cTitle > - Título da janela
// 3 - < aRet > - Vetor passador por referencia que contém o retorno dos parâmetros
// 4 - < bOk > - Code block para validar o botão Ok
// 5 - < aButtons > - Vetor com mais botões além dos botões de Ok e Cancel
// 6 - < lCentered > - Centralizar a janela
// 7 - < nPosX > - Se não centralizar janela coordenada X para início
// 8 - < nPosY > - Se não centralizar janela coordenada Y para início
// 9 - < oDlgWizard > - Utiliza o objeto da janela ativa
//10 - < cLoad > - Nome do perfil se caso for carregar
//11 - < lCanSave > - Salvar os dados informados nos parâmetros por perfil
//12 - < lUserSave > - Configuração por usuário
// Caso alguns parâmetros para a função não seja passada será considerado DEFAULT as seguintes abaixo:
// DEFAULT bOk := {|| (.T.)}
// DEFAULT aButtons := {}
// DEFAULT lCentered := .T.
// DEFAULT nPosX := 0
// DEFAULT nPosY := 0
// DEFAULT cLoad := ProcName(1)
// DEFAULT lCanSave := .T.
// DEFAULT lUserSave := .F.
If ParamBox(aParamBox,"Teste Parâmetros...",@aRet)
For i:=1 To Len(aRet)
MsgInfo(aRet,"Opção escolhida")
Next
Endif
Return
//
User Function xParamBox()
Local aRet := {}
Local aParamBox := {}
Local aCombo := {"Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"}
Local i := 0
Private cCadastro := "xParambox"
//
// Abaixo está a montagem do vetor que será passado para a função
//
aAdd(aParamBox,{1,"Produto",Space(6),"","","","",0,.F.}) // Tipo caractere
aAdd(aParamBox,{1,"Valor",0,"@E 9,999.99","mv_par02>0","","",20,.F.}) // Tipo numérico
aAdd(aParamBox,{1,"Data" ,Ctod(Space(),"","","","",50,.F.}) // Tipo data
// Tipo 1 -> MsGet()
// [2]-Descricao
// [3]-String contendo o inicializador do campo
// [4]-String contendo a Picture do campo
// [5]-String contendo a validacao
// [6]-Consulta F3
// [7]-String contendo a validacao When
// [8]-Tamanho do MsGet
// [9]-Flag .T./.F. Parametro Obrigatorio ?
aAdd(aParamBox,{2,"Informe o mês",1,aCombo,50,"",.F.})
// Tipo 2 -> Combo
// [2]-Descricao
// [3]-Numerico contendo a opcao inicial do combo
// [4]-Array contendo as opcoes do Combo
// [5]-Tamanho do Combo
// [6]-Validacao
// [7]-Flag .T./.F. Parametro Obrigatorio ?
// Cuidado, há um problema nesta opção quando selecionado a 1ª opção.
aAdd(aParamBox,{3,"Mostra deletados",1,{"Sim","Não"},50,"",.F.})
// Tipo 3 -> Radio
// [2]-Descricao
// [3]-Numerico contendo a opcao inicial do Radio
// [4]-Array contendo as opcoes do Radio
// [5]-Tamanho do Radio
// [6]-Validacao
// [7]-Flag .T./.F. Parametro Obrigatorio ?
aAdd(aParamBox,{4,"Marca todos ?",.F.,"Marque todos se necessário for.",90,"",.F.})
// Tipo 4 -> Say + CheckBox
// [2]-Descricao
// [3]-Indicador Logico contendo o inicial do Check
// [4]-Texto do CheckBox
// [5]-Tamanho do Radio
// [6]-Validacao
// [7]-Flag .T./.F. Parametro Obrigatorio ?
aAdd(aParamBox,{5,"Marca todos ?",.F.,50,"",.F.})
// Tipo 5 -> Somente CheckBox
// [2]-Descricao
// [3]-Indicador Logico contendo o inicial do Check
// [4]-Tamanho do Radio
// [5]-Validacao
// [6]-Flag .T./.F. Parametro Obrigatorio ?
aAdd(aParamBox,{6,"Buscar arquivo",Space(50),"","","",50,.F.,"Todos os arquivos (*.*) |*.*"})
// Tipo 6 -> File
// [2]-Descricao
// [3]-String contendo o inicializador do campo
// [4]-String contendo a Picture do campo
// [5]-String contendo a validacao
// [6]-String contendo a validacao When
// [7]-Tamanho do MsGet
// [8]-Flag .T./.F. Parametro Obrigatorio ?
// [9]-Texto contendo os tipos de arquivo, exemplo: "Arquivos .CSV |*.CSV"
// [10]-Diretorio inicial do cGetFile
// [11]-Número relativo a visualização, podendo ser por diretório ou por arquivo (0,1,2,4,8,16,32,64,128)
aAdd(aParamBox,{7,"Monte o filtro","SX5","X5_FILIAL==xFilial('SX5')"})
// Tipo 7 -> Montagem de expressao de filtro
// [2]-Descricao
// [3]-Alias da tabela
// [4]-Filtro inicial
aAdd(aParamBox,{8,"Digite a senha",Space(15),"","","","",80,.F.})
// Tipo 8 -> MsGet Password
// [2]-Descricao
// [3]-String contendo o inicializador do campo
// [4]-String contendo a Picture do campo
// [5]-String contendo a validacao
// [6]-Consulta F3
// [7]-String contendo a validacao When
// [8]-Tamanho do MsGet
// [9]-Flag .T./.F. Parametro Obrigatorio ?
aAdd(aParamBox,{9,"Texto aleatório, apenas demonstrativo.",150,7,.T.})
// Tipo 9 -> Somente uma mensagem, formato de um título
// [2]-Texto descritivo
// [3]-Largura do texto
// [4]-Altura do texto
// [5]-Valor lógico sendo: .T. => fonte tipo VERDANA e .F. => fonte tipo ARIAL
aAdd(aParamBox,{10,"Cliente",Space(6),"SA1",40,"C",6,".T."})
// Tipo 10 -> Range de busca
// [2] = Título
// [3] = Inicializador padrão
// [4] = Consulta F3
// [5] = Tamanho do GET
// [6] = Tipo do dado, somente (C=caractere e D=data)
// [7] = Tamanho do espaço
// [8] = Condição When
aAdd(aParamBox,{11,"Informe o motivo","",".T.",".T.",.T.})
// Tipo 11 -> MultiGet (Memo)
// [2] = Descrição
// [3] = Inicializador padrão
// [4] = Validação
// [5] = When
// [6] = Campo com preenchimento obrigatório .T.=Sim .F.=Não (incluir a validação na função ParamOk)
// Parametros da função Parambox()
//
// 1 - < aParametros > - Vetor com as configurações
// 2 - < cTitle > - Título da janela
// 3 - < aRet > - Vetor passador por referencia que contém o retorno dos parâmetros
// 4 - < bOk > - Code block para validar o botão Ok
// 5 - < aButtons > - Vetor com mais botões além dos botões de Ok e Cancel
// 6 - < lCentered > - Centralizar a janela
// 7 - < nPosX > - Se não centralizar janela coordenada X para início
// 8 - < nPosY > - Se não centralizar janela coordenada Y para início
// 9 - < oDlgWizard > - Utiliza o objeto da janela ativa
//10 - < cLoad > - Nome do perfil se caso for carregar
//11 - < lCanSave > - Salvar os dados informados nos parâmetros por perfil
//12 - < lUserSave > - Configuração por usuário
// Caso alguns parâmetros para a função não seja passada será considerado DEFAULT as seguintes abaixo:
// DEFAULT bOk := {|| (.T.)}
// DEFAULT aButtons := {}
// DEFAULT lCentered := .T.
// DEFAULT nPosX := 0
// DEFAULT nPosY := 0
// DEFAULT cLoad := ProcName(1)
// DEFAULT lCanSave := .T.
// DEFAULT lUserSave := .F.
If ParamBox(aParamBox,"Teste Parâmetros...",@aRet)
For i:=1 To Len(aRet)
MsgInfo(aRet,"Opção escolhida")
Next
Endif
Return
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Validação de de Pergunta
Tempo para a criação da página:0.125 segundos