× Linguagem de Programação ADVPL

Perguntas Tela de consulta

Mais
11 anos 2 meses atrás #16754 por ariclenesmcosta
Alguém poderia disponibilizar um fonte de exemplo de uma tela onde o usuário digita algo em um campo(Ex: Código do produto), clica em um botão(Ex: Pesquisar) e após clicar em pesquisar o grid é populado conforme digitação do usuário.

Desde já agradeço a vc´s pela ajuda

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 2 meses atrás #16953 por rodrigolparaujo
Respondido por rodrigolparaujo no tópico Tela de consulta
Olá, segue um exemplo funcional
#include "protheus.ch"
user function fGrid()
  /*declare as variaveis antes*/

   DEFINE MSDIALOG oDlg TITLE "Impressão de Etiquetas"  FROM 000,000 To 480,nMargDir-10 PIXEL STYLE DS_MODALFRAME
	
   cSerie := "001"
   dInicio:= dDatabase-1
   dFinal := dDatabase                                                
	
    @ 000, 000 GROUP oFiltro TO 026, 250 PROMPT "Filtro" OF oDlg COLOR 0, 16777215 PIXEL
    @ 008, 005 SAY oSay3 PROMPT "Data De:" SIZE 025, 007 OF oFiltro COLORS 16711680, 16777215 PIXEL
    @ 006, 024 MSGET oDataDe VAR dInicio SIZE 046, 010 OF oFiltro COLORS 0, 16777215 VALID !Empty(dInicio) PIXEL
    @ 008, 074 SAY oSay4 PROMPT "Data Ate:" SIZE 025, 007 OF oFiltro COLORS 16711680, 16777215 PIXEL
    @ 006, 098 MSGET oDataAte VAR dFinal SIZE 046, 010 OF oFiltro COLORS 0, 16777215 VALID !Empty(dFinal) PIXEL
    
    @ 008, 146 SAY oSay1 PROMPT "Informe a(s) Nota(s) Fiscal(is):" SIZE 073, 007 OF oFiltro COLORS 0, 16777215 PIXEL
    @ 006, 218 MSGET oNF VAR cNF SIZE 105, 010 OF oFiltro F3 "SF2" PIXEL
    
    @ 008, 325 SAY oSay2 PROMPT "Série:" SIZE 025, 007 OF oFiltro COLORS 16711680, 16777215 PIXEL
    @ 006, 350 MSGET oSerie VAR cSerie SIZE 020, 010 OF oFiltro VALID !Empty(cSerie) PIXEL

    @ 018, 146 SAY oSay2 PROMPT "Separe uma nota fiscal da outra com virgula" SIZE 127, 007 OF oFiltro COLORS 255, 16777215 PIXEL

    @ 006, 386 BUTTON oPesquisar PROMPT "Pesquisar" SIZE 037, 010 OF oFiltro Action Processa({|| fAgrupa(cNF,cSerie,dInicio,dFinal) },"Processando...") PIXEL

    @ 009, 427 CHECKBOX oCheckBo1 VAR lCheckBo1 PROMPT "Mostrar notas impressas" SIZE 077, 008 OF oFiltro COLORS 0, 16777215 PIXEL

	oList := TCBrowse():New(015,005,440,220,,,,oDlg,,,,,,,,,,,,.F.,,.T.,,.F.,,,)		
	oList:AddColumn(TCColumn():New(" "       			, {|| If(aItens[oList:nAt,01],oOk,oNo) },,,,,,.T.,.F.,,,,.F., ) )
	oList:AddColumn(TCColumn():New("Nota Fiscal"		, {|| aItens[oList:nAt,02]},"@!",,,"CENTER", 030,.F.,.F.,,{|| .F. },,.F., ) )
	oList:AddColumn(TCColumn():New("Série"				, {|| aItens[oList:nAt,03]},"@!",,,"CENTER", 040,.F.,.F.,,,,.F., ) )
	oList:AddColumn(TCColumn():New("Pedido"				, {|| aItens[oList:nAt,04]},"@!",,,"CENTER", 030,.F.,.F.,,,,.F., ) )
	oList:AddColumn(TCColumn():New("Volume"   			, {|| aItens[oList:nAt,05]},"@!",,,"CENTER", 030,.F.,.F.,,,,.F., ) )
	oList:AddColumn(TCColumn():New("Emissão"	    	, {|| aItens[oList:nAt,06]},"@D",,,"CENTER", 030,.F.,.F.,,,,.F., ) )
	oList:AddColumn(TCColumn():New("Código"				, {|| aItens[oList:nAt,07]},"@!",,,"CENTER", 040,.F.,.F.,,,,.F., ) )
	oList:AddColumn(TCColumn():New("Loja"				, {|| aItens[oList:nAt,08]},"@!",,,"CENTER", 020,.F.,.F.,,,,.F., ) )
	oList:AddColumn(TCColumn():New("Cliente/Fornecedor"	, {|| aItens[oList:nAt,09]},"@!",,,"LEFT"  , 143,.F.,.F.,,,,.F., ) )
	oList:AddColumn(TCColumn():New("UF"					, {|| aItens[oList:nAt,10]},"@!",,,"CENTER", 020,.F.,.F.,,,,.F., ) )
	oList:AddColumn(TCColumn():New("Cidade"				, {|| aItens[oList:nAt,11]},"@!",,,"LEFT"  , 140,.F.,.F.,,,,.F., ) )
	oList:AddColumn(TCColumn():New("Código"				, {|| aItens[oList:nAt,12]},"@!",,,"CENTER", 030,.F.,.F.,,,,.F., ) )
	oList:AddColumn(TCColumn():New("Transportadora"		, {|| aItens[oList:nAt,13]},"@!",,,"LEFT"  , 140,.F.,.F.,,,,.F., ) )
	oList:AddColumn(TCColumn():New("Nota Mãe"			, {|| aItens[oList:nAt,14]},"@!",,,"LEFT"  , 40 ,.F.,.F.,,{|| },,.F., ) )
	oList:AddColumn(TCColumn():New("Tipo"				, {|| aItens[oList:nAt,15]},"@!",,,"LEFT"  , 30 ,.F.,.F.,,,,.F., ) )
	oList:AddColumn(TCColumn():New("X"					, {|| aItens[oList:nAt,16]},"@!",,,"LEFT"  , 1 ,.F.,.F.,,,,.F., ) )
		
	oList:SetArray(aItens)
	oList:bWhen        := { || Len(aItens) > 0 }
	oList:bLDblClick   := { || aItens[oList:nAt,01] := !aItens[oList:nAt,01],iif(aItens[oList:nAt,01]=.F.,aItens[oList:nAt,14]:=" ",fValida())}
	oList:bHeaderClick := { || fSelectAll(oList,aItens,1) }
	oList:bRClicked    := { || fEdita(@aItens, oList, "@!", 14)} 
	
  
    oFiltro:Align := CONTROL_ALIGN_TOP
    oList:Align := CONTROL_ALIGN_ALLCLIENT 
    oList:SetFocus()    

    aAdd(aBotoes, {"SUMARIO"    , {||u_FATR001C()}, "Imprimir Etiqueta Caixa"  , "Imp.Etiq"})
    aAdd(aBotoes, {"PARAMETROS" , {||u_FATR001T()}, "Imprimir Etiqueta Tecnico", "Imp.Tec."})	    
    aAdd(aBotoes, {"UPDWARNING" , {||u_FATR001A()}, "Dicas", "Dicas"})	    

    EnchoiceBar(oDlg, {||oDlg:End()}, {||oDlg:End()},,aBotoes)
	 
    ACTIVATE MSDIALOG oDlg CENTERED    

