問大家個問題:新增記錄後,隨便點一其它記錄出現"update or cacelupdate without addnew or edit",怎么解決?

时间:2021-12-19 16:04:12
我的代碼如下:
Option Compare Database
Private rs As ADODB.Recordset

Private p_s_temp As String

'-----

Private Sub Command20_Click()
  DoCmd.close
End Sub


Private Sub Form_Load()
    Set Me.Material_ByWeight_Child.Form.Recordset = Me.Recordset
  
End Sub

Private Sub save_Click()

  If IsNull(Assembly_code = "") Then
     MsgBox "The Assembly_code  can't be null!", vbCritical + vbOKOnly, "try again"
     Exit Sub
  End If


    p_s_temp = ""
    p_s_temp = p_s_temp + "SELECT * FROM t_Material_byWeight WHERE 1=1 "
    p_s_temp = p_s_temp + " AND Assembly_code ='" & Assembly_code & "'  "
      p_s_temp = p_s_temp + " AND material ='" & Material & "'  "
      p_s_temp = p_s_temp + " AND material_no ='" & Material_No & "'  "
       p_s_temp = p_s_temp + " AND unit ='" & unit & "'  "
       p_s_temp = p_s_temp + " AND unit_cost =" & unit_Cost & "  "
    
    g_func_open_rs p_s_temp, rs
    If Not rs.EOF Then
      MsgBox " have exist  " + Assembly_code, vbOKOnly, " Information "
      
    Else
      rs.AddNew
          rs("Assembly_code") = Assembly_code
          
          If Len(Material) > 0 Then
        rs("material") = Material
         Else
        rs("material") = Null
        End If
        If Len(Material_No) > 0 Then
        rs("material_no") = Material_No
         Else
        rs("material_no") = Null
        End If
        
        If Len(unit) > 0 Then
        rs("unit") = unit
         Else
        rs("unit") = Null
        End If
        
        If Len(unit_Cost) > 0 Then
        rs("unit_cost") = unit_Cost
         Else
        rs("unit_cost") = 0
        End If
         
    
          rs.MoveLast
      
      rs.Update
      
     
  rs.close
    
   
          Assembly_code = ""
          Material = ""
          Material_No = ""
          unit = ""
          unit_Cost = ""
          MsgBox " add successfully !", vbOKOnly, " add successfully "
         
         Form_Material_ByWeight_Child.Requery
   End If
End Sub

9 个解决方案

#1


看不懂

#2


有中文版提示没有?

#3


没有设置为EDIT状态
检查查询是否可以更新,设置Recordset为可更新状态
fox example:
Set FF = CurrentDb.OpenRecordset("select * from treea where isnull(ve)")
FF.Edit

#4


rs.edit

#5


 謝謝各位,解決了,Form_Material_ByWeight.Requery,主界面動態更新下就行了

#6


重新调入数据,刷新记录集

#7


最常用的方式:

窗体名.Requery



重新给窗体赋数据源。

#8


Requery 方法通过重新查询窗体或控件的数据源更新基于指定窗体的数据,或激活窗体上的控件。

此方法可以用于确保窗体或控件显示最近的数据。

Requery 方法执行下列操作: 

重新运行根据窗体或控件所创建的查询。


显示任何基于窗体或控件的表中的新的或已更改的记录,或删除基于该表的已删除的记录。


更新显示记录,这些记录根据窗体 Filter 属性已经做过修改。

#9


该回复于2008-05-04 09:56:46被版主删除

#1


看不懂

#2


有中文版提示没有?

#3


没有设置为EDIT状态
检查查询是否可以更新,设置Recordset为可更新状态
fox example:
Set FF = CurrentDb.OpenRecordset("select * from treea where isnull(ve)")
FF.Edit

#4


rs.edit

#5


 謝謝各位,解決了,Form_Material_ByWeight.Requery,主界面動態更新下就行了

#6


重新调入数据,刷新记录集

#7


最常用的方式:

窗体名.Requery



重新给窗体赋数据源。

#8


Requery 方法通过重新查询窗体或控件的数据源更新基于指定窗体的数据,或激活窗体上的控件。

此方法可以用于确保窗体或控件显示最近的数据。

Requery 方法执行下列操作: 

重新运行根据窗体或控件所创建的查询。


显示任何基于窗体或控件的表中的新的或已更改的记录,或删除基于该表的已删除的记录。


更新显示记录,这些记录根据窗体 Filter 属性已经做过修改。

#9


该回复于2008-05-04 09:56:46被版主删除