DBF pra MySQL
Enviado: 21 Set 2019 20:51
Aqui fica bem visível o uso da minha classe.
Apesar de ter que alterar o fonte, fica parecido com o fonte anterior.
Gravação do DBF e do MySQL.
cnMySql é o canal de comunicação, o "WhatsApp" com o servidor.
:QueryCreate() e :QueryAdd(), apenas criam uma lista
:QueryExecuteInsert() é a que faz todo trabalho de conversar com o servidor.
Tem mais coisas, além disso, nas rotinas, mas comparando com DBF, seria algo como isto:
Inclusive.... olhando agora... talvez mais interessante alterar a gravação de DBF pra usar o mesmo array do MySQL.
Desse jeito, o mesmo fonte serviria pra DBF e MySQL, ao invés de duplicar rotina.
A diferença seria só uma linha pra dbf e uma pra MySQL.
:QueryExecuteInsertDBF()
:QueryExecuteInsert()
Interessante.... vou pensar se vale a pena isso.
Apesar de ter que alterar o fonte, fica parecido com o fonte anterior.
Gravação do DBF e do MySQL.
Código: Selecionar todos
STATIC FUNCTION ImportaFinanceiro( oElement, oNFe, mCliCod, nParcela )
LOCAL IDFinanceiro, cnMySql := ADOClass():New( AppcnMySqlLocal() )
SELECT jpfinan
OrdSetFocus( "numlan" )
IDFinanceiro := NovoCodigo( "jpfinan->fiNumLan" )
RecAppend()
REPLACE ;
jpfinan->fiNumLan WITH IDFinanceiro, ;
jpfinan->fiTipLan WITH iif( oNFE:Emitente:Cnpj == jpempre->emCnpj, "1", "2" ), ;
jpfinan->fiNumDoc WITH oNFE:cNumDoc, ; // 9 digitos
jpfinan->fiDatEmi WITH oNFE:DataEmissao, ;
jpfinan->fiParcela WITH StrZero( nParcela, 3 ), ;
jpfinan->fiCliFor WITH mCliCod, ;
jpfinan->fiSacado WITH mCliCod, ;
jpfinan->fiValor WITH oElement:Valor, ;
jpfinan->fiDatVen WITH oElement:Vencimento, ;
jpfinan->fiDatEmi WITH oNFE:DataEmissao, ;
jpfinan->fiPedido WITH jppedi->pdPedido, ;
jpfinan->fiInfInc WITH LogInfo()
RecUnlock()
WITH OBJECT cnMySql
:QueryCreate()
:QueryAdd( "FINUMLAN", IDFinanceiro )
:QueryAdd( "FITIPLAN", iif( oNFE:Emitente:Cnpj == jpempre->emCnpj, "1", "2" ) )
:QueryAdd( "FINUMDOC", oNFE:cNumDoc )
:QueryAdd( "FIDATEMI", oNFE:DataEmissao )
;QueryAdd( "FIPARCELA", StrZero( nParcela, 3 ) )
:QueryAdd( "FICLIFOR", mCliCod )
:QueryAdd( "FISACADO", mCliCod )
;QueryAdd( "FIVALOR"< oElement:Valor )
:QueryAdd( "FIDATVEN", oELement:Vencimento )
:QueryAdd( "FIDATEMI", oNFE:DataEmissao )
:QueryAdd( "FIPEDIDO", jppedi->PdPedido )
:QueryAdd( "FIINFINC", LogInfo() )
:QueryExecuteInsert( "JPFINAN" )
ENDWITH
RETURN NIL
:QueryCreate() e :QueryAdd(), apenas criam uma lista
:QueryExecuteInsert() é a que faz todo trabalho de conversar com o servidor.
Tem mais coisas, além disso, nas rotinas, mas comparando com DBF, seria algo como isto:
Código: Selecionar todos
// QueryCreate()
aList := {}
// QueryAdd()
AAdd( aList, { "CODIGO", 10 } )
AAdd( aList, { "NOME", "JOSE" } )
//QueryExecuteInsert()
RecLock()
FOR EACH oElement IN aList
REPLACE &( oElement[ 1 ] ) WITH oElement[ 2 ]
// FieldPut( FIeldNum( oElement[ 1 ] ), oElement[ 2 ] )
NEXT
RecUnLock()
Desse jeito, o mesmo fonte serviria pra DBF e MySQL, ao invés de duplicar rotina.
A diferença seria só uma linha pra dbf e uma pra MySQL.
:QueryExecuteInsertDBF()
:QueryExecuteInsert()
Interessante.... vou pensar se vale a pena isso.