ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR
Moderador: Moderadores
ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR
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?
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR
Olá ti02,
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...
Com todo respeito, mas a resposta seria: "Alguma ou muita coisa com certeza".ti02 escreveu:contudo, não esta inserindo os dados na tabela. O que pode ser?
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)
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)
ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR
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
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
- JoséQuintas
- 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
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/
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/
- JoséQuintas
- 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
pasta\*.xmlti02 escreveu:tenho arquivos de NFe em 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/
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/
- JoséQuintas
- 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
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
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/
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/
- JoséQuintas
- 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
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.
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/
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/
- JoséQuintas
- 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
Sendo mais claro:
Seu teste pra ver se tem arquivos na pasta está errado.
Cadê o *.XML ?
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/
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/
ADICIONAR XML NO BANCO DE DADOS ATRAVES DO HARBOUR
Ah, entendi. Quer dizer, o erro foi que eu não tinha na base de dados os xmls antigos.. obrigado.
- JoséQuintas
- 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
Tá de sacanagem?ti02 escreveu:Ah, entendi. Quer dizer, o erro foi que eu não tinha na base de dados os xmls antigos.. obrigado.
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/
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/