return

Static Function fAgrupa(cNF,cSerie,dInicio,dFinal)
	Local cTmp   := GetNextAlias()                  
	Local cWhere := IIF(Empty(cNF),"% SERIE = '"+cSerie+"' %","% SERIE = '"+cSerie+"' AND DOC IN "+ FORMATIN(alltrim(cNF),",") +" %")
	Local cOnde  := iif(lCheckBo1 ,"% F2_ZZIMPET = 'S' %","% F2_ZZIMPET = ' ' %")
		
	IF SELECT(cTmp) # 0
		(cTmp)->(dbCloseArea())
	ENDIF
	BeginSql Alias cTmp
		 SELECT DISTINCT FILIAL,DOC,SERIE,EMISSAO,CLIENTE,LOJA,NOME,ESTADO,CIDADE,CODTRANS,TRANSPOR,VOLUME,PEDIDO,TIPO FROM 
		 ( 
		 SELECT  F2_FILIAL  FILIAL, 
		  F2_DOC   DOC, 
		  F2_SERIE  SERIE, 
		  F2_EMISSAO  EMISSAO, 
		  F2_CLIENTE  CLIENTE, 
		  F2_LOJA  LOJA, 
		  F2_TIPO TIPO,
		  CASE WHEN F2_TIPO IN ('B','D') THEN A2_NOME ELSE A1_NOME END NOME, 
		  CASE WHEN F2_TIPO IN ('B','D') THEN A2_EST  ELSE A1_EST  END ESTADO, 
		  CASE WHEN F2_TIPO IN ('B','D') THEN A2_MUN  ELSE A1_MUN  END CIDADE, 
		 
		  F2_TRANSP  CODTRANS, 
		  ISNULL(A4_NOME,SPACE(30)) TRANSPOR, 
		  F2_VOLUME1  VOLUME,
 		  D2_PEDIDO PEDIDO
 		  
		 FROM %Table:SF2% SF2 
		 LEFT OUTER JOIN %Table:SA4% SA4  
		 ON  SA4.D_E_L_E_T_ = ' '  
		 AND SA4.A4_FILIAL  = %xFilial:SA4% 
		 AND SA4.A4_COD     = SF2.F2_TRANSP 
		 
		 LEFT OUTER JOIN %Table:SA1% SA1 
		 ON  SA1.D_E_L_E_T_ = ' '  
		 AND SA1.A1_FILIAL  = %xFilial:SA1% 
		 AND SA1.A1_COD     = SF2.F2_CLIENTE  
		 AND SA1.A1_LOJA    = SF2.F2_LOJA 
		 
		 LEFT OUTER JOIN %Table:SA2% SA2  
		 ON SA2.D_E_L_E_T_  = ' '  
		 AND SA2.A2_FILIAL  = %xFilial:SA2%
		 AND SA2.A2_COD     = SF2.F2_CLIENTE  
		 AND SA2.A2_LOJA    = SF2.F2_LOJA 
		 
		 LEFT OUTER JOIN %Table:SD2% SD2
		 ON  SD2.D_E_L_E_T_ = ' ' 
		 AND SD2.D2_FILIAL  = %xFilial:SD2% 
		 AND SD2.D2_DOC     = SF2.F2_DOC
		 AND SD2.D2_SERIE   = SF2.F2_SERIE
		 AND SD2.D2_CLIENTE = SF2.F2_CLIENTE 
		 AND SD2.D2_LOJA    = SF2.F2_LOJA

		 WHERE SF2.D_E_L_E_T_ = ' ' 
		   AND F2_FILIAL      = %xFilial:SF2%
		   AND %Exp:cOnde%
		 ) AS TAB 
		 
		 WHERE EMISSAO >= %Exp:dtos(dInicio)% AND EMISSAO <= %Exp:dtos(dFinal)% 
		 AND %Exp:cWhere%
		 ORDER BY FILIAL,DOC,SERIE,CLIENTE,CODTRANS,EMISSAO ASC,VOLUME DESC 
	EndSql
		
	dbSelectArea(cTmp)
	If (cTmp)->(Eof())
		ApMsgInfo("Não existem NF's para esta pesquisa.","Informação")		
		Return .F.
	EndIf	
	ProcRegua((cTmp)->(RecCount()))	
	aItens:={}
	lPrim := .T.
	cMae  := "N"
	While !Eof() 
		IncProc("Lendo "+(cTmp)->(DOC)) 
		If lPrim
			cMae := "S"
			lPrim:= .F.
		Else
			cMae := "N"
		Endif
		aadd(aItens,{.f.,;
		Alltrim((cTmp)->(DOC)),;
		Alltrim((cTmp)->(SERIE)),;
		Alltrim((cTmp)->(PEDIDO)),;
		Alltrim(STR((cTmp)->(VOLUME))),;
		dtoc(stod((cTmp)->(EMISSAO))),;
		Alltrim((cTmp)->(CLIENTE)),;
		Alltrim((cTmp)->(LOJA)),;
		Alltrim((cTmp)->(NOME)),;
		Alltrim((cTmp)->(ESTADO)),;
		Alltrim((cTmp)->(CIDADE)),;
		Alltrim((cTmp)->(CODTRANS)),;
		Alltrim((cTmp)->(TRANSPOR)),;
		SPACE(LEN(Alltrim((cTmp)->(DOC)))),;
		Alltrim((cTmp)->(TIPO)),;
		" "})
		dbSelectArea(cTmp)
		dbSkip()
	EndDo
	dbCloseArea()          
	
	oList:SetArray(aItens)
	oList:GoTop()
	oList:Refresh(.t.)	
Return      

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.106 segundos
Joomla templates by a4joomla