diff options
author | Jean-Pierre Ledure <jp@ledure.be> | 2016-11-02 16:51:12 +0100 |
---|---|---|
committer | Jean-Pierre Ledure <jp@ledure.be> | 2016-11-02 16:56:11 +0100 |
commit | 9e93ae3ddc2262ae98abf1ce50a5ea154bd00192 (patch) | |
tree | 1cb0fd1c6d05e354849c20981b4606d71d5b7efa | |
parent | f9f1042773795aa82bc0034122fac8271e3dabc7 (diff) |
Access2Base - Simplify CopyObject
Avoid Field object buffering in CopyObject
as it is now done in the Recordset class
Change-Id: I35ee9e953e27554cb361adbb22baa619e4b73aaf
-rw-r--r-- | wizards/source/access2base/DoCmd.xba | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/wizards/source/access2base/DoCmd.xba b/wizards/source/access2base/DoCmd.xba index f85f3c0f615d..d13bce69b93e 100644 --- a/wizards/source/access2base/DoCmd.xba +++ b/wizards/source/access2base/DoCmd.xba @@ -209,7 +209,7 @@ Dim oSourceTable As Object, oSourceColumns As Object, oSourceCol As Object, oTar Dim oSourceKeys As Object, oSourceKey As Object, oTargetKey As Object Dim i As Integer, j As Integer, sSql As String, vPrimaryKeys() As Variant Dim vNameComponents() As Variant, iNames As Integer, sSurround As String -Dim vInputFields() As Variant, vFieldBinary() As Variant, vOutputFields() As Variant +Dim vInputField As Variant, vFieldBinary() As Variant, vOutputField As Variant Dim oInput as Object, oOutput As Object, iNbFields As Integer, vValue As Variant Dim vBinary As Variant, lInputSize As Long, lOutputSize As Long Dim lInputRecs As Long, lInputMax As Long, vField As Variant, bProgressMeter As Boolean, sFile As String @@ -318,14 +318,10 @@ Const cstProgressMeterLimit = 100 bProgressMeter = ( lInputMax > cstProgressMeterLimit ) iNbFields = .Fields().Count - 1 - vInputFields = Array() vFieldBinary = Array() - vOutputFields = Array() - ReDim vInputFields(0 To iNbFields), vFieldBinary(0 To iNbFields), vOutputFields(0 To iNbFields) + ReDim vFieldBinary(0 To iNbFields) For i = 0 To iNbFields - Set vInputFields(i) = .Fields(i) - vFieldBinary(i) = Utils._IsBinaryType(vInputFields(i).Column.Type) - Set vOutputFields(i) = oOutput.Fields(i) + vFieldBinary(i) = Utils._IsBinaryType(.Fields(i).Column.Type) Next i Else bProgressMeter = False @@ -335,20 +331,22 @@ Const cstProgressMeterLimit = 100 oOutput.RowSet.moveToInsertRow() oOutput._EditMode = dbEditAdd For i = 0 To iNbFields + Set vInputField = .Fields(i) + Set vOutputField = oOutput.Fields(i) If vFieldBinary(i) Then - lInputSize = vInputFields(i).FieldSize + lInputSize = vInputField.FieldSize If lInputSize <= cstMaxBinlength Then vField = Utils._getResultSetColumnValue(.RowSet, i + 1, True) Utils._updateResultSetColumnValue(iRDBMS, oOutput.RowSet, i + 1, vField) ElseIf oDatabase._BinaryStream Then ' Typically for SQLite where binary fields are limited - If lInputSize > vOutputFields(i).Column.Precision Then - TraceError(TRACEWARNING, ERRPRECISION, Utils._CalledSub(), 0, 1, Array(vOutputFields(i)._Name, lInputRecs + 1)) + If lInputSize > vOutputField.Column.Precision Then + TraceError(TRACEWARNING, ERRPRECISION, Utils._CalledSub(), 0, 1, Array(vOutputField._Name, lInputRecs + 1)) Utils._updateResultSetColumnValue(iRDBMS, oOutput.RowSet, i + 1, Null) Else sFile = Utils._GetRandomFileName("BINARY") - vInputFields(i)._WriteAll(sFile, "WriteAllBytes") - vOutputFields(i)._ReadAll(sFile, "ReadAllBytes") + vInputField._WriteAll(sFile, "WriteAllBytes") + vOutputField._ReadAll(sFile, "ReadAllBytes") Kill ConvertToUrl(sFile) End If End If |