Public Sub load_array(strSQL1 As String, strTemp As String)
' NEED to pass SQL, TEMP file name
'Determine SQL to run
'- for now, restrict to each meter, for days running back
'- if meter or date select, reset
'Find size of array needed
'Define array
'Set cursor and load array
'Delete temp file
'Create temp file
'Prime temp file with data from array
Dim dbs As DAO.Database, rstR As DAO.Recordset, rstd As DAO.Recordset, rstt As DAO.Recordset
Dim intR As Long, intI As Long
Dim strSQL As String
Dim intMeter As Integer, intMid As Integer, intRid As Integer
Dim intRead As Integer, intPrev As Integer, intConsump As Integer, intDaysBN As Integer
Dim arMeter() As Long
Dim arDate() As Date
Dim arStatus() As String
Dim arAvgConsump() As Single
Dim arComments() As Variant
intMid = 1
intRid = 2
intRead = 3
intPrev = 4
intConsump = 5
intDaysBN = 6
Set dbs = CurrentDb()
Set rstR = dbs.OpenRecordset(strSQL1)
intR = rstR.RecordCount
If intR > 0 Then
rstR.MoveLast
intR = rstR.RecordCount
rstR.MoveFirst
ReDim arMeter(1 To 6, 1 To intR)
ReDim arDate(1 To intR)
ReDim arStatus(1 To intR)
ReDim arComments(1 To intR)
ReDim arAvgConsump(1 To intR)
'Make table from call routine
'Have to delete the table before here b/c it may be in use
'This is now the responsibility of the calling module
'MakeTempTable False, strTemp
MakeTempTable True, strTemp
Set rstt = dbs.OpenRecordset(strTemp)
intMeter = 0
[COLOR=blue]
For intI = 1 To intR
arMeter(intMid, intI) = rstR!meter_id
arMeter(intRid, intI) = rstR!read_id
arMeter(intRead, intI) = rstR!read
arDate(intI) = rstR!read_date
arStatus(intI) = rstR!get_var_name
arComments(intI) = rstR!comments
If intMeter <> arMeter(intMid, intI) Then
intMeter = arMeter(intMid, intI)
arMeter(intPrev, intI) = 0
arMeter(intConsump, intI) = arMeter(intRead, intI) - arMeter(intPrev, intI)
arMeter(intDaysBN, intI) = 0
arAvgConsump(intI) = 0
Else
arMeter(intPrev, intI) = arMeter(intRead, intI - 1)
arMeter(intConsump, intI) = arMeter(intRead, intI) - arMeter(intPrev, intI)
arMeter(intDaysBN, intI) = DateDiff("d", arDate(intI - 1), arDate(intI))
arAvgConsump(intI) = Format(arMeter(intConsump, intI) / arMeter(intDaysBN, intI))
End If
[/color]
[COLOR=red]
With rstt
.AddNew
!read_id = arMeter(intRid, intI)
!meter_id = arMeter(intMid, intI)
!read_date = arDate(intI)
!status = arStatus(intI)
!comments = arComments(intI)
!read = arMeter(intRead, intI)
!lngPrev = arMeter(intPrev, intI)
!lngConsump = arMeter(intConsump, intI)
!lngDaysBN = arMeter(intDaysBN, intI)
!lngAvgConsump = arAvgConsump(intI)
.Update
End With
rstR.MoveNext
[/color]
Next intI
rstt.Close
End If
rstR.Close
End Sub