Página 1 de 1

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Enviado: 14 Out 2021 14:06
por ti02
eu baixei todos os xml nfe, fiz um prg no crimson editor com a extensão harbour, coloquei os códigos para puxar o arquivo e pasta aonde eu deixei os xml, coloquei as TAG_XML pra pegar o valor das variáveis no xml e colocar nos campos da tabela do banco de dados através do F_MONTAQUERY, contudo, não esta inserindo os dados na tabela. O que pode ser?

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Enviado: 14 Out 2021 15:15
por Jairo Maia
Olá ti02,
ti02 escreveu:contudo, não esta inserindo os dados na tabela. O que pode ser?
Com todo respeito, mas a resposta seria: "Alguma ou muita coisa com certeza".

Por favor: Nos ajude a lhe ajudar! Envie um exemplo de como você criou sua função, de como está tentando pegar as variáveis, etc...

Contamos com sua compreensão... Valeu...

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Enviado: 15 Out 2021 10:09
por ti02
Aqui esta o codigo

Código: Selecionar todos

STATIC FUNCTION CARREGA_CTRANSP(nModulo)
	LOCAL q,v,i, vTela:=saveTela()
	LOCAL xPasta
	
	TV_MODULO("Carrega Conhecimentos de Transporte")
	
	@ 03,03 say "Este rotina verifica a pasta aonde voce ja baixou os XLM dos conhecimentos"
	@ 04,03 say "de transporte, le o seu conteudo e grava os registros no sistema."
	
	do while .T.
		xPasta:=space(60)
		xPasta:="C:\XHB\VOLP\TBA\CT\"+space(41)
		@ 06,03 say "Pasta:" get xPasta pict [@!] valid ! empty(xPasta)
		l24("Digite a pasta desejada ou ESC para sair")
		read
		
		if at(":",xPasta)=0
			alert("Inclua a letra do disco desejado (ex C:\ ou R:\")
			loop
		endif
		
		if at("\",xPasta)=0
			alert("Inclua o caminho completo, incluindo as subpastas")
			loop
		endif
		
		cPasta:=alltrim(xPasta)
		if subs(cPasta,len(cPasta),1)<>"\"
			cPasta+="\"
		endif
		
		nLen:=ADIR(alltrim(xPasta))
		if nLen==0
			alert("Nenhum arquivo salvo nesta pasta")
			loop
		endif
		
		@ 7,0 clear to 23,79
		
		aName := Array( nLen )
		aSize := Array( nLen )
		aDate := Array( nLen )
		aTime := Array( nLen )
		aAttr := Array( nLen )
		
		** Pega data e hora do executavel da unidade c
		ADir(cPasta, aName, aSize, aDate, aTime, aAttr )
		
		for i:=1 to nLen
			xNomeArq:=aName[i]
			if alltrim(xNomeArq)=="." .or. alltrim(xNomeArq)==".."
				loop
			endif
			xDataXml:=aDate[i]
			

@ 8,3 say "Lendo arquivo "+xNomeArq
			
			
			xConteudo:=MEMOREAD(cPasta+xNomeArq)
			xEmit:=TAG_XML('emit',xConteudo)
			xCnpj:=TAG_XML('CNPJ',xEmit)	
			xChaveNfe:=TAG_XML('chave',xConteudo)
			xToma3:=TAG_XML('toma3',xConteudo)
			xToma:=TAG_XML('toma',xToma3)
			xNct:=TAG_XML('nCT',xConteudo)
			xdhEmi:=TAG_XML('dhEmi',xConteudo)
			xcMunEnv:=TAG_XML('cMunEnv',xConteudo)
			xxMunEnv:=TAG_XML('xMunEnv',xConteudo)
			xUFEnv:=TAG_XML('UFEnv',xConteudo)
			xcMunIni:=TAG_XML('cMunIni',xConteudo)
			xxMunIni:=TAG_XML('xMunIni',xConteudo)
			xUFIni:=TAG_XML('UFIni',xConteudo)
			xcMunFim:=TAG_XML('cMunFim',xConteudo)
			xxMunFim:=TAG_XML('xMunFim',xConteudo)
			xUFFim:=TAG_XML('UFFim',xConteudo)
			
			xEmit:=TAG_XML('emit',xConteudo)
			xIE:=TAG_XML('IE',xEmit)	
			xEmit:=TAG_XML('emit',xConteudo)
			xxNome:=TAG_XML('xNome',xEmit)
			xEmit:=TAG_XML('emit',xConteudo)
			xLgr:=TAG_XML('xLgr',xEmit)
			xEmit:=TAG_XML('emit',xConteudo)
			xNro:=TAG_XML('nro',xEmit)
			xEmit:=TAG_XML('emit',xConteudo)
			xxBairro:=TAG_XML('xBairro',xEmit)
			xEmit:=TAG_XML('emit',xConteudo)
			xcMun:=TAG_XML('cMun',xEmit)
			xEmit:=TAG_XML('emit',xConteudo)
			xxMun:=TAG_XML('xMun',xEmit)
			xEmit:=TAG_XML('emit',xConteudo)
			xCEP:=TAG_XML('CEP',xEmit)
			xEmit:=TAG_XML('emit',xConteudo)
			xUF:=TAG_XML('UF',xEmit)
			xEmit:=TAG_XML('emit',xConteudo)
			xFone:=TAG_XML('fone',xEmit)
			
			xRem:=TAG_XML('rem',xConteudo)
			xrCnpj:=TAG_XML('CNPJ',xRem)
			xRem:=TAG_XML('rem',xConteudo)
			xrIE:=TAG_XML('IE',xRem)
			xRem:=TAG_XML('rem',xConteudo)
			xrNome:=TAG_XML('xNome',xRem)
			xRem:=TAG_XML('rem',xConteudo)
			xrFone:=TAG_XML('fone',xRem)
			xRem:=TAG_XML('rem',xConteudo)
			xrLgr:=TAG_XML('xLgr',xRem)
			xRem:=TAG_XML('rem',xConteudo)
			xrNro:=TAG_XML('nro',xRem)
			xRem:=TAG_XML('rem',xConteudo)
			xrcMun:=TAG_XML('cMun',xRem)
			xRem:=TAG_XML('rem',xConteudo)
			xrxMun:=TAG_XML('xMun',xRem)
			xRem:=TAG_XML('rem',xConteudo)
			xrCep:=TAG_XML('CEP',xRem)
			xRem:=TAG_XML('rem',xConteudo)
			xrUF:=TAG_XML('UF',xRem)
			xRem:=TAG_XML('rem',xConteudo)
			xrcPais:=TAG_XML('cPais',xRem)
			xRem:=TAG_XML('rem',xConteudo)
			xrxPais:=TAG_XML('xPais',xRem)
			xRem:=TAG_XML('rem',xConteudo)
			xrBairro:=TAG_XML('xBairro',xRem)
			
			xDest:=TAG_XML('dest',xConteudo)
			xdCnpj:=TAG_XML('CNPJ',xDest)
			xDest:=TAG_XML('dest',xConteudo)
			xdIE:=TAG_XML('IE',xDest)
			xDest:=TAG_XML('dest',xConteudo)
			xdNome:=TAG_XML('xNome',xDest)
			xDest:=TAG_XML('dest',xConteudo)
			xdFone:=TAG_XML('fone',xDest)
			xDest:=TAG_XML('dest',xConteudo)
			xdxLgr:=TAG_XML('xLgr',xDest)
			xDest:=TAG_XML('dest',xConteudo)
			xdNro:=TAG_XML('Nro',xDest)
			xDest:=TAG_XML('dest',xConteudo)
			xdBairro:=TAG_XML('xBairro',xDest)
			xDest:=TAG_XML('dest',xConteudo)
			xdcMun:=TAG_XML('cMun',xDest)
			xDest:=TAG_XML('dest',xConteudo)
			xdxMun:=TAG_XML('xMun',xDest)
			xDest:=TAG_XML('dest',xConteudo)
			xdCEP:=TAG_XML('CEP',xDest)
			xDest:=TAG_XML('dest',xConteudo)
			xdUF:=TAG_XML('UF',xDest)
			xDest:=TAG_XML('dest',xConteudo)
			xdcPais:=TAG_XML('cPais',xDest)
			xDest:=TAG_XML('dest',xConteudo)
			xdxPais:=TAG_XML('xPais',xDest)
			
			xvPrest:=TAG_XML('vPrest',xConteudo)
			xvTPrest:=TAG_XML('vTPreste',xvPrest)					
			xImp:=TAG_XML('imp',xConteudo)
			xvTotTrib:=TAG_XML('vTotTrib',xImp)
			xImp:=TAG_XML('imp',xConteudo)
			xCST:=TAG_XML('CST',xImp)
			xImp:=TAG_XML('imp',xConteudo)
			xvBC:=TAG_XML('vBC',xImp)
			xImp:=TAG_XML('imp',xConteudo)
			xpICMS:=TAG_XML('pICMS',xImp)
			xImp:=TAG_XML('imp',xConteudo)
			xvICMS:=TAG_XML('vICMS',xImp)
						
			** xToma: Indicador do "papel" do tomador do serviço no CT-e.
			** 0-Remetente; 1-Expedidor; 2-Recebedor; 3-Destinatário.
			
			** só quero os CT aonde o Remetente (VOLP) é o tomador, ou seja, quem paga
			if xToma<>'0'
				loop
			endif		
			
			** checar se esse conhecimento já não está gravado
			** usar o nct + cnpj da transportadora
			q:="select nct, emit_cnpj from ctranspc where nct='"+xNct+"' and emit_cnpj='"+xCnpj+"'"
			v:=F_GETCON(q)
	
			if len(v)>0
				alert("Existe registro com este NCT e CNPJ cadastrado; Registro nao pode ser duplicado")
				RETURN NIL
			endif
			
			** hora da emissao
			q:="select dhemi from ctranspc"
			v:=F_GETCON(q)
			
			if len(v)==0
				loop
			endif
			
			xdhEmi:=v[1,1]
			xDatXML    :=subs(xdhEmi,1,10)
			xHoraXML   :=subs(xdhEmi,12,08)
			
			@ 20,03 say "Data da Emissao:  "+xDatXML
			@ 21,03 say "Hora da Emissao:  "+xHoraXML
		
										
			** Dados da transportadora
			cCnpj:=subs(xCnpj,1,2)+"."+subs(xCnpj,3,3)+"."+subs(xCnpj,6,3)+"/"+subs(xCnpj,9,4)+"-"+subs(xCnpj,13,2)
			@ 09,03 say "Emitente:"
			@ 10,03 say "Cnpj	 : "+cCnPj
			
			
			q:="select razao,codfor from fornec where grufor='11' and fr_volp='S' and cgc='"+cCnpj+"'"
			w:=F_GETCON(q)
			if len(w)==0
				loop
			endif
			xRazao :=w[1,1]
			xCodFor:=w[1,2]
			@ 11,03 say "  Razao Social: "+xRazao
			
			** Dados da NF
			q:="select bnnf,pesob,valtot from notac where chavenfe='"+xChaveNfe+"'"
			w:=F_GETCON(q)
			if len(w)==0
				loop
			endif
			xBnnf 	:=w[1,1]
			xpesob	:=w[1,2]
			xvaltot :=w[1,3]
			
			@ 12,03 say "  Chave Nfe: "+xChaveNfe
			@ 13,03 say "  Nfe: "+xBnnf			
			
			vc:={}
			aadd(vc,{"datcad","curDate()",.T.,xDatcad})
			aadd(vc,{"horcad","curTime()",.T.,xHorcad})
			aadd(vc,{"quemcad",pCodUsu})
			aadd(vc,{"xml",xNomeArq})
			aadd(vc,{"dataxml",xDatXML})
			aadd(vc,{"horacad",xHoraXML})
			aadd(vc,{"nct",xNct})
			aadd(vc,{"dhemi",xDhemi})
			aadd(vc,{"cmunenv",xcMunEnv})
			aadd(vc,{"xmunenv",xxMunEnv})
			aadd(vc,{"ufenv",xUFEnv})
			aadd(vc,{"cmunini",xcMunIni})
			aadd(vc,{"xmunini",xxMunIni})
			aadd(vc,{"ufini",xUFIni})
			aadd(vc,{"cmunfim",xcMunFim})
			aadd(vc,{"xmunfim",xxMunFim})
			aadd(vc,{"uffim",xUFFim})
			
			aadd(vc,{"emit_cnpj",cCnpj})
			aadd(vc,{"emit_ie",xIE})
			aadd(vc,{"emit_xnome",xxNome})
			aadd(vc,{"emit_xlgr",xLgr})
			aadd(vc,{"emit_xnro",xNro})
			aadd(vc,{"emit_xbairro",xxBairro})
			aadd(vc,{"emit_cmun",xcMun})
			aadd(vc,{"emit_xmun",xxMun})
			aadd(vc,{"emit_cep",xCEP})
			aadd(vc,{"emit_uf",xUF})
			aadd(vc,{"emit_fone",xFone})
			
			aadd(vc,{"rem_cnpj",xrCnpj})
			aadd(vc,{"rem_ie",xrIE})
			aadd(vc,{"rem_xnome",xrNome})
			aadd(vc,{"rem_fone",xrFone})
			aadd(vc,{"rem_xlgr",xrLgr})
			aadd(vc,{"rem_nro",xrNro})
			aadd(vc,{"rem_xbairro",xrBairro})
			aadd(vc,{"rem_cmun",xrcMun})
			aadd(vc,{"rem_xmun",xrxMun})
			aadd(vc,{"rem_cep",xrCep})
			aadd(vc,{"rem_uf",xrUF})
			aadd(vc,{"rem_cpais",xrcPais})
			aadd(vc,{"rem_xpais",xrxPais})
			
			aadd(vc,{"exped_cnpj",cCnpj})	
			aadd(vc,{"exped_ie",xIE})
			aadd(vc,{"exped_xnome",xxNome})
			aadd(vc,{"exped_fone",xFone})
			aadd(vc,{"exped_xlgr",xLgr})
			aadd(vc,{"exped_nro",xNro})
			aadd(vc,{"exped_xbairro",xxBairro})
			aadd(vc,{"exped_cmun",xcMun})
			aadd(vc,{"exped_xmun",xxMun})
			aadd(vc,{"exped_cep",xCEP})
			aadd(vc,{"exped_uf",xUF})
			aadd(vc,{"exped_cpais",xdcPais})
			aadd(vc,{"exped_xpais",xdxPais})
	
			aadd(vc,{"receb_cnpj",xrCnpj})
			aadd(vc,{"receb_ie",xrIE})
			aadd(vc,{"receb_xnome",xrNome})
			aadd(vc,{"receb_fone",xrFone})
			aadd(vc,{"receb_xlgr",xrLgr})
			aadd(vc,{"receb_nro",xrNro})
			aadd(vc,{"receb_xbairro",xrBairro})
			aadd(vc,{"receb_cmun",xrcMun})
			aadd(vc,{"receb_xmun",xrxMun})
			aadd(vc,{"receb_cep",xrCep})
			aadd(vc,{"receb_uf",xrUF})
			aadd(vc,{"receb_cpais",xrcPais})
			aadd(vc,{"receb_xpais",xrxPais})
			
			aadd(vc,{"dest_cnpj",xdCnpj})
			aadd(vc,{"dest_ie",xdIE})
			aadd(vc,{"dest_xnome",xdNome})
			aadd(vc,{"dest_fone",xdFone})
			aadd(vc,{"dest_xlgr",xdxLgr})
			aadd(vc,{"dest_nro",xdNro})
			aadd(vc,{"dest_xbairro",xdBairro})
			aadd(vc,{"dest_cmun",xdcMun})
			aadd(vc,{"dest_xmun",xdxMun})
			aadd(vc,{"dest_cep",xdCEP})
			aadd(vc,{"dest_uf",xdUF})
			aadd(vc,{"dest_cpais",xdcPais})
			aadd(vc,{"dest_xpais",xdxPais})
			
			aadd(vc,{"vtprest",xvTPrest})
			aadd(vc,{"icms_cst",xCST})
			aadd(vc,{"icms_vbc",xvBC})
			aadd(vc,{"icms_picms",xpICMS})
			aadd(vc,{"icms_vicms",xvICMS})
	
			aadd(vc,{"vtottrib",xvTotTrib})
			aadd(vc,{"chave",xChaveNfe})
			aadd(vc,{"bnnf",xBnnf})
			aadd(vc,{"valornf",xvaltot})
			aadd(vc,{"pesob",xpesob})
			aadd(vc,{"codtra",xcodfor})
			
			q:=F_MONTAQUERY(vc,"ctranspc",.T.)
			
			F_MOSTRAQ(q)
			
			F_TRANSACTION({q})

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Enviado: 15 Out 2021 10:28
por JoséQuintas
Não olhei o resto, mas.... tá testando se tem o que na pasta?

Código: Selecionar todos

     cPasta:=alltrim(xPasta)
      if subs(cPasta,len(cPasta),1)<>"\"
         cPasta+="\"
      endif
      
      nLen:=ADIR(alltrim(xPasta))
      if nLen==0
         alert("Nenhum arquivo salvo nesta pasta")
         loop
      endif

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Enviado: 15 Out 2021 10:31
por ti02
tenho arquivos de NFe em Xml

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Enviado: 15 Out 2021 12:22
por JoséQuintas
ti02 escreveu:tenho arquivos de NFe em Xml
pasta\*.xml

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Enviado: 15 Out 2021 12:27
por JoséQuintas
Só comentário:

O DEBUG do Harbour ajuda muito nisso, é só acompanhar passo a passo com ele, linha a linha do fonte em execução.

https://pctoledo.org/forum/viewto ... 57&t=26031

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Enviado: 15 Out 2021 12:43
por ti02
Qual linha eu insiro esse codigo toodo do debug?

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Enviado: 15 Out 2021 13:13
por JoséQuintas
O debug é pra acompanhar SEU FONTE.

o fonte da imagem é apenas um fonte qualquer em debug.

Mas já passei o que falta no seu fonte.

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Enviado: 15 Out 2021 15:55
por JoséQuintas
Sendo mais claro:

Seu teste pra ver se tem arquivos na pasta está errado.
Cadê o *.XML ?

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Enviado: 18 Out 2021 09:44
por ti02
Ah, entendi. Quer dizer, o erro foi que eu não tinha na base de dados os xmls antigos.. obrigado.

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Enviado: 18 Out 2021 11:06
por JoséQuintas
ti02 escreveu:Ah, entendi. Quer dizer, o erro foi que eu não tinha na base de dados os xmls antigos.. obrigado.
Tá de sacanagem?

Aonde, nessa rotina, você acha que vai pegar algum arquivo XML?