我有一个包含大约30个强制值字段的表,大约有300000条记录。以下示例:
Case Left Fx max Left Fx min Left Fx mean Right Fx max Right Fx min Right Fx mean
hs000p1600010od_fld_adi 749.26 -660.87 749.26 693.03 -624.13 693.03
hs000p1600010od_spd_adi 698.85 -665.51 698.85 744.15 -645.16 744.15
hs000p1600015od_fld_adi 787.11 -920.66 920.66 731.52 -893.89 893.89
hs000p1600015od_spd_adi 738.94 -917.11 917.11 793.17 -912.77 912.77
每条记录都有一个与标题和速度相对应的相同格式的唯一案例名称(例如 hs000p16 00015 od_fld_adi 有000个标题[3个字符]和15个spd [2 char])。
我想从特定字段(参见当前代码)中提取每个可能的速度和标题配置的最大值到包含相应字段名称的输出表“PolarForce”。
所需的输出格式
Left Fx mean Right Fx mean Third Fx mean Left Fy mean Right Fy mean
000/00
000/05
000/10
000/15
000/20
000/25
015/00
015/05
015/10
....
180/25
因此,结果表“ PolarForce ”应该具有所有情况的最大Left Fx均值,其中第一个单元格中的000标题和00速度。由于这是在访问VBA中编写的,因此不必明确写入标题/速度列。
当前代码
Sub polar()
Dim db As DAO.Database
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim rs3 As DAO.Recordset
Dim fld1 As DAO.Field
Dim fld2 As DAO.Field
Dim newvalue As Double
Dim maxvalue(10) As Double
Dim minvalue As Double
Dim newfield As String
Dim heading As Variant
Dim h As Long
Dim speed As Variant
Dim s As Long
Dim sqlStatement As String
Dim forceFields As Variant
Dim frc As Long
heading = Array("000", "015", "030", "045", "060", "075", "090", "105", "120", "135", "150", "165", "180")
speed = Array("00", "05", "10", "15", "20", "20", "25")
forceFields = Array("Left Fx mean", "Right Fx mean", "Third Fx mean", "Left Fy mean", "Right Fy mean", "Third Fy mean", "Left Fz mean", "Right Fz mean", "Third Fz mean", "MP Fz mean", "MP Fr mean")
Set db = CurrentDb
sqlStatement = "SELECT * FROM PolarForce;"
Set rs1 = db.OpenRecordset(sqlStatement)
sqlStatement = "SELECT * FROM Force;"
Set rs2 = db.OpenRecordset(sqlStatement)
For h = 0 To 12
For s = 0 To 6
For frc = 0 To 10
maxvalue(frc) = 0
For Each fld2 In rs2.Fields
If fld2 = forceFields(frc) Then
rs2.MoveFirst
While Not rs2.EOF
If heading(h) = Mid(newcase, 9, 3) And speed(s) = Mid(newcase, 12, 2) Then
If rs2(forceFields(frc)) > maxvalue(frc) Then
maxvalue(frc) = rs2(forceFields(frc))
End If
End If
rs2.MoveNext
Wend
End If
Next fld2
Next frc
rs1.AddNew
For frc = 0 To 10
rs1(forceFields(frc)).Value = maxvalue(frc)
Next frc
rs1.Update
Next s
Next h
Set rs1 = Nothing
Set rs2 = Nothing
Set db = Nothing
End Sub
修改
我设法正确地输出格式,但是,代码返回maxvalue数组的原始设置值0。我无法使用最新的最大值来更新数组。