-
Posts
511 -
Joined
-
Last visited
-
Days Won
3
Everything posted by syspel
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
Problema resolvido , obrigado!!! Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
-
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
-
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
-
Será que alguema sabe me dizer onde encontro a classe txmldocument. Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
-
Será que alguema sabe me dizer onde encontro a classe txmldocument. Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
-
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
-
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
-
Muito obrigado deu certo!!! Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN
-
Gostaria de saber como faço para inserir uma imagem em um relatorio. Vidal Syspel BCC55,XHABOUR 1.2.1,DBF,FIVEWIN