这代码实现你要的功能,请参考
DataEntry 属性不决定是否可以添加记录,只决定是否显示已有的记录
Private Sub Form_Load()
On Error GoTo Err_Form_Load
Dim rst As Object
Dim fld As Object
If Not Me.DataEntry And Not IsNull(Me.OpenArgs) Then '
Set rst = CurrentDb.OpenRecordset("SELECT * FROM tbl物资信息 WHERE ID=" & Nz(Me.OpenArgs, 0) & "", , 4)
If Not rst.EOF Then
On Error Resume Next
For Each fld In rst.Fields
Me(fld.Name) = fld
Next
End If
rst.Close
Else
'Me.料号 = AutoNumStr("tbl物资信息", "料号", 3, "L", "yymm-")
Me.分类 = Sel
Me.录入时间 = Date
End If
Exit_Form_Load:
Exit Sub
Err_Form_Load:
ErrMsgBox Me.Name, "Form_Load"
Resume Exit_Form_Load
End Sub
Private Sub cmdSave_Click()
On Error GoTo Err_cmdSave_Click
Dim rst As Object
Dim fld As Object
Set rst = CreateObject("ADODB.Recordset")
If IsNull(Me.OpenArgs) Then
rst.Source = "SELECT * FROM tbl物资信息"
Else
rst.Source = "SELECT * FROM tbl物资信息 WHERE ID=" & Me.OpenArgs & ""
End If
rst.ActiveConnection = CurrentProject.Connection
rst.CursorType = 1
rst.LockType = 3
rst.Open
If IsNull(Me.OpenArgs) Then rst.AddNew
'rst.AddNew
For Each fld In rst.Fields
If fld.Name <> "ID" Then fld.Value = Me(fld.Name).Value
fld.Value = Me(fld.Name).Value
Next
rst.Update
rst.Close
MsgBox "数据已保存。", vbInformation, "提示"
If Not Me.DataEntry Then
DoCmd.Close acForm, Me.Name
End If
Exit_cmdSave_Click:
Exit Sub
Err_cmdSave_Click:
If Err = 2465 Then
Resume Next
Else
ErrMsgBox Me.Name, "cmdSave_Click"
Resume Exit_cmdSave_Click
End If
End Sub