Clipper On Line • Ver Tópico - consumo webservice

consumo webservice

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

consumo webservice

Mensagempor ar sistemas » 05 Jun 2018 15:22

Boa tarde a todos, sei que este tópico já esta demasiadamente discutido neste fórum ( já li e tentei vários exemplos).
Porém já estou a mais de uma semana nisso sem sair do lugar.
Não estou conseguindo gerar uma consulta no webservices do portal www.abcfarma.org.br. Estou precisando muito de ajuda.
Segue código que estou tentando conexão.
LOCAL ccnpj_cpf    := '03332548000127'
LOCAL csenha       := 'aluisiovpn'
LOCAL ccnpj_sh    := '07693076000199'
LOCAL cpagina       := '1'

   // Abertura das funcoes para WebService do xHarbour
   http := CreateObject( "MSXML2.XMLHTTP" )
   
   http:Open( "POST", "https://webserviceabcfarma.org.br/webservice/", .F. )
   http:send( "cnpj_cpf=" + ccnpj_cpf + "&cnpj_sh=" + ccnpj_sh +  "&senha=" + csenha + "&pagina=" + cpagina )

   response  := http:responseText     // Recebe a resposta
msginfo(response)
return response



Segue o que diz o manual do webservice.

REQUEST
Execute um requisição ao nosso servidor HTTP, enviando os campos abaixo como POST tendo como nome o indicador abaixo, utilizaremos essas informações para autenticação e os mecanismos de segurança.
O endereço do serviço é : https://webserviceabcfarma.org.br/webservice/
Certifique-se de terminar a url com a barra!
cnpj_cpf
CNPJ do associado
senha
Senha do Associado no Portal ABCFARMA
cnpj_sh
CNPJ da Empresa de Software ¹
pagina
Número da página [default = 1]

O que está faltando?
É so isso mesmo que tenho que fazer?

Estou usando:
Biblioteca Grafica Minigui.. mysql ..
ar sistemas
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 10
Data de registro: 05 Jun 2018 00:11
Cidade/Estado: BELO HORIZONTE/MG
Curtiu: 0 vez
Mens.Curtidas: 0 vez

consumo webservice

Mensagempor Kapiaba » 07 Jun 2018 10:29

Veja se ajuda:

#include "FiveWin.ch"

FUNCTION ABCFARMA()
 
   LOCAL ccnpj_cpf    := '03332548000127'
   LOCAL csenha       := 'aluisiovpn'
   LOCAL ccnpj_sh    := '07693076000199'
   LOCAL cpagina       := '1'
   LOCAL http, response, cWinResp

   // Abertura das funcoes para WebService do xHarbour
   // http := CreateObject( "MSXML2.XMLHTTP" )

   #IFDEF __XHARBOUR__  // xHarbour

      Try

          Http := CreateObject( "MSXML2.ServerXMLHTTP.6.0" )

      Catch

         // MsgInfo('Erro na Criação do Serviço')
         MsgInfo('Erro na Criação do Serviço! no xHarbour', 'Atenção!')

         Return .f.

      End

   #ELSE

      Try

         Http := win_OleCreateObject( "MSXML2.ServerXMLHTTP.5.0")

      Catch

         MsgInfo('Erro na Criação do Serviço! no Harbour', 'Atenção!')

         exit

      End

   #ENDIF

   TRY
   
      http:Open( "POST", "https://webserviceabcfarma.org.br/webservice/", .F. )

      http:SetRequestHeader( "Content-Type","application/json")

      http:send( "cnpj_cpf=" + ccnpj_cpf + "&cnpj_sh=" + ccnpj_sh +  "&senha=" + csenha + "&pagina=" + cpagina )

      // response  := http:responseText     // Recebe a resposta
      // msginfo( response )

      cWinResp := http:ResponseBody

      msginfo( cWinResp )

   CATCH

      QUIT

   END

   Http := NIL

RETURN( response )
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

consumo webservice

Mensagempor ar sistemas » 09 Jun 2018 11:40

Olá Kapiaba, muito obrigado pelo retorno.
Não consegui compilar pois nao tenho na minha máquina o include fivewin.ch
Poderia disponibilizar, por favor?

Utilizo a minigui 3.4.3
ar sistemas
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 10
Data de registro: 05 Jun 2018 00:11
Cidade/Estado: BELO HORIZONTE/MG
Curtiu: 0 vez
Mens.Curtidas: 0 vez

