我用DELPHI里面的QUERY组件做数据库访问,我的问题是:  我在数据库里面建了一张数据表test,用来存放空调运行时的数据。表里有六
个字段分别是:“温度、湿度、风速、风向、时间、状态”。   我用了一个TIMER组件每隔1000毫秒(即一秒)触发一次执行事件代码,
事件代码的内容就是,把字段的值插入数据表,这样数据就能不断的插入数
据表。“温度、湿度、风速、风向“的值我用的随即函数产生,’时间‘用NOW
产生。就是”状态“字段我有点不太会,现在的要求是:用当前的温度值与前一条记录
的温度值做比较来确定状态是加热还是降温。怎样把前一条记录的温度值取出来,
这点我不太清楚,具体的SQL语句和代码应该怎么写?我还有个疑问,我用TIMER组件设的时间间隔和实际在数据表中看到的不太一样,我设的是1秒,而在数据表中看到的”时间“字段的间隔是5秒,这是怎么回事啊?

解决方案 »

  1.   

    ADOQuery按时间排序,降序,取第一个
    ADOQuery.Close;
    ADOQuery.SQL.Clear;
    ADOQuery.SQL.Text ='
    Select Top 1 * From test Order by 时间 Desc';
    ADOQuery.Open;
    Timer通过发送WM_Timer消息来实现事件触发。而WM_Timer属于低优先权的窗体消息。来不及处理的WM_Timer消息被系统直接舍弃。我们无法得知错失了多少WM_Timer消息。
      

  2.   

    在事件里添加 Application.ProcessMessages 试试
      

  3.   

    可以看看《Dephi深度历险》关于计时器
      

  4.   

    最好用全局变量
    你也可以把上一次的温度放在一个EDIT或LABEL中,执行时和EDIT中的值进行比较,追加记录后将EDIT内容更新.
      

  5.   

    TO swayi21(微斯人) :
    我改变了时间间隔,数据表里的也改变了。不过数据表里面的和定时器的
    时间间隔总是不一样。