希望懂VB和SQL数据库的高手指点我的问题。

yjy7604 2003-10-20 10:32:38
我用VB开发,用SQL作为后台数据库。在窗体加载时,定义了ADODB的Connection和Recordset对象,把生成的数据添加到表RealParameter(定时器事件3),再把 RealParameter表中数据转到表HistoryParameter(定时器事件4)。在窗体下载时,删除表RealParameter中记录。在该程序中打开数据显示界面,用ADO连接表HistoryParameter,显示界面中设计了导航按钮,记录头,记录尾,上一记录,下一记录,设计了触发器,在添加数据到HistoryParameter表中时,限制记录数为50。问题就在这里,数据显示出错,SQL的BOF或EOF出错,记录已被删除。我个人估计,表HistoryParameter中记录不断被删除(因为要保持不超过50 个记录),另一方面,我又在读取整个表。不知问题如何解决?盼望有高手指点!多谢!
Private Sub Timer3_Timer() '添加实时记录到RealParameter表中,
Timer3.Enabled = False
Call born2 '调用随机生成的数据b2,调用函数BCE转换为十进制
RealParameter.AddNew
With RealParameter
RealParameter.Fields(1) = BCE(Mid(b2, 1, 4))
RealParameter.Fields(2) = BCE(Mid(b2, 5, 4))
RealParameter.Fields(3) = Time
RealParameter.Fields(4) = Date
End With
RealParameter.Update
Call display2 ’调用一个显示子程序
Timer3.Enabled = True
End Sub
Private Sub Timer4_Timer() '从实时数据库中延时转到临时历史数据库中
Dim i As Integer
If RealParameter.RecordCount > 0 Then
RealParameter.MoveFirst
Else
MsgBox "DataBase is Error!"
End If
Do While Not RealParameter.EOF
HistoryParameter.AddNew
With HistoryParameter
For i = 1 To 4
HistoryParameter.Fields(i) = RealParameter.Fields(i)
Next i
End With
HistoryParameter.Update
RealParameter.MoveNext
Loop
End Sub
触发器
CREATE TRIGGER HisP ON [dbo].[HistoryParameter]
FOR INSERT
AS
DELETE FROM HistoryParameter
where id not in
(select top 50 id from historyparameter order by id desc)
...全文
121 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjy7604 2003-10-28
  • 打赏
  • 举报
回复
我是在窗口下载,程序结束时才删除RealParameter表中数据,问题在于我在HistoryParameter表触发器中设置了限制记录数为50,程序一方面实时从RealParameter表中复制(INSERT)数据到HistoryParameter表,触发了删除记录的触发器,另一方面我又要实时读取HistoryParameter表,结果就出现了问题。弹出错误:BOF或EOF中有一个为真,或者当前记录已被删除,操作需要一个当前记录。
我的目的是程序运行后,实时数据产生后加入到实时表中,同时历史表中能查询上一次的历史数据,上一次的历史数据是程序结束时,删除实时表中记录,把实时表中记录最后50条记录从实时表中传给历史表,以供下一次查询,历史表中记录限定为50条。 有人能给我一点思路吗?
银狐被占用 2003-10-25
  • 打赏
  • 举报
回复
因为你的RealParameter表中数据在窗口加载时就被删除了。

所以在定时器3中RealParameter表已经无数据。

这样就会出错了!

你应该一边往HistoryParameter表中插数据。一边删除!

你试试!
yjy7604 2003-10-25
  • 打赏
  • 举报
回复
程序加载运行后,数据就自动加到HistoryParameter表中。
sdhdy 2003-10-22
  • 打赏
  • 举报
回复
运行前,HistoryParameter里有数据吗?
yjy7604 2003-10-22
  • 打赏
  • 举报
回复
UP,我已经试过,当运行程序时,会弹出错误:BOF或EOF中有一个为真,或者当前记录已被删除,操作需要一个当前记录。如何办?
aierong 2003-10-20
  • 打赏
  • 举报
回复
sdhdy 2003-10-20
  • 打赏
  • 举报
回复
--HistoryParameter中的数据限制记录数为50,但也是不断更新的,对吧
CREATE TRIGGER HisP ON [dbo].[HistoryParameter]
FOR INSERT
AS
if (select count(*) from HistoryParameter)>50
DELETE FROM HistoryParameter where id not in (select top 50 id from historyparameter order by id desc)

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