consumo webservice

Mensagempor Jairo Maia » 09 Jun 2018 12:31

Os cnpj´s e a senha são reais para testes? existe como você acessar direto pelo site com esses dados, e se sim, estão corretos? É que a conexão está sendo feita, e retorna a mensagem: Parâmetros inválidos ou não encontrados.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

consumo webservice

Mensagempor JoséQuintas » 09 Jun 2018 18:45

ar sistemas escreveu:Não consegui compilar pois nao tenho na minha máquina o include fivewin.ch


Ué... comenta a linha.
Se der falta de alguma coisa, aí sim, verificar.
Mas dá pra ver que não faz falta.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18127
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

consumo webservice

Mensagempor JoséQuintas » 09 Jun 2018 18:50

Mesmo assim, não querendo ser chato, mas já sendo.... poderia pelo menos ter comparado os fontes.

Não sei porque, o fonte do kapiaba tem este trecho a mais:

 http:SetRequestHeader( "Content-Type","application/json")


"não sei porque" significa que realmente não sei.
Pode ou não precisar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18127
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

consumo webservice

Mensagempor Kapiaba » 11 Jun 2018 10:14

// #include "FiveWin.ch"

#include "oseuarquivo.ch" // da sua lib. no meu caso, se eu não colocar, não compila. Abs.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

consumo webservice

Mensagempor André Corrêa » 12 Jun 2018 08:42

ar sistemas,

Geralmente é possível testar um websevice informando a URL e os parâmetros diretamente no web browser, assim você já consegue
saber se os parâmetros podem ser fictícios, se o servidor está funcionando, etc.
Ao fazer isso, acessei a página inicial do webservice, com algumas informações importantes sobre a utilização.
URL: https://webserviceabcfarma.org.br/webservice/cnpj_cpf=12123123123412&cnpj_sh=12123123123412&senha=1234&pagina=1

Os passos básicos para se utilizar um webservice em qualquer linguagem, são:

1) Criar o servidor
http := CreateObject( "MSXML2.ServerXMLHTTP" )

2) Abrir o servidor
http:Open( "POST", "https://webserviceabcfarma.org.br/webservice/", .F. )

3) Adicionar o request header
http:SetRequestHeader( "Content-Type","application/json")

4) Enviar a requisição:
http:send( "cnpj_cpf=" + ccnpj_cpf + "&cnpj_sh=" + ccnpj_sh +  "&senha=" + csenha + "&pagina=" + cpagina )

5) Obter a resposta:
response  := http:responseText


Existe também uma ótima ferramenta para testes que já foi citada em algum post aqui no fórum, é a SOAPUI, dê uma olhada:
https://www.soapui.org/

Claro que existem pequenas variações, mas a partir daí, já dá pra ter uma ideia.

Abraço,
-- André Corrêa

"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
Avatar de usuário

André Corrêa
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 81
Data de registro: 03 Nov 2015 06:46
Cidade/Estado: Caraguatatuba/SP
Curtiu: 8 vezes
Mens.Curtidas: 3 vezes

consumo webservice

Mensagempor ar sistemas » 14 Jul 2018 21:30

:))
Olá pessoal....
Tópico encerrado.
Consegui fazer a conexao. Obrigado a todos pela ajuda..
Segue código finalizado, caso alguém necessite.

function ABCFarma( lPreview )
LOCAL strXml := []
local nHandle     
local cLinha

if internetok() = .f.
   load window seminternet // window modal
   seminternet.center
   seminternet.activate
   return
Endif   

