單片機與PC串行通信,VB上位機界面,VB運行一段時間后就提示實時錯誤28 堆疊空間溢位,是什么原因。
提示在紅色字一行出錯。
Dim rsJin As New ADODB.Recordset
If rsJin.State Then rsJin.Close
rsJin.Open "select top 1 * from 資料保存", dbconn, adOpenKeyset, adLockPessimistic
rsJin.AddNew
rsJin.Fields("日期") = Date
rsJin.Fields("時間") = Time
rsJin.Fields("傳感器1") = filedata3(num)
rsJin.Fields("傳感器4") = filedata6(num)
rsJin.Fields("傳感器2") = filedata5(num)
rsJin.Fields("傳感器3") = filedata4(num)
rsJin.Fields("alpha") = filedata1(num)
rsJin.Fields("beta") = filedata2(num)
rsJin.Update
Dim rs1 As New ADODB.Recordset
If rs1.State Then rs1.Close ''監視距離現在最近的60條記錄,并把狀態顯示在圖表中,如果進資料庫的間隔是1秒的話,說明就是最近60秒內的資料
rs1.Open "select top 30 * from 資料保存 order by 時間 desc", dbconn, adOpenKeyset, adLockPessimistic
num = num + 1
uj5u.com熱心網友回復:
你的代碼有沒有構成無限遞回,或者遞回呼叫太深。uj5u.com熱心網友回復:
我沒有用遞回啊,遞回不就是自己呼叫自己嗎uj5u.com熱心網友回復:
看你的代碼也不全,但是注意到一個細節.rsJin 是當場定義的,然后添加一個記錄. 也沒有看到關閉的代碼
然而你這記錄貌似是一直在添加的.
如果有成千上萬新記錄要添加, 豈非也要定義和打開這么多次? 效率底下
其次, 既然rsJin 是當場定義的If rsJin.State Then rsJin.Close這一句就是脫褲子放屁.
建議你把rsJin定義成全域的, 程式開始的時候就打開, 然后每次往里添加記錄即可, 程式結束時關閉
這就好像你要往抽屜里放好多東西, 根本不必每次都拉開抽屜,然后放一件東西,再關上抽屜, 然后再打開抽屜,再放一樣...... 這樣看著就很累.
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/130481.html
