Jump to content
Fivewin Brasil

O que é melhor?


evertonlb

Recommended Posts

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

Link to comment
Share on other sites

 

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

Link to comment
Share on other sites

 

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' )
 

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...