evertonlb Posted June 1, 2018 Report Share Posted June 1, 2018 Amigos. estou precisando de uma ideia/dica. Tenho um sistema para lojas que usa DBF, agora estou trocando para o MySql usando a SqlLib do nosso amigo Vailton. Ainda usarei os comandos do DBF. Acontece que na minha rotina de venda eu crio um arquivo temporário para que o sistema grave todos os itens vendidos nele, após o OK do caixa, quando a venda está concluída, ai gravo tudo no DBF definitivo. Com o MySql/SQLLib tem como fazer isso? Tipo, crio uma tabela, abro ela no modo exclusivo, gravo os dados dentro dela, depois mando pra tabela definitiva, e zero a temporária? Existe outra maneira mais prática de fazer a venda? Obrigado Att. Everton Battiston Quote Link to comment Share on other sites More sharing options...
Marca Posted June 1, 2018 Report Share Posted June 1, 2018 Bom dia Everton. Você pode continuar fazendo exatamente como faz hoje e ai invés de gravar no dbf definitivo você irá passar a gravar na sua tabela do Mysql. Quote Link to comment Share on other sites More sharing options...
emotta Posted June 1, 2018 Report Share Posted June 1, 2018 Continua criando o DBF temporario sendo DBF mesmo e somente após a conclusao ai vc grava na sua tabela no mysql. Acredito que tb foi isso que o Marca sugeriu acima Quote Link to comment Share on other sites More sharing options...
evertonlb Posted June 1, 2018 Author Report Share Posted June 1, 2018 Bom dia Everton. Você pode continuar fazendo exatamente como faz hoje e ai invés de gravar no dbf definitivo você irá passar a gravar na sua tabela do Mysql. Trabalhar com DBF e MySql juntos? Não sei como abro um DBF usando a SQLLib.. Att. Everton Battiston Quote Link to comment Share on other sites More sharing options...
Marca Posted June 1, 2018 Report Share Posted June 1, 2018 Continua criando o DBF temporario sendo DBF mesmo e somente após a conclusao ai vc grava na sua tabela no mysql. Acredito que tb foi isso que o Marca sugeriu acima Exatamente isso. Everton. Não muda nada Na criação de seu temporário DbCreate( cFileName, aCopyStructure, "DBFCDX",.T., cTmpAlias) Ou se preferir antes de criar RddSetDefault( 'DBFCDX' ) Depois retorne para RddSetDefault( 'MySQL' ) Quote Link to comment Share on other sites More sharing options...
emotta Posted June 1, 2018 Report Share Posted June 1, 2018 Everton é normal, com DBUSEAREA mas vc informa que a RDD é DBFCDX em alguns dos parametros do DBUSEAREA ou DBCREATE vc faz isso Quote Link to comment Share on other sites More sharing options...
Wellington Vieira Posted June 1, 2018 Report Share Posted June 1, 2018 Bom dia, Trabalho com postgresql e dbf Em casos que preciso de um temporário rápido e simples, eu aindo utilizo o dbf, mas sempre recrio o dbf ao invés de apagar os seus dados..conforme um exemplo abaixo. // No arquivo pricipal.. ( Para dbf..) ( arquivos temporários) request dbfcdx dbsetdriver("dbfcdx") rddsetdefault("dbfcdx") // Arquivo temporário para dbf..... mArq = "Tmp" + left(time(), 2) + substr(time(), 4, 2) + right(time(), 2) + ".dbf" mAli = "Tmp" + left(time(), 2) + substr(time(), 4, 2) + right(time(), 2) + "1" mInd = "Tmp" + left(time(), 2) + substr(time(), 4, 2) + right(time(), 2) + ".cdx" banco := {} aadd(banco,{"bbase1" ,"c",45,0}) // trazaosocial aadd(banco,{"bbase2" ,"n",10,0}) // tnumerodopedido aadd(banco,{"bbase3" ,"d",08,0}) // tdataemissao aadd(banco,{"bbase31","c",10,0}) // nota fiscal aadd(banco,{"bbase4" ,"n",15,2}) // ttotalnotafiscal aadd(banco,{"bcupom","c",10,0}) // cupom fiscal aadd(banco,{"btotcp","n",15,2}) // total do cupom fiscal aadd(banco,{"bbase5" ,"n",01,0}) // ttipovenda aadd(banco,{"bbase6" ,"n",15,2}) // ttotaldopedido aadd(banco,{"bbase7" ,"n",15,0}) // sequencia do pedido aadd(banco,{"bbase8" ,"c",60,0}) // representante aadd(banco,{"bbase9" ,"n",01,0}) // tipo preco aadd(banco,{"bbase10","n",15,2}) // Quantidade de peças aadd(banco,{"ccan" ,"n",01,0}) dbcreate("&mArq", banco) select 99 set exclusive on use &mArq alias &mAli via "dbfcdx" index on dtoc(bbase3) + str(bbase2) tag bater1 to &mInd index on bbase1 + dtoc(bbase3) + str(bbase2) tag bater2 to &mInd index on bbase8 + dtoc(bbase3) + str(bbase2) tag bater3 to &mInd set index to &mInd additive go top //--------------------------------------------------------------- // Efetua todos os procedimentos da aplicação aqui.... //--------------------------------------------------------------- // Só depois de encerrado fecha e apaga o arquivo.... select 99 close all // no meu caso eu fecho todo e qualquer arquivo dbf aberto ( mas pode somente fechar o banco em questão ). delete file &nArq ---------------------------------------------------------------------------------------------------------------------- //No arquivo principal para o postgresql..... fwait(" ...Tentativa acesso 1 ...") // dialog chamada (odlgwait) com a informação " ...Tentativa acesso 1 ..." nn = 0 ns = "S" do while .t. // Pega os dados a partir de um xml gravado na pasta do software. cserver = abrir_xml(cDirXML,"server") // acesso ao postgresql ( ex: 127.0.0.01) cdatabase = abrir_xml(cDirXML,"database") // nome da base ( ex: wsiscom ) cuser = abrir_xml(cDirXML,"user") // nome do usuário ( ex: postgresql) cpass = abrir_xml(cDirXML,"pass") // senha da base de dados ( ex: xxxxxx) // usando a contrib PGSQL do xharbour oserver := tpqserver():new(cserver, cdatabase, cuser, cpass) if oserver:neterr() oserver = "" if nn = 1 odlgwait:end() fwait(" ...Tentativa acesso 2 ...") SysWait(3) elseif nn = 2 odlgwait:end() fwait(" ...Tentativa acesso 3 ...") SysWait(3) elseif nn = 3 odlgwait:end() fwait(" ...Tentativa acesso 4 ...") SysWait(3) elseif nn = 4 odlgwait:end() fwait(" ...Tentativa acesso 5 ...") SysWait(3) elseif nn = 5 ns = "N" exit endif else exit endif ++nn loop enddo if ns = "N" odlgwait:end() ferase(cDirXML) // apaga o arquivo xml, para se criar outro com as informações de acesso ao postgresql corretos.. msgstop("Erro de conexão com a base de dados. Contate o suporte","Atenção") return nil else odlgwait:end() endif Quote Link to comment Share on other sites More sharing options...
evandro Posted June 1, 2018 Report Share Posted June 1, 2018 Olá, No MySql cria-se tabela temporária também e é o que recomendo pois o ideal é caminhar para não ter nada escrito em forma de DBF. Aí pode-se parar de utilizar qualquer lib externa. aferra 1 Quote Link to comment Share on other sites More sharing options...
evertonlb Posted June 1, 2018 Author Report Share Posted June 1, 2018 Valeu pessoal... na realidade o que era urgente, perdeu a urgencia... kkkk agora tenho que resolver outras coisas.. vou deixar isso pra depois.. Obrigado a todos.. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.