Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Eventi di salvataggio VBA
Come vengono gestiti i recordset di Input e quelli di Output
2
Eventi di salvataggio VBA
VBASalvaPre(ByRef a_arstRecordsetArray() As Variant , ... , ByRef a_vntRecordsetArray() As ADODB.Recordset, a_blnVBACancel) Entrambi gli eventi VBA hanno un vettore di recordset di Input e uno di Output Codice eseguito da e/: If not a_blnVBACancel Then a_vntRecordsetArray() = Business.Salva(..., a_arstRecordsetArray() , ... ) End If VBASalvaPost(ByRef a_arstRecordsetArray() As Variant, ... , ByRef a_vntRecordsetArray() As ADODB.Recordset) a_arstRecordsetArray() = Array di RecordSet di input a_vntRecordsetArray() = Array di RecordSet di output Il vettore di Input è dichiarato come Variant, quello di Output è tipizzato e dichiarato come ADODB.Recordset
3
Eventi di salvataggio VBA
Rs_I Rs_O a_blnVBACancel VBASalvaPre Tramite il parametro VBACancel dell’evento SalvaPre si può saltare l’esecuzione del Salva standard dello user. Se VBACancel vale True lo user non esegue il salva standard del business… True Business.Salva RS_I = Array di RecordSet di input RS_O = Array di RecordSet di output
4
Eventi di salvataggio VBA
Rs_I Rs_O a_blnVBACancel VBASalvaPre … e i vettori dei recordset di input e output vengono passati direttamente all’evento VBASalvaPost True Business.Salva VBASalvaPost Rs_I Rs_O RS_I = Array di RecordSet di input RS_O = Array di RecordSet di output
5
Eventi di salvataggio VBA
Rs_I Rs_O a_blnVBACancel VBASalvaPre Alla fine del processo di salvataggio i recordset di output vengono utilizzati per riempire i campi della gestione dalla RecordAControlli. True Business.Salva VBASalvaPost Rs_I Rs_O RecordAControlli RS_I = Array di RecordSet di input RS_O = Array di RecordSet di output
6
Eventi di salvataggio VBA
Rs_I Rs_O a_blnVBACancel VBASalvaPre Lasciando invece inalterato il parametro a_blnVBACancel (a_blnVBACancel = false) lo user esegue il salva standard dopo l’evento VBASalvaPre… False Business.Salva RS_I = Array di RecordSet di input RS_O = Array di RecordSet di output
7
Eventi di salvataggio VBA
Rs_I Rs_O a_blnVBACancel VBASalvaPre … e i recordset di input vengono utilizzati dal salva standard del business che si occupa di ricreare i recordset di Output False Business.Salva RS_I = Array di RecordSet di input RS_O = Array di RecordSet di output
8
Eventi di salvataggio VBA
Rs_I Rs_O a_blnVBACancel VBASalvaPre I recordset di input vengono usati dal salva standard per eseguire il salvataggio dei dati e poi passati all’evento VBA I recordset di output vengono invece ricreati dal business e quindi passati VBASalvaPost… False Business.Salva Rs_O VBASalvaPost Rs_I Rs_O RS_I = Array di RecordSet di input RS_O = Array di RecordSet di output
9
Eventi di salvataggio VBA
Rs_I Rs_O a_blnVBACancel VBASalvaPre … che viene poi utilizzato per riempire i campi dello user. False Business.Salva Rs_O VBASalvaPost Rs_I Rs_O RecordAControlli RS_I = Array di RecordSet di input RS_O = Array di RecordSet di output
10
Come utilizzare gli eventi di salvataggio VBA
Evento VBASalvaPre Evento VBASalvaPost Si possono modificare i recordset di input per scegliere i dati con cui il salva standard del business eseguirà l’operazione di salvataggio Utilizzare a_blnVBACancel per saltare eventualmente l’esecuzione del salva standard, in questo modo è possibile anche estendere la transazione Se si salta il salva standard è necessario impostare i vettori dei recordset di output dato che questa operazione verrebbe eseguita appunto dal salva del business. Il codice di esempio per fare questa operazione è: Utilizzare i valori dei recordset di input per sapere i dati della gestione prima del salvataggio Si possono modificare i recordset di output per gestire i valori con cui vengono riempiti i campi della gestione dopo il salvataggio L’evento VBASalvaPost viene eseguito indipendentemente da a_blnVBACancel, quindi sia che si sia scelto di saltare il salva standard sia che venga eseguito ReDim a_vntRecordsetArray(UBound(a_arstRecordsetArray)) As ADODB.Recordset For i = 0 To UBound(a_arstRecordsetArray) Set a_vntRecordsetArray(i) = a_arstRecordsetArray(i) Next i
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.