目的:从名为jg.mdb的数据库里面选出相邻“正程值”的差,并且取所有差值中的最大值为结果
代码:
Private Sub 相邻误差() Dim cn As New ADODB.Connection
 Dim rst As New ADODB.Recordset
 Dim m As Integer
 Dim val_zc(), val_xl, val_xl1, val_xl2
  Set rst = New ADODB.Recordset  cn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source= " & App.Path & "\jg.mdb;"  SQL = "select 序号,正程值,回程值 from jg.mdb"
  rst.Source = "jgb"
  rst.Open SQL, cn, adOpenForwardOnly, adLockReadOnly
  If rst.RecordCount > 2 Then
          rst.MoveFirst
          For m = 1 To m < rst.RecordCount + 1 Step 1
          rst.MoveNext
          val_zc(m) = rst.Fields("正程值")
          val_xl1 = CInt(val_zc(m)) - CInt(val_zc(m + 1))
          sign = 0
          rst.MoveNext
          val_xl2 = CInt(val_zc(m + 1)) - CInt(val_zc(m + 2))
          sign = 0
          If val_xl1 > val_xl2 Then
          val_xl = val_xl1
          Else: val_xl = val_xl2
          End If
          rst.MoveNext
          val_xl1 = ""
          val_xl2 = ""
          Next m
         Label26.Caption = val_xl
End IfEnd Sub错误的地方,帮忙修改一下,谢谢了!

解决方案 »

  1.   

    我帮你改了一下试试
    Option ExplicitDim m As Integer
    Dim val_zc()
    Dim val_xl
    Public Sub xx()
     Dim cn As New ADODB.Connection
     Dim rst As New ADODB.Recordset
      Dim i As Integer
      Dim val_xl1, val_xl2
      Set rst = New ADODB.Recordset  cn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source= " & App.Path & "\jg.mdb;"  SQL = "select 序号,正程值,回程值 from jg.mdb"
      rst.Open SQL, cn, adOpenForwardOnly, adLockReadOnly
      If rst.RecordCount > 2 Then
              rst.MoveFirst
              val_xl1 = rst.Fields("正程值")
            Do While Not rst.EOF
               rst.MoveNext
               val_xl2 = rst.Fields("正程值")
               m = m + 1
               ReDim Preserve val_zc(m)
               val_zc(m) = CInt(val_xl2) - CInt(val_xl1)   '求差值
               val_xl1 = val_xl2
            Loop
     End If
       val_xl = val_zc(0)
        For i = 1 To UBound(val_zc)
             If val_xl < val_zc(i) Then val_xl = val_zc(i)  '求最大值
        Next
             Label26.Caption = val_xl
    End IfEnd Sub
    Private Sub Form_Load()
      m = -1
    End Sub
      

  2.   

    最后不要忘记set rst = nothing
     set cn= nothing
      

  3.   

    哦,对了,为什么:val_xl1 = val_xl2?
      

  4.   

    val_xl1 = val_xl2 交换值,等待下一次运算