这是我的一个类模块,让它每隔一秒执行一次,但是执行一段时间之后,报错:溢出堆栈空间。大侠们给点建议好吗?我怀疑是这个类没有写好
Option ExplicitDim ConnectionString As String
Dim ServerName As String
Dim DatabaseName As String
Dim TableName As String
Dim sql As String
Dim conn As New ADODB.Connection
Dim rs As New ADODB.RecordsetPublic Sub DataSave()
    sql = "select * from " & TableName & " order by id asc"
    conn.ConnectionString = ConnectionString
    conn.Open
    rs.CursorLocation = adUseClient
    rs.Open sql, conn, adOpenKeyset, adLockOptimistic
    rs.AddNew
    
    ''''''''''''''''''''''''''''''''''''''
    '给数据库各字段赋值
    rs.Fields.Item("realtime").Value = Now
    rs.Fields.Item("tp_Wt00101").Value = RealData(1)
    rs.Fields.Item("tp_Wt00102").Value = RealData(2)
    rs.Fields.Item("tp_Wt00103").Value = RealData(3)
    rs.Fields.Item("tp_Wt00104").Value = RealData(4)
    rs.Fields.Item("sv_Wt00101").Value = RealData(5)
    rs.Fields.Item("sv_Wt00102").Value = RealData(6)
    rs.Fields.Item("tp_St00101").Value = RealData(7)
    rs.Fields.Item("tp_St00102").Value = RealData(8)
    rs.Fields.Item("tp_St00103").Value = RealData(9)
    rs.Fields.Item("tp_St00104").Value = RealData(10)
    rs.Fields.Item("tp_St00105").Value = RealData(11)
    rs.Fields.Item("tp_St00106").Value = RealData(12)
    rs.Fields.Item("pr_Neg001").Value = RealData(13)
    rs.Fields.Item("pr_Deo001").Value = RealData(14)
    rs.Fields.Item("pr_Ma001").Value = RealData(15)
    rs.Fields.Item("tp_Ma001").Value = RealData(16)
    rs.Fields.Item("val_Vac001").Value = RealData(17)
    rs.Fields.Item("val_Vlv001").Value = RealData(18)
    rs.Fields.Item("sp_Ma001").Value = RealData(19)
    rs.Fields.Item("cm_Ma001").Value = RealData(20)
    rs.Fields.Item("val_CurA001").Value = RealData(21)
    rs.Fields.Item("val_CurB001").Value = RealData(22)
    rs.Fields.Item("val_CurC001").Value = RealData(23)
    rs.Fields.Item("val_Pow001").Value = RealData(24)
    rs.Fields.Item("val_Wrk001").Value = RealData(4)
    rs.Fields.Item("mag_Prs001").Value = RealData(5)
    rs.Fields.Item("sv_MagPrs001").Value = RealData(6)
    
   
   
   
    ''''''''''''''''''''''''''''''''''''''
    If rs.RecordCount > 300 Then    '保持数据库只有300条最新记录
        rs.MoveFirst
        rs.Delete adAffectCurrent
        rs.Requery
    End If
    
    rs.Update
    rs.Close
    conn.Close
End SubPrivate Sub Class_Initialize()
    ServerName = "DEMOHUNTER"
    DatabaseName = "DemoHunter"
    TableName = "RealData"
    ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;password=123;Initial Catalog=DemoHunter;Data Source=DEMOHUNTER"
    End Sub

解决方案 »

  1.   

    Private Sub Form_load()
        ServerName = "DEMOHUNTER"
        DatabaseName = "DemoHunter"
        TableName = "RealData"
        ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;password=123;Initial Catalog=DemoHunter;Data Source=DEMOHUNTER"
        End Sub
      

  2.   

    把 这段语句调整到 rs.addnew 之前
        If rs.RecordCount >= 300 Then    '保持数据库只有300条最新记录
            rs.MoveFirst
            rs.Delete adAffectCurrent
            rs.Requery
        End If
    如果在 rs.adnew后 没有update 执行以上语句必然出错好像这个错误有点低级!!! (- ^ -)