点击下载此附件
按你的设想,修改了,请查看示例
一、不用“修改”按钮,直接在子窗体中,用鼠标双击,需要修改的记录,就能传递数据到"frmEdit"中,并打开"frmEdit"窗体
在子窗体中,鼠标双击代码:
Private Sub fields_1_DblClick(Cancel As Integer)
DoCmd.OpenForm "frmEdit"
Forms![frmEdit]![id] = Me.id
'Forms![frmEdit]![id].Locked = True
Forms![frmEdit]![fields_1] = Me.fields_1
Forms![frmEdit]![fields_2] = Me.fields_2
End Sub
Private Sub fields_2_DblClick(Cancel As Integer)
DoCmd.OpenForm "frmEdit"
Forms![frmEdit]![id] = Me.id
'Forms![frmEdit]![id].Locked = True
Forms![frmEdit]![fields_1] = Me.fields_1
Forms![frmEdit]![fields_2] = Me.fields_2
End Sub
Private Sub id_DblClick(Cancel As Integer)
DoCmd.OpenForm "frmEdit"
Forms![frmEdit]![id] = Me.id
'Forms![frmEdit]![id].Locked = True
Forms![frmEdit]![fields_1] = Me.fields_1
Forms![frmEdit]![fields_2] = Me.fields_2
End Sub
二、id字段不能修改,因为它是自动编号的
按"确定",会将修改后的数据保存到期tbl表中,并闭窗体
代码如下:
Private Sub cmdCancel_Click()
DoCmd.Close
End Sub
Private Sub cmdOK_Click()
On Error GoTo Err_cmdOK_Click
Dim i As Integer
Dim str As String
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
str = "select * from tbl"
rs.Open str, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rs.MoveFirst
For i = 0 To rs.RecordCount - 1
If rs!id = Me.id Then
rs![fields_1] = Me.fields_1
rs![fields_2] = Me.fields_2
rs.Update
End If
rs.MoveNext
Next
DoCmd.Close
rs.Close
Set rs = Nothing
Exit_cmdOK_Click:
Exit Sub
Err_cmdOK_Click:
MsgBox Err.Description
Resume Exit_cmdOK_Click
End Sub