Dim i As IntegerPrivate Sub Command1_Click()
    Dim sql    
'......
    Set LocRst1 = LocalDB.OpenRecordset("select max(ID) as id from Keyboard")
    ‘生成ID号
    if  LocRst1.RecordCount=0 then
        i=0  
    else
        i = fields(0) + 1
    end if   
    Temp = Label1.Caption
    Set LocRst1 = Nothing    sql = "insert into Keyboard(ID,time1) " & _
        "values(" & i & ",'" & Temp & "')"
    LocalDB.execute sql
    '......
End Sub请问你的fields(0)是什么,前面是不是要加表名,还是什么 ??

解决方案 »

  1.   

    LocRst1.fields(0)
    表示表的第一个字段值
      

  2.   

    你的SQL语句是select max(ID) as id from Keyboard
    那么LocRst1.fields(0)就是max(ID)的值
      

  3.   

    不对啊,我试了啊 
    又碰见个难题
     比如 我的两个字段中存有两个时间数据,
    我想在第三个字段中存他们的差值,如何实现??
    我的日期格式是  Label1.Caption = Format(Now, " hh:mm:ss:") & _
            Format(st.wMilliseconds, "000") & " " & Format(Now, "AM/PM")
    精确到毫秒 ???
      

  4.   

    weiweiplay(虚幻) 说的正确,我补充一下:你也可以这样 i=LocRst1!id+1id 是 "select max(ID) as id from Keyboard"中的字段别名,你也可以改为别的你好象用的是DAO吧,我想读取记录集中的数据道理上应该和ADO一样吧。你最好学用ADO,在论坛上搜索一下就有许多使用方法的代码。我给你的代码只是示例,没有测试,只是想告诉你解决你问题的思路,首先要明白的就是这个思路,懂了才可能写出正确的代码。另外啊,呵呵,最好不要用类似“vbman2003求救”这样的标题,论坛上高手如云,你的这个问题其实很基础的,大家帮忙给你的思路多,效果会更好。呵呵,不过真的需要和我特别探讨,可以给我发消息。
      

  5.   

    可以用DATEDIFF计算时间差,但是不支持你的这种格式,你必须分步计算,就是先计算两个hh:mm:ss这部分的时间差,精确到秒,然后换算成毫秒。再计算毫秒部分,将这两个部分加起来就是你要的结果。
      

  6.   

    我是这样的,也可以了,谢谢大家 
    LocRst1.MoveLast
            i = LocRst1.Fields(0) + 1
    也实现了