Alterar campo de um DBF via sistema
Enviado: 21 Jul 2020 06:30
Altere a cadeia de conexão após a instalação do provedor VFP OLE DB.
Em homenagem a Paulo Cesar Toledo
https://pctoledo.org/
Cheguei a ver isso na SIXCDX para o Clipper 5.2Itamar M. Lins Jr. escreveu:Eu nem sabia que era assim o VARIANTE. O campo aceita tudo, qualquer coisa: DATE/LOGICAL/NUMERIC/CHAR
Código: Selecionar todos
IF Str( :Number( "BASALDO" ), 16, 2 ) != Str( nSaldo, 16, 2 )
Código: Selecionar todos
FUNCTION BARecalcula() // , dDataInicial, m_RecGeral )
LOCAL cConta, cAplic, nSaldo, dBanco, dEmissao, cImpSld
LOCAL cnSQL := ADOClass():New( AppConexao() )
Mensagem( "Recalculando" )
WITH OBJECT cnSQL
:cSQL := "SELECT BACONTA, BAAPLIC, IDBANCARIO, BADATBAN, BADATEMI, BAVALOR, BASALDO, BAIMPSLD" + ;
" FROM JPBANCARIO" + ;
" ORDER BY BACONTA, BAAPLIC, BADATBAN, BADATEMI, IDBANCARIO"
:Execute()
GrafTempo( "Fase1" )
DO WHILE ! :Eof()
cConta := :String( "BACONTA" )
cAplic := :String( "BAAPLIC" )
nSaldo := 0
DO WHILE cConta == :String( "BACONTA" ) .AND. cAplic == :String( "BAAPLIC" ) .AND. ! :Eof()
GrafTempo( :AbsolutePosition(), :RecordCount() )
nSaldo += :Number( "BAVALOR" )
IF Str( :Number( "BASALDO" ), 16, 2 ) != Str( nSaldo, 16, 2 )
:QueryCreate()
:QueryAdd( "BASALDO", nSaldo )
Encontra( StrZero( :Number( "IDBANCARIO" ), 6 ), "jpbancario", "primary" )
jpbancario->( :DBFQueryExecuteUpdate() )
:QueryExecuteUpdate( "JPBANCARIO", "IDBANCARIO = " + NumberSQL( :Number( "IDBANCARIO" ) ) )
ENDIF
:MoveNext()
ENDDO
ENDDO
:CloseRecordset()
:cSQL := "SELECT BACONTA, BAAPLIC, IDBANCARIO, BADATBAN, BADATEMI, BAVALOR, BASALDO, BAIMPSLD" + ;
" FROM JPBANCARIO" + ;
" ORDER BY BACONTA DESC, BAAPLIC DESC, BADATBAN DESC, BADATEMI DESC, IDBANCARIO DESC"
:Execute()
GrafTempo( "Fase 2" )
dBanco := Ctod("")
dEmissao := Ctod("")
cConta := :String( "BACONTA" )
cAplic := :String( "BAAPLIC" )
DO WHILE ! :Eof()
GrafTempo( :AbsolutePosition(), :RecordCount() )
IF cConta != :String( "BACONTA" ) .OR. ;
cAplic != :String( "BAAPLIC" ) .OR. ;
dBanco != :Date( "BADATBAN" ) .OR. ;
( dBanco = Stod( "29991231" ) .AND. dEmissao != :Date( "BADATEMI" ) )
cImpSld := "S"
ELSE
cImpSld := "N"
ENDIF
IF :Number( "BAVALOR" ) == 0
cImpSld := "N"
ENDIF
IF :String( "BAIMPSLD" ) != cImpSld
:QueryCreate()
:QueryAdd( "BAIMPSLD", cImpSld )
jpbancario->( Encontra( StrZero( :Number( "IDBANCARIO" ), 6 ), "jpbancario", "primary" ) )
jpbancario->( :DBFQueryExecuteUpdate() )
:QueryExecuteUpdate( "JPBANCARIO", "IDBANCARIO = " + NumberSQL( :Number( "IDBANCARIO" ) ) )
ENDIF
cConta := :String( "BACONTA" )
cAplic := :String( "BAAPLIC" )
dBanco := :Date( "BADATBAN" )
dEmissao := :Date( "BADATEMI" )
:MoveNext()
ENDDO
:CloseRecordset()
ENDWITH
RETURN .T.