1. 不能输入数据是因为代码中的条件语句使用有错
   添加记录不受表中记录数量的影响,因此要去掉
2. datagrid与数据源的连接是在添加一条记录之后,在数据源未刷新前,数据不能显示出来,而第二次添加时datagrid已经与数据源连接,它会自动刷新,所以可以显示,因此,可按如下处理:'将此语句放在前面
Set  DataGrid1.DataSource  =  rs1
rst1.requeryrs1.AddNew
rs1.Fields("aa")  =  12
rs1.Fields("bb")  =  34
rs1.Fields("cc")  =  56
rs1.Fields("dd")  =  78
rs1.Update
            

解决方案 »

  1.   

    实际上你连接的建立、记录集的打开、DataGrid与记录集的连接都不要放在Command的Click中,可在窗体加载时就做这些工作,不然每次添加记录都做这些工作,占用资源,太浪费
      

  2.   

    谢谢飞燕同学!不过,我第二个问题的意思是这样的.我并没有编程对RECORDSET操作,只是将DATAGRID的ALLOWUPDATE,ALLOWDELETE,ALLOWARROWS,ALLOWADDNEW设为TRUE,可是我在
    DATAGRID中最后一行输入数据后,按COMMAND1一次,数据没变化;按COMMAND1两次,添加的数据就在了.语句是这样的:
    Private Sub Command1_Click()
       
       Dim rs1 As ADODB.Recordset
       Call connectdate
       str1 = "select * from MMb2 "
       Set rs1 = New ADODB.Recordset
       rs1.ActiveConnection = Conndate
       rs1.CursorLocation = adUseClient
       rs1.CursorType = adOpenKeyset
       rs1.LockType = adLockOptimistic
       rs1.Supports (Update)
       rs1.Open str1
       Set DataGrid1.DataSource = rs1 End Sub
      

  3.   

    谢谢飞燕同学!不过,我第二个问题的意思是这样的.我并没有编程对RECORDSET操作,只是将DATAGRID的ALLOWUPDATE,ALLOWDELETE,ALLOWARROWS,ALLOWADDNEW设为TRUE,可是我在
    DATAGRID中最后一行输入数据后,按COMMAND1一次,数据没变化;按COMMAND1两次,添加的数据就在了.语句是这样的:
    Private Sub Command1_Click()
       
       Dim rs1 As ADODB.Recordset
       Call connectdate
       str1 = "select * from MMb2 "
       Set rs1 = New ADODB.Recordset
       rs1.ActiveConnection = Conndate
       rs1.CursorLocation = adUseClient
       rs1.CursorType = adOpenKeyset
       rs1.LockType = adLockOptimistic
       rs1.Supports (Update)
       rs1.Open str1
       Set DataGrid1.DataSource = rs1 End Sub
      

  4.   

    Set  DataGrid1.DataSource  =  rs1  后
    再DataGrid1.refresh一次。