1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

PHP acessando banco progress 4GL

Discussão em 'Progress 4GL' iniciado por af.dums, Março 7, 2017.

  1. Agnaldo

    Agnaldo Membro Ativo

    Caso tenha o WebSpeed aí, podes testar algo como o código abaixo.
    Ele esta usando para teste a tabela Customer do banco Sports.
    Vai gerar um JSON como saida.
    Voce pode rodar ele diretamente no browser, e ver o JSON na tela.
    Consequentemente, pode chamar esse "serviço" da tua aplicação .NET/Java/PHP/etc, apenas apontando para a URL.
    Código:
    DEFINE VARIABLE situacao AS LOGICAL.
    DEFINE VARIABLE saidaDTS AS MEMPTR.
    
    DEFINE TEMP-TABLE ttClientes FIELD codigo  AS CHARACTER
                                 FIELD nome    AS CHARACTER.
    
    DEFINE DATASET dts FOR ttClientes.  
    
    
    { src/web/method/wrap-cgi.i }
    
    output-content-type("text/html"). 
    
    FOR EACH Customer NO-LOCK:
        CREATE ttClientes.
        ASSIGN ttClientes.codigo = STRING(Customer.Cust-num)
               ttClientes.nome   = Custoner.Name.
    END.
    
    ASSIGN situacao = DATASET dts:WRITE-JSON("memptr",saidaDTS,YES,"UTF-8"). 
    EXPORT saidaDTS.
    
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    E dá pra receber parâmetros pra mudar a consulta, tipo QueryString ou em modo POST?
  3. Agnaldo

    Agnaldo Membro Ativo

    Faz GET-VALUE igual voce, talvez, já use normalmente, passando o parametro pela URL (query string) ou post.


    Código:
    DEFINE VARIABLE situacao AS LOGICAL.
    DEFINE VARIABLE saidaDTS AS MEMPTR.
    
    DEFINE VARIABLE codigoInicial AS INTEGER.
    DEFINE VARIABLE codigoFinal   AS INTEGER.
    
    DEFINE TEMP-TABLE ttClientes FIELD codigo  AS CHARACTER
                                 FIELD nome    AS CHARACTER.
    
    DEFINE DATASET dts FOR ttClientes.  
    
    
    { src/web/method/wrap-cgi.i }
    
    output-content-type("text/html"). 
    
    ASSIGN codigoInicial = INTEGER(GET-VALUE("codIni"))
           codigoFinal   = INTEGER(GET-VALUE("codFim")).
    
    
    FOR EACH Customer WHERE Customer.Cust-num >= codigoInicial AND Customer.Cust-num <= codigoFinal NO-LOCK:
        CREATE ttClientes.
        ASSIGN ttClientes.codigo = STRING(Customer.Cust-num)
               ttClientes.nome   = Custoner.Name.
    END.
    
    ASSIGN situacao = DATASET dts:WRITE-JSON("memptr",saidaDTS,YES,"UTF-8"). 
    EXPORT saidaDTS.
    
  4. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Legal, vou fazer esse teste, vlw @Agnaldo
  5. daniel.steiner

    daniel.steiner Sem Pontuação

    Obrigado pelas informações pessoal.
    Estou tentando fazer o exemplo do @Agnaldo, startei o webspeed e estou tentando buscar as informações via jquery, não consegui buscar as informações. Se alguém conseguir fazer um html buscar os dados por jquery e puder compartilhar, agradeço.
  6. Agnaldo

    Agnaldo Membro Ativo

    Precisa alterar os locais onde esta escrito "teu" alguma coisa.
    E estou assumindo que voce sabe como consumir JSON com o JQuery.

    Código:
    $.ajax(
       {
          type: "POST",
          url: 'http://teuServidor/cgi-bin/WService=teuServiço/teuPrograma.p',
          data: $('#teuFormComDadosDoPost').serialize(),  
          dataType: 'html',
          error: function(erro)
                   {
                      alert("Erro no acesso ao servidor de dados");
                   },
          success: function(sucesso)
                      {
                         //console.log(sucesso);
                         if (sucesso.indexOf("{")==-1)
                               alert(sucesso); // apenas mensagem dadas com {&out} LÁ no Progress
                            else
                               {
                                  //var retorno = JSON.parse(sucesso).dts;
                                  var dados = JSON.parse(sucesso).dts.ttRetorno; // dts.ttRetorno é o nome que vem LÁ do dataset Progress
                                  // nesse ponto a variuavel dados tem o JSON já deserializado
                               }
                      }
       }); // $.ajax
    
    

Compartilhe esta Página