Jump to content
Fivewin Brasil

Edu

Membros
  • Posts

    126
  • Joined

  • Last visited

  • Days Won

    3

Posts posted by Edu

  1. Boa tarde galera!

    Estou executando um filtro no xBrowse com array usando  o metodo ArrayIncrFilter, porém não consigo limpar o filtro estabelecido quando a variável de pesquisa está vazia.

    Alguém teria uma dica para resolver ?

    Segue como estou fazendo:

    ***********************************************************

    * Get de pesquisa

      REDEFINE GET oGet2 VAR cSeek PICTURE "@!" ID 4002 OF oDlgPrd2 UPDATE ;
       VALID xBrFilter(oBr1, 3, cSeek, aProdAuto)        
     

         * listagem
        oBr1:= TXBROWSE():NEW()
        oBr1:CreateFromResource(4008)
        oBr1:SetArray(aProdAuto,.T.)

     

    ***********************************************************

    FUNCTION xBrFilter(oBrw, nCol, cSeek, aArray)
        * Filtro no xbrowse com array de forma nativa. Filtra qualquer coluna no browse
        * Parametros: objeto, n. da coluna, variavel de pesquisa
       
        oBrw:lSeekWild  := .T.
        DEFAULT nCol := 1
        
          IF !Empty(cSeek)

            oBrw:cFilterFld:= nCol // seleciona a coluna que será ativado o filtro
          
              oBrw:ArrayIncrFilter(RTRIM(cSeek))
      
          ELSE
              
              oBrw:aArrayData:= aArray    
              oBrw:SetArray(aArray,.T.)
              
          ENDIF
          
          oBrw:Refresh()
        oBrw:Update()

    RETURN .T.

  2. Bom dia!

    Gostei da API! E é de graça! :)

    Tá na mão:

    ********************************************

    Function GetDadosCNPJ()
        * retorna dados de um CNPJ
        * retorno no formato JSON
        * site que oferece o servico: https://www.receitaws.com.br
        
        Local oServerWS, cUrl, aArray, oCnpj:= SPACE(14)
        
        MsgGet("ReceitaWS", "Informe o CNPJ:", @oCnpj)
        
        cUrl:= "https://www.receitaws.com.br/v1/cnpj/"+Alltrim(oCnpj)

        Try
            oServerWS := CreateObject( 'MSXML2.ServerXMLHTTP.6.0' )  
        Catch e
            ? e:Description
            return nil
        End 
        
        oServerWS:open('GET', cUrl, .f.)
        oServerWS:setRequestHeader('Content-Type'    , 'text/xml; charset=utf-8')    // Obtém ou define o valor de cabeçalho de Content-type HTTP.

        oServerWS:send()    
        
        * Verifica o status do request. Exibe erro se houver
        IF oServerWS:Status != 200 // OK
           MsgStop( Alltrim(STR(oServerWS:Status)) +" - "+ oServerWS:StatusText , "Erro")
            RETURN NIL
        ENDIF
        
        WHILE oServerWS:readyState != 4
           oServerWS:waitForResponse(1000)
        END   
            
        * decodifica o arquivo json e transforma em um array multidimensional
       x :=  hb_jsondecode( oServerWS:responseText, @aArray )
        
        if aArray == nil
            MsgStop("Erro ao retornar os dados. Tente novamente.")
            return nil
        endif

        if aArray['status'] != 'OK' // exibe erros
            MsgStop(aArray['message'], 'Erro')
           return nil
        endif
        
        xbrowse(aArray) // mostra o resultado    
        
    return nil

     

     

     

  3. Bom dia amigos!

    Estou com problemas num relatório usando fastreport. A impressão exibe normal mas ao sair da exibição o sistema para de funcionar. Alguém saberia me explicar o que estou errando ou teria algum exemplo? 

    Obs.: Estou usando SqlRdd.

    Segue o código:

    FUNCTION Imprime_Caixa()

       local cQuery, cQuery2
        
       cQuery := "Select * from tb_caixa"
       cQuery2:= "Select * from tb_empresa"

       USE (cQuery)  ALIAS "CAIXA" SHARED NEW VIA "SQLRDD"
       USE (cQuery2) ALIAS "EMPRESA" SHARED NEW VIA "SQLRDD"

       oFrPrn:= frReportManager():New()

       oFrPrn:SetWorkArea("tb_empresa", Select("EMPRESA"))
       oFrPrn:SetWorkArea("tb_caixa", Select("CAIXA"))
       oFrPrn:LoadFromFile(".\caixa.fr3")

    *   oFrPrn:DesignReport()  // modo design
       oFrPrn:ShowReport()     
       oFrPrn:ClearDataSets()
       oFrPrn:DestroyFR()

       CAIXA->(DBCLOSEAREA())
       EMPRESA->(DBCLOSEAREA())

    RETURN NIL

    *********************************

  4. Bom dia!

    Evertonlb, acho que desse jeito não funciona porque ou você trabalha com DB ou array. Se você adicionar mais um elemento vai dar erro em tempo de execução pois o array interno do xbrowse : aCols, terá seu tamanho alterado.

    rubensma, a princípio eu não queria fazer isso não pois não sei se vai dar tempo, mas em último caso...

     

    Deixa eu tentar explicar:

    São 4 bitmaps. Por exemplo: A, B, C, D.

    Pode haver as situações A, A+B, A+C, A+D, B, B+C, B+D, C, C+D, D.

    TOTAL = 10.

    Em todo caso estou começando a considerar esta hipótese, pois tentei fazer com botões e ficou muito grande a qtde. de objs na tela e esteticamente ficou devendo um pouco. Estou dando preferência a xBrowse.

     

     

  5. Pois é galera.. Procurei na classe e não achei, perdi um bom tempo mas tudo bem. Kkkk

    Eu já havia pensado na ideia do sistem mas pra mim ficará mt trabalhoso, pois eu precisava colocar 4 ícones de status na mesma célula. Teria que fazer um ícone para cada combinação, já que pode haver 4, 3, 2 ou 1 status.

    Contudo, agradeço a atenção.

    Abraço.

  6. Boa tarde!

    Pra tabelas com grande quantidade de registros, você pode tentar aumentar o timeout para 6000 por exemplo.

    No WorkBench tem essa possibilidade. Caminho:  Edit → Preferences → SQL Editor → DBMS.

    Ou via Command Line:  mysql -u root -p -- net_read_timeout= 6000

  7. Bom dia pessoal.

    Estou tentando utitlizar a hbjson.h mas está dando vários erros de compilação

    _stddef.h(86) Error E0030  Syntax error: "syntax error at 'SIZE_T'"
    _stddef.h(91) Error E0030  Syntax error: "syntax error at 'INT'"
    _stddef.h(121) Error E0030  Syntax error: "syntax error at 'UNSIGNED'"
    _stddef.h(131) Error E0030  Syntax error: "syntax error at 'WCHAR_T'"

     

    Aguém pode me ajudar?

  8. Boa tarde amigo!

    Fiz assim:

     

    // GET de pesquisa

        REDEFINE GET opesquisa VAR var_pesquisa ID 40 OF oDlg UPDATE ;
                                                             ON CHANGE( ::Assign(), SetPosXbr(var_pesquisa,2,oLbx1) )

    ********************************************************************************
    FUNCTION SetPosXbr(Digitado, xPos, oLbx1)
        * Funcao de pesquisa sensitiva no xBrowse com Array
        LOCAL nPalavra:= UPPER(ALLTRIM(Digitado))
        
        nPos := ASCAN(aPrinProd ,{|X| IF(nPalavra $ Substr(X[xPos], 1, LEN(nPalavra)) , .T. , .F. )})           
         
        IF nPos > 0 
           oLbx1:nArrayAt:= nPos
        ENDIF

        oLbx1:UPDATE()
       oLbx1:REFRESH()

    RETURN .T.
     

×
×
  • Create New...