Office中国论坛/Access中国论坛

标题: 各位大侠来帮我解决下添加记录的问题,谢谢了 [打印本页]

作者: 风清九剑扬    时间: 2010-2-8 15:30
标题: 各位大侠来帮我解决下添加记录的问题,谢谢了
有一个窗体,窗体上有一个按钮,该按钮的代码如下,是用来向表中添加记录的,问题在于,每次打开这个窗体,它都好像在内存中生成一条空记录似的(这是本人猜想,不知道对不对),然后关闭此窗体时,这条记录就会保存在表中,形成一条空记录,即关闭窗体时保存了空记录。我找了很久都没找出问题出在哪里,请各位大侠指教,感激不尽,顺祝新年快乐,万事如意!
Private Sub 签到_Click()
On Error GoTo err_签到_Click
    Dim STR As String
    Dim rs As New ADODB.Recordset
    STR = "select * from 签到总记录"
    rs.Open STR, CurrentProject.Connection, adOpenDynamic, adLockOptimistic
    If Me![姓名] <> ""  And Me![联系电话] <> "" Then
      With rs
          .AddNew
          ![姓名] = Me![姓名]
          ![联系电话] = Me![联系电话]
          ![签到时间] = Now()
          .Update
      End With
      MsgBox "签到成功,预祝你工作愉快", vbOKOnly, "签到成功"
      Me![姓名] = Null
      Me![联系电话] = Null
      Me.姓名.SetFocus
      DoCmd.OpenForm "当天记录 窗体"
      Forms![当天记录 窗体].Requery
    Else
      MsgBox "你所填的信息不完整,请补充,谢谢你的配合", vbOKOnly, "警告"
      Me![姓名].SetFocus
    End If
    rs.Close
    Set rs = Nothing
Exit_签到_Click:
    Exit Sub
err_签到_Click:
    MsgBox Err.Description
    Resume Exit_签到_Click
End Sub
作者: 风清九剑扬    时间: 2010-2-9 15:32
终于找到问题所在了,原来是在属性表中把数据的“数据输入”属性设为“是”,就会出现写入空记录这个问题。不明白其中的原理,有知道的人麻烦指教一下。
我听说过数据输入设为“是”的话有助于性能的优化,请问有没有解决这个问题的方法,即是把性能设为是而又不写入空记录的方法,谢谢!
作者: aslxt    时间: 2010-2-9 18:03
猜想:你的表可能没有主键、没有必填字段。
作者: 风清九剑扬    时间: 2010-2-10 00:26
3# aslxt
完全正确!请教一下其中的原理,谢谢。另外,主键,必填字段是不是最好要有?用处?
作者: aslxt    时间: 2010-2-10 08:33
本帖最后由 aslxt 于 2010-2-10 08:44 编辑

比如说
把签到时间设为主键试一试,看看怎么样
建议发个实例库看看,如何重现这个问题
作者: 风清九剑扬    时间: 2010-2-10 11:26
5# aslxt
因为签到时间有许多重复值,所以无法设为主键。总之,谢谢你的指教!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3