if file(cCaminhoExe + '\' + 'abcfarma1.txt') = .f.
   if internetok() = .f.
      load window seminternet2 // windows standard
      seminternet2.center
      seminternet2.activate
      return
   Endif   

   delete item all from grid_1 of consultatabela

   _pagina     := "1"
   strXml += [cnpj_cpf=]+_cnpj_cpf
   strXml += [&senha=]+_senha
   strXml += [&cnpj_sh=]+_cnpj_sh
   strXml += [&pagina=]+_pagina

   oServer:= win_OleCreateObject( "MSXML2.ServerXMLHTTP")
   oServer:Open( "POST", cABCFARMA, .f. )
   oServer:SetRequestHeader( "Content-Type", "application/x-www-form-urlencoded" )
   oServer:SetRequestHeader( "Connection", "keep-alive" )
   oServer:Send(strXml)
   oServer:WaitForResponse( 10000 )

   cRetorno:= oServer:ResponseBody
   if lPreview
     MemoWrit('abcfarma1.txt', cRetorno )
   Else
      msginfo('Erro no Retorno do Portal ABCFARMA.')
   endif
Endif

*** agora inicio trabalho dentro do json abcfarma.txt
*** primeiro busco o numero de paginas do portal

cArquivo := cCaminhoExe + '\' + 'abcfarma1.txt'
nHandle  := fopen(cArquivo, 0)
cLinha := space(F_BLOCK)
*cLinha := F_BLOCK
while ( fread (nHandle, @cLinha, F_BLOCK) > 0 )
   *** pego qtde de paginas                     
   nInicio := at('total_paginas',cLinha)
   nPaginas := subst(cLinha,nInicio + 13,5)
   nNumeroPaginas := ''
   contador := 1
   do while contador <= len(nPaginas)
      if isdigit(subst(nPaginas,contador,1))
         nNumeroPaginas := nNumeroPaginas + subst(nPaginas,contador,1)
      Endif
      contador ++
   Enddo         
   nNumeroPaginas := val(nNumeroPaginas)
   consultatabela.label_8.value := str(nNumeroPaginas)
   consultatabela.label_7.value := '1'
   exit
enddo   
fclose(nHandle)
if nNumeroPaginas = 0
   msginfo('Erro na Apuração do Número de Páginas do Portal ABCFARMA.','ATENÇÃO')
   return
Endif   

** agora busco todas as paginas do webservice
contador := 2 // a primeira pagina ja foi importada anteriormente
do while contador <= nNumeroPaginas
   if file(cCaminhoExe + '\' + 'abcfarma' + alltrim(str(contador)) + '.txt') = .f.
*      cABCFARMA := "https://webserviceabcfarma.org.br/webservice/"
*      _cnpj_cpf := 'seu_cnpj'
*      _senha    := 'sua_senha'
*      _cnpj_sh  := 'Senha_sh'
*      _pagina   := alltrim(str(contador))
*         strXml += [cnpj_cpf=]+_cnpj_cpf
*           strXml += [&senha=]+_senha
*         strXml += [&cnpj_sh=]+_cnpj_sh
*         strXml += [&pagina=]+_pagina
   
      oServer:= win_OleCreateObject( "MSXML2.ServerXMLHTTP")
      oServer:Open( "POST", cABCFARMA, .f. )
      oServer:SetRequestHeader( "Content-Type", "application/x-www-form-urlencoded" )
      oServer:SetRequestHeader( "Connection", "keep-alive" )
      oServer:Send(strXml)
      oServer:WaitForResponse( 10000 )                     
           
      cRetorno:= oServer:ResponseBody
      if lPreview                
        cArquivoAbcfarma := 'abcfarma' + alltrim(str(contador)) + '.txt'
        MemoWrit(cArquivoAbcfarma, cRetorno )
      Else
         msginfo('Erro no Retorno do Portal ABCFARMA.')
      endif
      consultatabela.progressbar_1.value := contador
      do events
   endif
   consultatabela.label_7.value := str(contador)
   contador ++
Enddo
consultatabela.progressbar_1.visible := .f.
consultatabela.label_4.visible := .f.
                                                                 

** puxei todas as tabelas
** agora vou importar para o grid
***

contador := 1
cArquivoAbcfarma := directory(cCaminhoExe + '\' + 'abcfarma*.txt')
do while contador <= nNumeroPaginas
   cArquivo := cCaminhoExe + '\' + cArquivoAbcfarma[contador,1]
   cLinha := space(F_BLOCK)
   nHandle  := fopen(cArquivo, 0)
   tamanhoarquivo := fread(nHandle, @cLinha, F_BLOCK) // em bites
   
   do while len(cLinha) > 0
      *** pego produtos
      nInicio := at('ID_PRODUTO',cLinha)
      if nInicio = 0
         exit                                                       
      Endif   
      cLinha := '{' + subst(cLinha,nInicio + 12,F_BLOCK)
      nFim := at('ID_PRODUTO',cLinha)
      if nFim > 0
         cComando := subst(cLinha,1,nFim - 4)
      Else
         cComando := alltrim(cLinha)
      Endif
      
      *** agora pego os componentes de cComando

      _id_produto          := subst(cComando,3 , at('EAN',cComando) - 6)
      _ean                   := subst(cComando,at('EAN',cComando)                   + len('EAN') + 3                   ,at('REGISTRO_ANVISA',cComando)       - at('EAN',cComando)                - len('EAN') - 6)
      _registro_anvisa       := subst(cComando,at('REGISTRO_ANVISA',cComando)       + len('REGISTRO_ANVISA') + 3       ,at('GGREM',cComando)                - at('REGISTRO_ANVISA',cComando)    - len('REGISTRO_ANVISA') - 6)   
      _ggrem               := subst(cComando,at('GGREM',cComando)                + len('GGREM') + 3                ,at('NOME',cComando)                - at('GGREM',cComando)                - len('GGREM') - 6)   
      _nome                := subst(cComando,at('NOME',cComando)                   + len('NOME') + 3                ,at('DESCRICAO',cComando)            - at('NOME',cComando)                - len('NOME') - 6)   
      _descricao           := subst(cComando,at('DESCRICAO',cComando)             + len('DESCRICAO') + 3             ,at('COMPOSICAO',cComando)            - at('DESCRICAO',cComando)          - len('DESCRICAO') - 6)   
      _composicao          := subst(cComando,at('COMPOSICAO',cComando)             + len('COMPOSICAO') + 3          ,at('QTD_EMBALAGEM',cComando)         - at('COMPOSICAO',cComando)          - len('COMPOSICAO') - 6)   
      _qtde_embalagem      := subst(cComando,at('QTD_EMBALAGEM',cComando)          + len('QTD_EMBALAGEM') + 3       ,at('PF_20',cComando)               - at('QTD_EMBALAGEM',cComando)       - len('QTD_EMBALAGEM') - 6)   
      _pf_20               := subst(cComando,at('PF_20',cComando)                + len('PF_20') + 3                ,at('PMC_20',cComando)               - at('PF_20',cComando)                - len('PF_20') - 6)   
      _pmc_20              := subst(cComando,at('PMC_20',cComando)                + len('PMC_20') + 3                ,at('PF_18',cComando)               - at('PMC_20',cComando)             - len('PMC_20') - 6)   
      _pf_18               := subst(cComando,at('PF_18',cComando)                + len('PF_18') + 3                ,at('PMC_18',cComando)               - at('PF_18',cComando)                - len('PF_18') - 6)   
      _pmc_18              := subst(cComando,at('PMC_18',cComando)                + len('PMC_18') + 3                ,at('PF_17',cComando)               - at('PMC_18',cComando)             - len('PMC_18') - 6)   
      _pf_17               := subst(cComando,at('PF_17',cComando)                + len('PF_17') + 3                ,at('PMC_17',cComando)               - at('PF_17',cComando)                - len('PF_17') - 6)   
      _pmc_17              := subst(cComando,at('PMC_17',cComando)                + len('PMC_17') + 3                ,at('PF_17_5',cComando)               - at('PMC_17',cComando)             - len('PMC_17') - 6)   
      _pf_17_5             := subst(cComando,at('PF_17_5',cComando)                + len('PF_17_5') + 3             ,at('PMC_17_5',cComando)            - at('PF_17_5',cComando)             - len('PF_17_5') - 6)   
      _pmc_17_5            := subst(cComando,at('PMC_17_5',cComando)             + len('PMC_17_5') + 3             ,at('PF_12',cComando)               - at('PMC_17_5',cComando)             - len('PMC_17_5') - 6)   
      _pf_12               := subst(cComando,at('PF_12',cComando)                + len('PF_12') + 3                ,at('PMC_12',cComando)               - at('PF_12',cComando)                - len('PF_12') - 6)   
      _pmc_12              := subst(cComando,at('PMC_12',cComando)                + len('PMC_12') + 3                ,at('PF_0',cComando)                  - at('PMC_12',cComando)             - len('PMC_12') - 6)   
      _pf_0                 := subst(cComando,at('PF_0',cComando)                   + len('PF_0') + 3                ,at('PMC_0',cComando)               - at('PF_0',cComando)                - len('PF_0') - 6)   
      _pmc_0                 := subst(cComando,at('PMC_0',cComando)                + len('PMC_0') + 3                ,at('PERCENTUAL_IPI',cComando)         - at('PMC_0',cComando)                - len('PMC_0') - 6)   
      _percentual_ipi        := subst(cComando,at('PERCENTUAL_IPI',cComando)       + len('PERCENTUAL_IPI') + 3       ,at('DATA_VIGENCIA',cComando)         - at('PERCENTUAL_IPI',cComando)       - len('PERCENTUAL_IPI') - 6)   
      _data_vigencia         := subst(cComando,at('DATA_VIGENCIA',cComando)          + len('DATA_VIGENCIA') + 3       ,at('NOVO',cComando)                  - at('DATA_VIGENCIA',cComando)       - len('DATA_VIGENCIA') - 6)   
      _novo                  := subst(cComando,at('NOVO',cComando)                   + len('NOVO') + 3                ,at('VARIACAO_PRECO',cComando)      - at('NOVO',cComando)                - len('NOVO') - 6)   
      _variacao_preco      := subst(cComando,at('VARIACAO_PRECO',cComando)       + len('VARIACAO_PRECO') + 3       ,at('PF_17_ALC',cComando)            - at('VARIACAO_PRECO',cComando)       - len('VARIACAO_PRECO') - 6)   
      _pf_17_alc            := subst(cComando,at('PF_17_ALC',cComando)             + len('PF_17_ALC') + 3             ,at('PMC_17_ALC',cComando)            - at('PF_17_ALC',cComando)          - len('PF_17_ALC') - 6)   
      _pmc_17_alc            := subst(cComando,at('PMC_17_ALC',cComando)             + len('PMC_17_ALC') + 3          ,at('PF_17_5_ALC',cComando)         - at('PMC_17_ALC',cComando)          - len('PMC_17_ALC') - 6)   
      _pf_17_5_alc         := subst(cComando,at('PF_17_5_ALC',cComando)          + len('PF_17_5_ALC') + 3          ,at('PMC_17_5_ALC',cComando)         - at('PF_17_5_ALC',cComando)          - len('PF_17_5_ALC') - 6)   
      _pmc_17_5_alc         := subst(cComando,at('PMC_17_5_ALC',cComando)          + len('PMC_17_5_ALC') + 3          ,at('PF_18_ALC',cComando)            - at('PMC_17_5_ALC',cComando)       - len('PMC_17_5_ALC') - 6)   
      _pf_18_alc            := subst(cComando,at('PF_18_ALC',cComando)             + len('PF_18_ALC') + 3             ,at('PMC_18_ALC',cComando)            - at('PF_18_ALC',cComando)          - len('PF_18_ALC') - 6)   
      _pmc_18_alc            := subst(cComando,at('PMC_18_ALC',cComando)             + len('PMC_18_ALC') + 3          ,at('NCM',cComando)                  - at('PMC_18_ALC',cComando)          - len('PMC_18_ALC') - 6)   
      _ncm                  := subst(cComando,at('NCM',cComando)                   + len('NCM') + 3                   ,at('ID_TARJA',cComando)            - at('NCM',cComando)                - len('NCM') - 6)   
      _id_tarja            := subst(cComando,at('ID_TARJA',cComando)             + len('ID_TARJA') + 3             ,at('CLASSE_TERAPEUTICA',cComando)   - at('ID_TARJA',cComando)             - len('ID_TARJA') - 6)   
      _classe_terapeutica   := subst(cComando,at('CLASSE_TERAPEUTICA',cComando)   + len('CLASSE_TERAPEUTICA') + 3    ,at('PORTARIA_344_98',cComando)      - at('CLASSE_TERAPEUTICA',cComando) - len('CLASSE_TERAPEUTICA') - 6)   
      _portaria_344_98      := subst(cComando,at('PORTARIA_344_98',cComando)      + len('PORTARIA_344_98') + 3       ,at('PRODUTO_REFERENCIA',cComando)   - at('PORTARIA_344_98',cComando)    - len('PORTARIA_344_98') - 6)   
      _produto_referencia   := subst(cComando,at('PRODUTO_REFERENCIA',cComando)   + len('PRODUTO_REFERENCIA') + 3    ,at('CAS',cComando)                  - at('PRODUTO_REFERENCIA',cComando) - len('PRODUTO_REFERENCIA') - 6)   
      _cas                  := subst(cComando,at('CAS',cComando)                  + len('CAS') + 3                   ,at('DCB',cComando)                  - at('CAS',cComando)                - len('CAS') - 6)   
      _atc_code            := subst(cComando,at('ATC_CODE',cComando)               + len('ATC_CODE') + 3             ,at('CAP',cComando)                  - at('ATC_CODE',cComando)             - len('ATC_CODE') - 6)   
      _cap                  := subst(cComando,at('CAP',cComando)                  + len('CAP') + 3                   ,at('CONFAZ_87',cComando)            - at('CAP',cComando)                - len('CAP') - 6)   
      _confaz_87            := subst(cComando,at('CONFAZ_87',cComando)            + len('CONFAZ_87') + 3             ,at('TISS_TUSS',cComando)            - at('CONFAZ_87',cComando)          - len('CONFAZ_87') - 6)   
        _tiss_tuss               := subst(cComando,at('TISS_TUSS',cComando)               + len('TISS_TUSS') + 3                   ,at('CEST',cComando)                     - at('TISS_TUSS',cComando)                - len('TISS_TUSS') - 6)   
      _cest                     := subst(cComando,at('CEST',cComando)                     + len('CEST') + 3                      ,at('ID_FABRICANTE',cComando)            - at('CEST',cComando)                      - len('CEST') - 6)   
        _id_fabricante            := subst(cComando,at('ID_FABRICANTE',cComando)            + len('ID_FABRICANTE') + 3             ,at('NOME_FABRICANTE',cComando)         - at('ID_FABRICANTE',cComando)            - len('ID_FABRICANTE') - 6)   
      _nome_fabricante         := subst(cComando,at('NOME_FABRICANTE',cComando)         + len('NOME_FABRICANTE') + 3             ,at('ID_LCCT',cComando)                  - at('NOME_FABRICANTE',cComando)            - len('NOME_FABRICANTE') - 6)   
      _descricao_lista         := subst(cComando,at('DESCRICAO_LISTA',cComando)         + len('DESCRICAO_LISTA') + 3             ,at('ID_REGIME_PRECO',cComando)         - at('DESCRICAO_LISTA',cComando)            - len('DESCRICAO_LISTA') - 6)   
      _id_regime_preco         := subst(cComando,at('ID_REGIME_PRECO',cComando)         + len('ID_REGIME_PRECO') + 3             ,at('DESCRICAO_REGIME_PRECO',cComando)   - at('ID_REGIME_PRECO',cComando)            - len('ID_REGIME_PRECO') - 6)   
      _descricao_regime_preco   := subst(cComando,at('DESCRICAO_REGIME_PRECO',cComando)   + len('DESCRICAO_REGIME_PRECO') + 3    ,at('ID_TIPO_PRODUTO',cComando)         - at('DESCRICAO_REGIME_PRECO',cComando)   - len('DESCRICAO_REGIME_PRECO') - 6)   
      _id_tipo_produto          := subst(cComando,at('ID_TIPO_PRODUTO',cComando)         + len('ID_TIPO_PRODUTO') + 3             ,at('DESCRICAO_TIPO_PRODUTO',cComando)   - at('ID_TIPO_PRODUTO',cComando)            - len('ID_TIPO_PRODUTO') - 6)   
        _descricao_tipo_produto   := subst(cComando,at('DESCRICAO_TIPO_PRODUTO',cComando)   + len('DESCRICAO_TIPO_PRODUTO') + 3    ,at('DESCRICAO_TIPO_PRODUTO',cComando)   - at('DESCRICAO_TIPO_PRODUTO',cComando)   - len('DESCRICAO_TIPO_PRODUTO') - 6)   

      **acrescento no grid
      add item(consultatabela.grid_1.itemcount + 1 ,{_id_produto,_ncm,_id_fabricante,_nome_fabricante,;
                     _nome,_descricao,_pf_18,_pmc_18,'0',_qtde_embalagem,_percentual_ipi,_data_vigencia,;
                     _ean,_registro_anvisa,_descricao_lista,upper(_composicao),_classe_terapeutica } ) to grid_1 of consultatabela

      cLinha := alltrim(subst(cLinha,nFim -1,2000000))
     Enddo   
   contador ++
   consultatabela.label_7.value := str(contador)
   consultatabela.progressbar_1.value := contador
   do events
Enddo   

ar sistemas
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 10
Data de registro: 05 Jun 2018 00:11
Cidade/Estado: BELO HORIZONTE/MG
Curtiu: 0 vez
Mens.Curtidas: 0 vez




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 4 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro