表单无手动输入时如何保存记录?解决关联查询缺失记录问题
解决方法
1. 自动生成关联空记录
在第一个表单的AfterUpdate事件里加VBA代码,只要第一个表单的记录保存,就自动给第二个表插入一条仅带同步主键的空记录,不用手动操作第二个表单:
Private Sub Form_AfterUpdate() ' 检查第二个表是否已有对应主键的记录 Dim rs As Recordset Set rs = CurrentDb.OpenRecordset("SELECT * FROM 第二个表 WHERE 关联主键字段 = " & Me.主键字段.Value) If rs.EOF Then ' 无对应记录则插入,主键同步第一个表单的值 CurrentDb.Execute "INSERT INTO 第二个表 (关联主键字段) VALUES (" & Me.主键字段.Value & ")" End If rs.Close Set rs = Nothing End Sub
2. 用左连接让查询显示完整结果
把你的查询改成左连接,以第一个表为基础关联第二个表,这样哪怕第二个表是空记录,第一个表的内容也会完整显示:
SELECT 第一个表.*, 第二个表.* FROM 第一个表 LEFT JOIN 第二个表 ON 第一个表.主键字段 = 第二个表.关联主键字段;
3. 优化第二个表单的自动加载逻辑
如果需要打开第二个表单时直接定位到对应主键的空记录,在第二个表单的Open事件加这段代码:
Private Sub Form_Open(Cancel As Integer) ' 获取第一个表单的主键值 Dim mainID As Long mainID = Forms!第一个表单名称!主键字段.Value Dim rs As Recordset Set rs = Me.RecordsetClone rs.FindFirst "关联主键字段 = " & mainID If rs.EOF Then ' 无记录则新增并保存空记录 Me.Recordset.AddNew Me.关联主键字段.Value = mainID Me.Dirty = False Else ' 已有记录则定位过去 Me.Bookmark = rs.Bookmark End If rs.Close Set rs = Nothing End Sub
内容的提问来源于stack exchange,提问作者paul
相关产品推荐
相关产品推荐

