ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

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

Moderador: Moderadores

ti02
Usuário Nível 1
Usuário Nível 1
Mensagens: 10
Registrado em: 06 Out 2021 10:15
Localização: Osasco-SP

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Mensagem 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?
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Mensagem 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...
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)
ti02
Usuário Nível 1
Usuário Nível 1
Mensagens: 10
Registrado em: 06 Out 2021 10:15
Localização: Osasco-SP

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Mensagem 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})
Editado pela última vez por JoséQuintas em 15 Out 2021 10:24, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
ti02
Usuário Nível 1
Usuário Nível 1
Mensagens: 10
Registrado em: 06 Out 2021 10:15
Localização: Osasco-SP

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Mensagem por ti02 »

tenho arquivos de NFe em Xml
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Mensagem por JoséQuintas »

ti02 escreveu:tenho arquivos de NFe em Xml
pasta\*.xml
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
ti02
Usuário Nível 1
Usuário Nível 1
Mensagens: 10
Registrado em: 06 Out 2021 10:15
Localização: Osasco-SP

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Mensagem por ti02 »

Qual linha eu insiro esse codigo toodo do debug?
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Mensagem por JoséQuintas »

Sendo mais claro:

Seu teste pra ver se tem arquivos na pasta está errado.
Cadê o *.XML ?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
ti02
Usuário Nível 1
Usuário Nível 1
Mensagens: 10
Registrado em: 06 Out 2021 10:15
Localização: Osasco-SP

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Mensagem por ti02 »

Ah, entendi. Quer dizer, o erro foi que eu não tinha na base de dados os xmls antigos.. obrigado.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR

Mensagem 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?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder