Jump to content
Fivewin Brasil

syspel

Membros
  • Posts

    511
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by syspel

  1. Estou lendo um arquivo XML, mas quando vou ler para grava no arquivo ele da o seguinte erro: "Error description: Error BASE/1132 Erro de limite: acesso de array", sera que alguem poderia me ajudar. Vidal Syspel Informatica. Grato desde já. Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  2. Estou lendo um arquivo XML, mas quando vou ler para grava no arquivo ele da o seguinte erro: "Error description: Error BASE/1132 Erro de limite: acesso de array", sera que alguem poderia me ajudar. Vidal Syspel Informatica. Grato desde já. Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  3. eu usei o exemplo: cNomeArquivo := "C:\SeuTexto.TXT" cNovoNome := "C:\TextoLimpo.TXT" MemoWrit(cNovoNome,StrTran(MemoRead(cNomeArquivo),Chr(26))) e não deu certo. Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  4. Estou com um problema , o meu cliente diz que ao abrir a NFE em rede la na empresa dele , o CNPJ não passa , mas eu fiz o teste aqui na empresa e passa normalmente, o que deve esta acontecendo no cliente? Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  5. Estou com um problema , o meu cliente diz que ao abrir a NFE em rede la na empresa dele , o CNPJ não passa , mas eu fiz o teste aqui na empresa e passa normalmente, o que deve esta acontecendo no cliente? Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  6. Gerei um aquivo texto e no fim do texto tem um caracter cujo o codigo ASC é '26, eu tenho que apagar ele porem nao posso eliminar a linha. Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  7. Gerei um aquivo texto e no fim do texto tem um caracter cujo o codigo ASC é '26, eu tenho que apagar ele porem nao posso eliminar a linha. Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  8. esta funcao ela le xml para um dbf com a serie da nota 0 com a serie 1,2 ele da erro de array alguem habilita a resorver Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  9. Eu tenho uma função que o Gilmer me fez que lê o XML para dentro de um DBF eu leio o numero da nota,CNPJ,Valor total da nota , etc... , quando eu vou ler o item da nota da serie 0 o sistema le corretamente , quando eu vou ler os itens da nota serie 1 ele da erro de array, como eu faço para resolver isto, porque o CST da serie 0 é assim "/imposto/icms/icms10/cst" da serie 1 "/imposto/icms/icms00/cst " eu não consigo saber a posição que está. ******************************************************************************* * chixml.prg * * * * le um arquivo xml e grava dentro de um arquivo dbf * * * * * * * ******************************************************************************* #Include "FiveWin.ch" #include "hbxml.ch" Function Main() Local aCampos,cChaveAcesso:="",cXml,f,nPos Local nPos1,nPos2,nPos3,nPos4,nPos5,nPos6,nPos7,nPos8,nPos9,nPos10 Local nPos11,nPos12,nPos13,nPos14,nPos15,nPos16,nPos17,nPos18,nPos19 Local nPos20,nPos21,nPos22,nPos23,nPos24,nPos25,nPos26,nPos27,nPos28 Local nPos29,nPos30,nPos31,nPos32,nPos33,nPos34,nPos35,nPos36 Local nsegprod1:=0, nsegprod2:=0, nsegprod3:=0, nsegprod4:=0, nsegprod5:=0, nsegprod6:=0 Local nsegprod7:=0, nsegprod8:=0, nsegprod9:=0, nsegprod10:=0, nsegprod11:=0, nsegprod12:=0 Local nsegprod13:=0, nsegprod14:=0 Local nITemNfe cXml := cGetFile( "XML File (*.Xml)|*.Xml|", ; "Selecione arquivo XML da NFe sem estar assinada", ; curdir() ) aCampos:=CarregaXml(cXml,@cChaveAcesso) if ! file("nfe1.dbf") crianfe() endif select 1 use nfe1 zap // Posicao do array nPos1:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/cnpj") // nao precisa colocar a tag inteira, só uma parte já resolve nPos2:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/xnome") // nao precisa colocar a tag inteira, só uma parte já resolve nPos3:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/enderdest/xlgr") // nao precisa colocar a tag inteira, só uma parte já resolve nPos4:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/enderdest/nro") // nao precisa colocar a tag inteira, só uma parte já resolve nPos5:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/enderdest/xbairro") // nao precisa colocar a tag inteira, só uma parte já resolve nPos6:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/enderdest/uf") // nao precisa colocar a tag inteira, só uma parte já resolve nPos7:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/enderdest/xmun") // nao precisa colocar a tag inteira, só uma parte já resolve nPos8:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/enderdest/uf") // nao precisa colocar a tag inteira, só uma parte já resolve nPos9:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/enderdest/cep") // nao precisa colocar a tag inteira, só uma parte já resolve nPos10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/enderdest/fone") // nao precisa colocar a tag inteira, só uma parte já resolve nPos11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/ie") // nao precisa colocar a tag inteira, só uma parte já resolve nPos12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/nnf") // nao precisa colocar a tag inteira, só uma parte já resolve nPos13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/demi") // nao precisa colocar a tag inteira, só uma parte já resolve nPos14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vbc") // nao precisa colocar a tag inteira, só uma parte já resolve nPos15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vicms") // nao precisa colocar a tag inteira, só uma parte já resolve nPos16:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vbcst") // nao precisa colocar a tag inteira, só uma parte já resolve nPos17:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vst") // nao precisa colocar a tag inteira, só uma parte já resolve nPos18:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vipi") // nao precisa colocar a tag inteira, só uma parte já resolve nPos19:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vnf") // nao precisa colocar a tag inteira, só uma parte já resolve nPos20:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vfret") // nao precisa colocar a tag inteira, só uma parte já resolve nPos21:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vseg") // nao precisa colocar a tag inteira, só uma parte já resolve nPos22:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/voutro") // nao precisa colocar a tag inteira, só uma parte já resolve // vou mostrar para vc como pesquisar o segundo elemento // lembrando que precisa pega a posiço do primeiro/anteior e pesquisar a partir dele select nfe1 append blank replace nfe1->f_cnpj with acampos[nPos1,2] replace nfe1->f_nome with acampos[npos2,2] replace nfe1->f_end with acampos[npos3,2] replace nfe1->f_no with acampos[npos4,2] replace nfe1->f_bairro with acampos[npos5,2] replace nfe1->f_cid with acampos[npos6,2] replace nfe1->f_muni with acampos[npos7,2] replace nfe1->f_estado with acampos[npos8,2] replace nfe1->f_cep with acampos[npos9,2] replace nfe1->f_tele with acampos[npos10,2] replace nfe1->f_inscrica with acampos[npos11,2] replace nfe1->numero with acampos[npos12,2] replace nfe1->dt_emiss with acampos[npos13,2] replace nfe1->bse_calc with acampos[npos14,2] replace nfe1->icms with acampos[npos15,2] replace nfe1->bse_icmst with acampos[npos16,2] replace nfe1->icmssubt with acampos[npos17,2] replace nfe1->ipi with acampos[npos18,2] replace nfe1->vlr_cont with acampos[npos19,2] replace nfe1->frete with acampos[npos20,2] replace nfe1->seguro with acampos[npos21,2] replace nfe1->outrasdesp with acampos[npos22,2] nSegProd1:=-1 nItemNfe:=1 While nSegProd1#0 nsegprod1:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/cprod",nsegprod1+1) nsegprod2:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/xprod",nsegprod2+1) nsegprod3:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/ncm",nsegprod3+1) nsegprod4:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms10/cst",nsegprod4+1) nsegprod5:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/utrib",nsegprod5+1) nsegprod6:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/qtrib",nsegprod6+1) nsegprod7:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/vuntrib",nsegprod7+1) nsegprod8:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/vprod",nsegprod8+1) nsegprod9:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms10/vicms",nsegprod9+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms10/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/pis/pisaliq/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/cfop",nsegprod12+1) If nSegProd1!=0 // aqui mostra como esta pegando corretamente // "Item da Nota",nItemNfe,acampos[nsegprod1,2], aCampos[nsegprod2,2] nItemNfe++ // coloquei aqui, mas tenho certeza que esta errado, pois ele vai gravar no mesmo campo // deixando apenas o utimo -> vc precisa arrumar isto append blank replace nfe1->prod with acampos[nsegprod1,2] replace nfe1->desc with acampos[nsegprod2,2] replace nfe1->nbm with acampos[nsegprod3,2] replace nfe1->cst with acampos[nsegprod4,2] replace nfe1->unid with acampos[nsegprod5,2] replace nfe1->qtde with acampos[nsegprod6,2] replace nfe1->vl_int with acampos[nsegprod7,2] replace nfe1->vl_tot with acampos[nsegprod8,2] replace nfe1->vl_icms with acampos[nsegprod9,2] replace nfe1->aicms with acampos[nsegprod10,2] replace nfe1->aipi with acampos[nsegprod11,2] replace nfe1->cfop with acampos[nsegprod12,2] Endif Enddo commit close databases return nil Function PegaPosicao(aCampos,cTag,nPosInicial) Local nPos Default nPosInicial:=1 nPos:=Ascan(aCampos,{|aCampos| At(Upper(cTag),aCampos[1])!=0 },nPosInicial) Return(nPos) Function CarregaXml(cXmlFile,cChaveAcesso) Local oXmlNode,nPos,cAtributos:="",oXmlDoc Local aFieldsValue:={} cChaveAcesso:="" cXmlFile:=MemoRead(cXmlFile) oXmldoc:=TXmlDocument():New(cXmlFile,HBXML_STYLE_NOESCAPE ) oxmlNode := oXmlDoc:oRoot:oChild While oXmlNode != NIL if oXmlNode:cName!=Nil If Upper(oXmlNode:cName)=="INFNFE".and.Empty(cChaveAcesso) cChaveAcesso:=ValtoPrg(oXmlNode:aAttributes) nPos:=At("NFe",cChaveAcesso) cChaveAcesso:=Substr(cChaveAcesso,nPos+3,44) Endif If !Empty(oXmlNode:cData) Aadd(aFieldsValue,{Upper(Alltrim(oxmlNode:Path())),Alltrim(oXmlNode:cData),cAtributos}) else If Upper(oXmlNode:cName)=="DET" cAtributos:=ValtoPrg(ValtoPrg(oXmlNode:aAttributes)) ElseIf Upper(oXmlNode:cName)=="TOTAL" cAtributos:="" Endif Endif Endif oXmlNode:=oXmlNode:NextInTree() Enddo Return(aFieldsValue) FUNCTION Net_Use( cDbf, lShared,Wait ) LOCAL cAlias := cFileName( cDbf ) LOCAL bAlias := cFileName( cDbf ) // CONTROLE DE PARAMETROS DE ENTRADA ===================== If cDbf = NIL .OR. !File( cDbf + ".dbf" ) MsgStop( "Nome do arquivo incorreto" + CRLF + CRLF + ; "nao achei banco de dados." + CRLF + CRLF + ; cDbf + ".dbf", "erro fatal!!" ) Return( .F. ) ENDIF IIf( lShared = NIL, lShared := .F., lShared ) // ====================================================== IF lShared = .T. USE ( cDbf ) ALIAS ( cAlias ) VIA "DBFCDX" EXCLUSIVE NEW ELSE USE ( cDbf ) ALIAS ( cAlias ) VIA "DBFCDX" SHARED NEW ENDIF IF !NetErr() RETURN( .T. ) ENDIF RETURN( .F. ) function crianfe BRQ45:="NFE1"+".dbf" DbCreate("&brq45",{ { "F_CNPJ" ,"C", 14, 0 },; { "F_NOME" ,"C", 40, 0 },; { "F_INSCRICA" ,"C", 18, 0 },; { "F_ESTADO" ,"C", 2, 0 },; { "F_NO" ,"C", 5, 0 },; { "F_END" ,"C", 40, 0 },; { "F_CID" ,"C", 30, 0 },; { "F_MUNI" ,"C", 30, 0 },; { "F_TELE" ,"C", 15, 0 },; { "F_CEP" ,"C", 8, 0 },; { "F_BAIRRO" ,"C", 30, 0 },; { "DT_EMISS" ,"C", 12, 0 },; { "VLR_CONT" ,"C", 12, 0 },; { "BSE_CALC" ,"C", 12, 0 },; { "ICMS" ,"C", 12, 0 },; { "BSE_ICMST" ,"C", 12, 0 },; { "ICMSSUBT" ,"C", 12, 0 },; { "FRETE" ,"C", 12, 0 },; { "SEGURO" ,"C", 12, 0 },; { "OUTRASDESP" ,"C", 12, 0 },; { "IPI" ,"C", 12, 0 },; { "NUMERO" ,"C", 10, 0 },; { "PROD" ,"C", 14, 0 },; { "DESC" ,"C", 40, 0 },; { "NBM" ,"C", 10, 0 },; { "CST" ,"C", 04, 0 },; { "UNID" ,"C", 04, 0 },; { "QTDE" ,"C", 10, 0 },; { "VL_INT" ,"C", 12, 0 },; { "VL_TOT" ,"C", 12, 0 },; { "ICMS" ,"C", 12, 0 },; { "AICMS" ,"C", 6, 0 },; { "AIPI" ,"C", 6, 0 },; { "CFOP" ,"C", 4, 0 }}) close databases RETURN .T. Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  10. Eu tenho uma função que o Gilmer me fez que lê o XML para dentro de um DBF eu leio o numero da nota,CNPJ,Valor total da nota , etc... , quando eu vou ler o item da nota da serie 0 o sistema le corretamente , quando eu vou ler os itens da nota serie 1 ele da erro de array, como eu faço para resolver isto, porque o CST da serie 0 é assim "/imposto/icms/icms10/cst" da serie 1 "/imposto/icms/icms00/cst " eu não consigo saber a posição que está. ******************************************************************************* * chixml.prg * * * * le um arquivo xml e grava dentro de um arquivo dbf * * * * * * * ******************************************************************************* #Include "FiveWin.ch" #include "hbxml.ch" Function Main() Local aCampos,cChaveAcesso:="",cXml,f,nPos Local nPos1,nPos2,nPos3,nPos4,nPos5,nPos6,nPos7,nPos8,nPos9,nPos10 Local nPos11,nPos12,nPos13,nPos14,nPos15,nPos16,nPos17,nPos18,nPos19 Local nPos20,nPos21,nPos22,nPos23,nPos24,nPos25,nPos26,nPos27,nPos28 Local nPos29,nPos30,nPos31,nPos32,nPos33,nPos34,nPos35,nPos36 Local nsegprod1:=0, nsegprod2:=0, nsegprod3:=0, nsegprod4:=0, nsegprod5:=0, nsegprod6:=0 Local nsegprod7:=0, nsegprod8:=0, nsegprod9:=0, nsegprod10:=0, nsegprod11:=0, nsegprod12:=0 Local nsegprod13:=0, nsegprod14:=0 Local nITemNfe cXml := cGetFile( "XML File (*.Xml)|*.Xml|", ; "Selecione arquivo XML da NFe sem estar assinada", ; curdir() ) aCampos:=CarregaXml(cXml,@cChaveAcesso) if ! file("nfe1.dbf") crianfe() endif select 1 use nfe1 zap // Posicao do array nPos1:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/cnpj") // nao precisa colocar a tag inteira, só uma parte já resolve nPos2:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/xnome") // nao precisa colocar a tag inteira, só uma parte já resolve nPos3:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/enderdest/xlgr") // nao precisa colocar a tag inteira, só uma parte já resolve nPos4:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/enderdest/nro") // nao precisa colocar a tag inteira, só uma parte já resolve nPos5:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/enderdest/xbairro") // nao precisa colocar a tag inteira, só uma parte já resolve nPos6:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/enderdest/uf") // nao precisa colocar a tag inteira, só uma parte já resolve nPos7:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/enderdest/xmun") // nao precisa colocar a tag inteira, só uma parte já resolve nPos8:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/enderdest/uf") // nao precisa colocar a tag inteira, só uma parte já resolve nPos9:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/enderdest/cep") // nao precisa colocar a tag inteira, só uma parte já resolve nPos10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/enderdest/fone") // nao precisa colocar a tag inteira, só uma parte já resolve nPos11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/dest/ie") // nao precisa colocar a tag inteira, só uma parte já resolve nPos12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/nnf") // nao precisa colocar a tag inteira, só uma parte já resolve nPos13:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/ide/demi") // nao precisa colocar a tag inteira, só uma parte já resolve nPos14:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vbc") // nao precisa colocar a tag inteira, só uma parte já resolve nPos15:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vicms") // nao precisa colocar a tag inteira, só uma parte já resolve nPos16:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vbcst") // nao precisa colocar a tag inteira, só uma parte já resolve nPos17:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vst") // nao precisa colocar a tag inteira, só uma parte já resolve nPos18:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vipi") // nao precisa colocar a tag inteira, só uma parte já resolve nPos19:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vnf") // nao precisa colocar a tag inteira, só uma parte já resolve nPos20:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vfret") // nao precisa colocar a tag inteira, só uma parte já resolve nPos21:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/vseg") // nao precisa colocar a tag inteira, só uma parte já resolve nPos22:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/total/icmstot/voutro") // nao precisa colocar a tag inteira, só uma parte já resolve // vou mostrar para vc como pesquisar o segundo elemento // lembrando que precisa pega a posiço do primeiro/anteior e pesquisar a partir dele select nfe1 append blank replace nfe1->f_cnpj with acampos[nPos1,2] replace nfe1->f_nome with acampos[npos2,2] replace nfe1->f_end with acampos[npos3,2] replace nfe1->f_no with acampos[npos4,2] replace nfe1->f_bairro with acampos[npos5,2] replace nfe1->f_cid with acampos[npos6,2] replace nfe1->f_muni with acampos[npos7,2] replace nfe1->f_estado with acampos[npos8,2] replace nfe1->f_cep with acampos[npos9,2] replace nfe1->f_tele with acampos[npos10,2] replace nfe1->f_inscrica with acampos[npos11,2] replace nfe1->numero with acampos[npos12,2] replace nfe1->dt_emiss with acampos[npos13,2] replace nfe1->bse_calc with acampos[npos14,2] replace nfe1->icms with acampos[npos15,2] replace nfe1->bse_icmst with acampos[npos16,2] replace nfe1->icmssubt with acampos[npos17,2] replace nfe1->ipi with acampos[npos18,2] replace nfe1->vlr_cont with acampos[npos19,2] replace nfe1->frete with acampos[npos20,2] replace nfe1->seguro with acampos[npos21,2] replace nfe1->outrasdesp with acampos[npos22,2] nSegProd1:=-1 nItemNfe:=1 While nSegProd1#0 nsegprod1:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/cprod",nsegprod1+1) nsegprod2:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/xprod",nsegprod2+1) nsegprod3:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/ncm",nsegprod3+1) nsegprod4:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms10/cst",nsegprod4+1) nsegprod5:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/utrib",nsegprod5+1) nsegprod6:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/qtrib",nsegprod6+1) nsegprod7:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/vuntrib",nsegprod7+1) nsegprod8:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/vprod",nsegprod8+1) nsegprod9:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms10/vicms",nsegprod9+1) nsegprod10:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/icms/icms10/picms",nsegprod10+1) nsegprod11:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/imposto/pis/pisaliq/vbc",nsegprod11+1) nsegprod12:=PegaPosicao(aCampos,"/nfeproc/nfe/infnfe/det/prod/cfop",nsegprod12+1) If nSegProd1!=0 // aqui mostra como esta pegando corretamente // "Item da Nota",nItemNfe,acampos[nsegprod1,2], aCampos[nsegprod2,2] nItemNfe++ // coloquei aqui, mas tenho certeza que esta errado, pois ele vai gravar no mesmo campo // deixando apenas o utimo -> vc precisa arrumar isto append blank replace nfe1->prod with acampos[nsegprod1,2] replace nfe1->desc with acampos[nsegprod2,2] replace nfe1->nbm with acampos[nsegprod3,2] replace nfe1->cst with acampos[nsegprod4,2] replace nfe1->unid with acampos[nsegprod5,2] replace nfe1->qtde with acampos[nsegprod6,2] replace nfe1->vl_int with acampos[nsegprod7,2] replace nfe1->vl_tot with acampos[nsegprod8,2] replace nfe1->vl_icms with acampos[nsegprod9,2] replace nfe1->aicms with acampos[nsegprod10,2] replace nfe1->aipi with acampos[nsegprod11,2] replace nfe1->cfop with acampos[nsegprod12,2] Endif Enddo commit close databases return nil Function PegaPosicao(aCampos,cTag,nPosInicial) Local nPos Default nPosInicial:=1 nPos:=Ascan(aCampos,{|aCampos| At(Upper(cTag),aCampos[1])!=0 },nPosInicial) Return(nPos) Function CarregaXml(cXmlFile,cChaveAcesso) Local oXmlNode,nPos,cAtributos:="",oXmlDoc Local aFieldsValue:={} cChaveAcesso:="" cXmlFile:=MemoRead(cXmlFile) oXmldoc:=TXmlDocument():New(cXmlFile,HBXML_STYLE_NOESCAPE ) oxmlNode := oXmlDoc:oRoot:oChild While oXmlNode != NIL if oXmlNode:cName!=Nil If Upper(oXmlNode:cName)=="INFNFE".and.Empty(cChaveAcesso) cChaveAcesso:=ValtoPrg(oXmlNode:aAttributes) nPos:=At("NFe",cChaveAcesso) cChaveAcesso:=Substr(cChaveAcesso,nPos+3,44) Endif If !Empty(oXmlNode:cData) Aadd(aFieldsValue,{Upper(Alltrim(oxmlNode:Path())),Alltrim(oXmlNode:cData),cAtributos}) else If Upper(oXmlNode:cName)=="DET" cAtributos:=ValtoPrg(ValtoPrg(oXmlNode:aAttributes)) ElseIf Upper(oXmlNode:cName)=="TOTAL" cAtributos:="" Endif Endif Endif oXmlNode:=oXmlNode:NextInTree() Enddo Return(aFieldsValue) FUNCTION Net_Use( cDbf, lShared,Wait ) LOCAL cAlias := cFileName( cDbf ) LOCAL bAlias := cFileName( cDbf ) // CONTROLE DE PARAMETROS DE ENTRADA ===================== If cDbf = NIL .OR. !File( cDbf + ".dbf" ) MsgStop( "Nome do arquivo incorreto" + CRLF + CRLF + ; "nao achei banco de dados." + CRLF + CRLF + ; cDbf + ".dbf", "erro fatal!!" ) Return( .F. ) ENDIF IIf( lShared = NIL, lShared := .F., lShared ) // ====================================================== IF lShared = .T. USE ( cDbf ) ALIAS ( cAlias ) VIA "DBFCDX" EXCLUSIVE NEW ELSE USE ( cDbf ) ALIAS ( cAlias ) VIA "DBFCDX" SHARED NEW ENDIF IF !NetErr() RETURN( .T. ) ENDIF RETURN( .F. ) function crianfe BRQ45:="NFE1"+".dbf" DbCreate("&brq45",{ { "F_CNPJ" ,"C", 14, 0 },; { "F_NOME" ,"C", 40, 0 },; { "F_INSCRICA" ,"C", 18, 0 },; { "F_ESTADO" ,"C", 2, 0 },; { "F_NO" ,"C", 5, 0 },; { "F_END" ,"C", 40, 0 },; { "F_CID" ,"C", 30, 0 },; { "F_MUNI" ,"C", 30, 0 },; { "F_TELE" ,"C", 15, 0 },; { "F_CEP" ,"C", 8, 0 },; { "F_BAIRRO" ,"C", 30, 0 },; { "DT_EMISS" ,"C", 12, 0 },; { "VLR_CONT" ,"C", 12, 0 },; { "BSE_CALC" ,"C", 12, 0 },; { "ICMS" ,"C", 12, 0 },; { "BSE_ICMST" ,"C", 12, 0 },; { "ICMSSUBT" ,"C", 12, 0 },; { "FRETE" ,"C", 12, 0 },; { "SEGURO" ,"C", 12, 0 },; { "OUTRASDESP" ,"C", 12, 0 },; { "IPI" ,"C", 12, 0 },; { "NUMERO" ,"C", 10, 0 },; { "PROD" ,"C", 14, 0 },; { "DESC" ,"C", 40, 0 },; { "NBM" ,"C", 10, 0 },; { "CST" ,"C", 04, 0 },; { "UNID" ,"C", 04, 0 },; { "QTDE" ,"C", 10, 0 },; { "VL_INT" ,"C", 12, 0 },; { "VL_TOT" ,"C", 12, 0 },; { "ICMS" ,"C", 12, 0 },; { "AICMS" ,"C", 6, 0 },; { "AIPI" ,"C", 6, 0 },; { "CFOP" ,"C", 4, 0 }}) close databases RETURN .T. Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  11. syspel

    net use

    Alguem sbe me dizer como faço para utilizar o Net Use para fazer impressão em rede?! Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  12. syspel

    net use

    Alguem sbe me dizer como faço para utilizar o Net Use para fazer impressão em rede?! Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  13. Bom dia, estou com uma placa mãe modelo "ASROCK G. 41M-VS2" e ela só tem entrada LPT3 para impressora, gostaria de saber como faço para imprimir em LPT1. A classe que eu ultilizo é a Txtpreview , será que alguem pode me informar uma classe para LPT3? Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  14. Bom dia, estou com uma placa mãe modelo "ASROCK G. 41M-VS2" e ela só tem entrada LPT3 para impressora, gostaria de saber como faço para imprimir em LPT1. A classe que eu ultilizo é a Txtpreview , será que alguem pode me informar uma classe para LPT3? Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  15. syspel

    dbmax

    Bom dia , alguem tem um dbu que abre um dbf com mais de 250 campos e alguem saberia me informar onde posso conseguir uma versão mais recente do Dbmax para download. Grato desde já. Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  16. syspel

    dbmax

    Bom dia , alguem tem um dbu que abre um dbf com mais de 250 campos e alguem saberia me informar onde posso conseguir uma versão mais recente do Dbmax para download. Grato desde já. Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  17. syspel

    Rf. XML

    Problema resolvido , obrigado!!! Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  18. syspel

    Rf. XML

    EU ESTOU ULTILIZANDO UMA FUNÇÃO XML QUE ESTAVA POSTADA NO FORUM, E AO ULTILIZA-LA EU CONSEGUI GERAR UM ARQUIVO DBF,COM O NOME CAMPO, CONTEUDO , POREM ELE TRIPLICA OU QUADRIPLICA OS CAMPOS EX: CEP( 3 VEZES) CNPJ( 3 VEZES), CFOP ( 6VEZES) , GOSTARIA DE SABER SE ALGUEM SE ALGUEM PODE ME AJUDAR COMO RESOLVER ESTE PROBLEMA POIS NECESSITO SOMENTE DE 1 CAMPO. SEGUE O FONTE: #include "fivewin.ch" #include "fileio.ch" #include "hbxml.ch" PROCEDURE RetXml( cFileName, cNode, cAttrib, cValue, cData ) LOCAL hFile, cXml LOCAL xmlDoc, xmlIter , xmlNode SetHandleCount(255) Request DBFcdx Rddsetdefault("DBFcdx") RDD="SIXNSX" if !file(cFileName) msginfo( "Arquivo não Encontrado !!!","Atenção") // nome do campo cFileName := cGetFile( "XML File (*.Xml)|*.Xml|","Selecione arquivo XML da NFe ",curdir()) // if !file(cFileName) // Return nil // end endif cNode := NIL cAttrib := NIL cValue := NIL hFile := FOpen( cFileName ) xmlDoc := TXmlDocument():New( hFile ) IF xmlDoc:nStatus != HBXML_STATUS_OK Msginfo("erro ao ler XML ") RETURN ENDIF xmlIter := TXmlIterator():New( xmlDoc:oRoot ) xmlNode := xmlIter:Find() ctemp1 := "nfe.dbf" ctemp2 := "nfe.cdx" if file(ctemp1) delete file &ctemp1 delete file &ctemp2 endif aStruct := {{"CAMPO" ,"C",10 ,0},; {"CONTEUDO","C",800,0}} Dbcreate(ctemp1,aStruct) use &ctemp1 index on campo to &ctemp2 close databases use &ctemp1 index &ctemp2 ALIAS RETXML exclusive new DO WHILE xmlNode != NIL if !empty(xmlNode:cData) if subs(xmlNode:cData,1,1) # "<" Dbappend() Field->Campo :=xmlNode:cName Field->Conteudo:=xmlNode:cData end else Dbappend() Field->Campo :=xmlNode:cName end xmlNode := xmlIter:Next() // joga pro proximo campo ENDDO Dbgotop() //browse() //Dbselectarea("RetXml") gra_xmldbf() //xxdbf.prg close databases RETURN Vidal Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  19. syspel

    Rf. XML

    EU ESTOU ULTILIZANDO UMA FUNÇÃO XML QUE ESTAVA POSTADA NO FORUM, E AO ULTILIZA-LA EU CONSEGUI GERAR UM ARQUIVO DBF,COM O NOME CAMPO, CONTEUDO , POREM ELE TRIPLICA OU QUADRIPLICA OS CAMPOS EX: CEP( 3 VEZES) CNPJ( 3 VEZES), CFOP ( 6VEZES) , GOSTARIA DE SABER SE ALGUEM SE ALGUEM PODE ME AJUDAR COMO RESOLVER ESTE PROBLEMA POIS NECESSITO SOMENTE DE 1 CAMPO. SEGUE O FONTE: #include "fivewin.ch" #include "fileio.ch" #include "hbxml.ch" PROCEDURE RetXml( cFileName, cNode, cAttrib, cValue, cData ) LOCAL hFile, cXml LOCAL xmlDoc, xmlIter , xmlNode SetHandleCount(255) Request DBFcdx Rddsetdefault("DBFcdx") RDD="SIXNSX" if !file(cFileName) msginfo( "Arquivo não Encontrado !!!","Atenção") // nome do campo cFileName := cGetFile( "XML File (*.Xml)|*.Xml|","Selecione arquivo XML da NFe ",curdir()) // if !file(cFileName) // Return nil // end endif cNode := NIL cAttrib := NIL cValue := NIL hFile := FOpen( cFileName ) xmlDoc := TXmlDocument():New( hFile ) IF xmlDoc:nStatus != HBXML_STATUS_OK Msginfo("erro ao ler XML ") RETURN ENDIF xmlIter := TXmlIterator():New( xmlDoc:oRoot ) xmlNode := xmlIter:Find() ctemp1 := "nfe.dbf" ctemp2 := "nfe.cdx" if file(ctemp1) delete file &ctemp1 delete file &ctemp2 endif aStruct := {{"CAMPO" ,"C",10 ,0},; {"CONTEUDO","C",800,0}} Dbcreate(ctemp1,aStruct) use &ctemp1 index on campo to &ctemp2 close databases use &ctemp1 index &ctemp2 ALIAS RETXML exclusive new DO WHILE xmlNode != NIL if !empty(xmlNode:cData) if subs(xmlNode:cData,1,1) # "<" Dbappend() Field->Campo :=xmlNode:cName Field->Conteudo:=xmlNode:cData end else Dbappend() Field->Campo :=xmlNode:cName end xmlNode := xmlIter:Next() // joga pro proximo campo ENDDO Dbgotop() //browse() //Dbselectarea("RetXml") gra_xmldbf() //xxdbf.prg close databases RETURN Vidal Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  20. Será que alguema sabe me dizer onde encontro a classe txmldocument. Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  21. Será que alguema sabe me dizer onde encontro a classe txmldocument. Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  22. Gostaria de saber qual o comando ultilizado para passar um XML para TXT ou DBF, pois preciso disso pra fazer a Nota Fiscal Eletrônica. Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN Editado por - syspel on 14/09/2010 11:02:28 Editado por - syspel on 14/09/2010 11:24:39
  23. Gostaria de saber qual o comando ultilizado para passar um XML para TXT ou DBF, pois preciso disso pra fazer a Nota Fiscal Eletrônica. Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN Editado por - syspel on 14/09/2010 11:02:28 Editado por - syspel on 14/09/2010 11:24:39
  24. Muito obrigado deu certo!!! Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
  25. Gostaria de saber como faço para inserir uma imagem em um relatorio. Vidal Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
×
×
  • Create New...